2017-12-04 4 views
1

Chunk 왼쪽과 오른쪽을 정렬하고 싶습니다. 또한 각 Chunk은 이미지에서 볼 수있는 형식이 다릅니다. 내가하지 아니라 형식으로 우측 Chunkhere the my output 결과를 제공청크의 좌우 정렬 방법

Chunk invoiceid = new Chunk("Invoice ID: ", font9BoldDARK_GRAY); 
Chunk invoiceidvalue = new Chunk("value from database", font10NoramlBlack); 
Chunk inoicdate = new Chunk("Invoice Date: ", font9BoldDARK_GRAY); 
Chunk inoicedatevalue = new Chunk(new SimpleDateFormat("MMMM dd yyyy").format(new Date()), font10NoramlBlack);// get From database 

    Paragraph invoiceParagraph = new Paragraph(); 
    invoiceParagraph.setTabSettings(new TabSettings(325f)); 
    invoiceParagraph.add(invoiceid); 
    invoiceParagraph.add(invoiceidvalue); 

    invoiceParagraph1.add(Chunk.TABBING); 

    invoiceParagraph1.add(inoicdate1); 
    invoiceParagraph1.add(inoicedatevalue1); 
    invoiceParagraph1.setAlignment(Element.ALIGN_JUSTIFIED); 
    pdfdocument.add(invoiceParagraph1); 

:

나는 아래의 코드를 사용해보십시오.

등을 정렬하고 싶습니다. required result 도와 주시겠습니까?

enter image description here

코드는이를 달성하기 :

+0

iText의 이전 버전을 사용하고 있습니까? 아니면 iText 7이 1 년 반 전에 출시 된 것을 모르고 있었습니까? –

+0

iText 5 사용을 주장하는 경우 [장 2] (https://manning-content.s3.amazonaws.com/download/c/5c637ac-79b4)의 탭 및 구분 기호에 대한 섹션을 읽지 않는 이유는 무엇입니까? -4abe-bbed-8c72ef6a0c61/samplechapter2.pdf)에서 iText 5 문서를 다운로드 할 수 있습니까? 결과는 ** 당신이 코드에서 요구하는 것과 정확히 일치합니다 ** ** 325 위치에 탭이 있기를 원합니다. 그것은 당신의 질문을 매우 어색하게 만듭니다. 나에게 이것은 "1 + 1"과 같은 하나를 추가하려하지만, 결과는'2'이고, 결과는'3'이되고 싶다. 그게 이상한 질문이지, 그렇지? –

답변

1

이 작업을 수행하는 올바른 방법은 다음과 같습니다 PDF를 만드는 방법을 발견하는 블록이 튜토리얼 건물의 iText를 7 읽기 chapter 3을 사용하는 것입니다 놀랍게도 간단하다 :

public void createPdf(String dest) throws IOException { 
    // create a low-level document 
    PdfDocument pdf = new PdfDocument(new PdfWriter(dest)); 
    // create a high-level document 
    Document document = new Document(pdf); 
    // create a TabStop array 
    List<TabStop> tabstops = new ArrayList<TabStop>(); 
    // don't forget to make a tab stop that aligns to the right 
    tabstops.add(new TabStop(325, TabAlignment.RIGHT)); 
    // add paragraphs with Tab objects to the high-level document 
    document.add(new Paragraph().addTabStops(tabstops) 
      .add("Text to the left").add(new Tab()).add("Text to the right")); 
    document.add(new Paragraph().addTabStops(tabstops) 
      .add("ABCD").add(new Tab()).add("EFGH")); 
    document.add(new Paragraph().addTabStops(tabstops) 
      .add("").add(new Tab()).add("56789")); 
    document.add(new Paragraph().addTabStops(tabstops) 
      .add("iText 5 is old").add(new Tab()).add("iText 7 is new")); 
    // close the document 
    document.close(); 
} 

당신은 내가 그 코드을 인식 나를 당신이 옳은 것을 알려하지 않는 말을하기 전에 : iText를 완전히 다시 작성했다. 이 코드는 작성하기가 더욱 직관적이며 읽기 쉽습니다.

업데이트 : 무료 사용자 (유료 고객 만 해당)에게 더 이상 지원되지 않는 이전 iText 5 버전을 사용하고 있습니다. 당신은

Paragraph p = new Paragraph(); 
p.add("Text to the left"); 
p.add(glue); 
p.add("Text to the right"); 

이 방법을 : 당신은 다음과 같은 Paragraph이 접착제를 사용

Chunk glue = new Chunk(new VerticalPositionMark()) 

: - 2009 년 책 "액션 iText를 두 번째 판"에서 설명하고있는 바와 같이,이 같은 glue을 생성 실제로 iText 5에서 탭을 사용하지 않아도됩니다.

+0

당신의 대답에 대한 고맙습니다. 나는 5.5.12 itext verstion ..를 사용하고 있습니다. iText 5도 무료라고하지 않습니다. 제가 AGPL에 관해 읽었습니다. –

+0

은 7 번 무료입니다. 또는 가능한 iText 2.1.7 (자바) 그것은 MPL/LGPL –

+0

아래에 릴리스되었습니다 또한 내 문제를 해결하기 위해 사용하는 대신'청크 접착제 = 새로운 청크 (새로운 VerticalPositionMark())'탭을 사용하는 대신 –