2017-12-04 20 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); 

iは以下のコードを試してみてください。

しかし、私は同じように整列したい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)を参照してください。あなたが表示した結果は、あなたのコードで尋ねたことを正確に実行しています!**あなたは '325'の位置にタブを置いて、それがテキストの開始位置です。それはあなたの質問を非常に厄介なものにします。私には、「1 + 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

あなたの答えのためのthanx ..私は5.5.12 itext verstion ..を使用してiText 5は無料でもないと私はAGPLについて読む –

+0

isext 7無料ですか?またはiText 2.1.7(java)を使用する必要がありますMPL/LGPL –

+0

の下でもリリースされました。私は問題をTABを使用する代わりに 'Chunk glue = new Chunk(new VerticalPositionMark())'を使用して解決しました –

関連する問題