如何使用IText将Paragraph添加到矩形中

时间:2014-12-22 16:55:42

标签: java pdf itextsharp

我创建了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,包裹我的字符串,而不是修剪?

1 个答案:

答案 0 :(得分:0)

您创建了2个段落,并将它们添加到第三个段落。 我可以问为什么?

虽然你可以做到这一点,但它没有任何意义。要么创建一个由ParagraphblueText块组成的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"选择了这些问题。这本书是免费提供的。还有一个问题和答案解释了如何绘制矩形,如果这真的是你的要求之一。