2014-12-22 115 views
1

我創建2段的矩形,並加入他們PARAGRAPH3這樣,如何添加段落到利用iText

PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("NextLineTextPDF.pdf")); 
      document.open(); 
      PdfContentByte cb = writer.getDirectContent(); 

      cb.beginText(); 
      BaseFont bf = BaseFont.createFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.NOT_EMBEDDED); 

      Font grey = new Font(bf,12f,0,Color.gray); 
      Chunk blueText = new Chunk(leading1, grey); 
      Font blue = new Font(bf,12f,0,Color.BLUE); 
      Chunk greenText = new Chunk(leading2, blue); 

      Paragraph p1 = new Paragraph(blueText); 
      Paragraph p2 = new Paragraph(greenText); 
      Paragraph p3 = new Paragraph(); 
      p3.add(blueText); 
      p3.add(greenText); 
      document.add(p3); 

      cb.endText(); 

但問題是,如果字符串內1款實在是lenghty,人物被修剪和該字符串也不包裹。

有沒有什麼辦法,這樣我可以將我的Paragraph3放入一個矩形中,來包裹我的字符串,而不需要修剪?

+0

你的代碼在很多層面都是錯誤的! 'cb.beginText()'和'cb.endText()'用於在最低(PDF語法)級別的絕對位置添加文本,但是您可以使用'document.add();'添加文本,最高(iText'Element')級別。就好像你決定把一些隨機代碼放在一起,而沒有閱讀任何文檔...... –

回答

0

您創建了2個段落,並將它們添加到第三段。 請問爲什麼?

雖然你可以這樣做,但它沒有任何意義。您可以創建一個由blueTextgreenText塊組成的Paragraph,或者創建兩個段落,然後將它們按順序添加到頁面中。

你說你想將這些段落添加到矩形中,但是你正在使用document.add(p)。 請問爲什麼?

當您使用document.add();時,您告訴iText根據頁面大小和頁邊距爲您定位文本。

如果您想在絕對位置添加文本,例如在矩形中,您有兩個選項。

您可以通過使用一系列低級操作(如在此問題中完成的操作):Separating redundant code from pdf generator function,但鑑於您的專業水平,我不建議您這樣做。如果我是你,我會看my answer to the question,並使用ColumnText對象:

添加段落到一個矩形做過這樣的:

如果rectangleRectangle對象定義的矩形,其中的座標要添加兩個段落,那麼你就需要這樣的代碼:

ColumnText ct = new ColumnText(writer.getDirectContent()); 
ct.setSimpleColumn(rectangle); 
ct.addElement(p1); 
ct.addElement(p2); 
ct.go(); 

正如你所看到的,也沒有必要爲第三段。但是,您需要小心並確保內容符合矩形。你開始實施之前,請閱讀這些問題和答案:被選定爲本書"The Best iText Questions on StackOverflow"

這些問題。這本書是免費的。還有一個問題和答案解釋瞭如何繪製矩形,如果這真的是您的要求之一。