2014-12-22 118 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"

这些问题。这本书是免费的。还有一个问题和答案解释了如何绘制矩形,如果这真的是您的要求之一。