我创建了2段,并以这种方式将它们添加到第3段,
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();
但问题是,如果section3中的字符串是lenghty,则会修剪字符并且字符串也不会被包裹。
有没有办法,所以我可以把我的Paragraph3封装成一个recctangle,包裹我的字符串,而不是修剪?
答案 0 :(得分:0)
您创建了2个段落,并将它们添加到第三个段落。 我可以问为什么?
虽然你可以做到这一点,但它没有任何意义。要么创建一个由Paragraph
和blueText
块组成的greenText
,要么创建两个段落,然后按顺序将它们添加到页面中。
您说要将这些段落添加到矩形,但您使用的是document.add(p)
。
我可以问为什么?
当您使用document.add();
时,您会告诉iText根据页面大小及其边距为您定位文本。
如果要在绝对位置添加文本,例如在矩形中,则有两个选项。
你可以通过使用一系列低级操作来做到这一点,就像在这个问题中所做的那样:Separating redundant code from pdf generator function,但鉴于你的专业水平,我不建议你这样做。如果我是你,我会查看my answer to the question,然后使用ColumnText
对象:
将段落添加到矩形中的方式如下:
如果rectangle
是一个Rectangle
对象,用于定义要添加两个段落的矩形坐标,则需要以下代码:
ColumnText ct = new ColumnText(writer.getDirectContent());
ct.setSimpleColumn(rectangle);
ct.addElement(p1);
ct.addElement(p2);
ct.go();
如您所见,不需要第三段。但是,您需要小心并确保内容适合矩形。在开始实施之前,请阅读以下问题和答案:
为本书"The Best iText Questions on StackOverflow"选择了这些问题。这本书是免费提供的。还有一个问题和答案解释了如何绘制矩形,如果这真的是你的要求之一。