1

我在 ColdFusion 应用程序中使用 iText 库来创建 PDF,目标是将各种文本添加到特定位置的特定大小的框中。

使用 ColumnText 可以完美完成(跳过细节):

<cfset directContent = writer.getDirectContent()>
<cfset ct = CreateObject("java", "com.lowagie.text.pdf.ColumnText").init(directContent)>
<cfset ct.setSimpleColumn(100, 50, 400, 400, 18, Element.ALIGN_JUSTIFIED)>
<cfset ct.setText( createObject("java", "com.lowagie.text.Phrase").init("#text_var#") ) >
<cfset ct.go()>

问题是:长文本被剪切,正如预期的那样(go()返回ColumnText.NO_MORE_COLUMN)。但在这种情况下,我需要通过在末尾添加例如“...”来表明文本并未完成(添加点或如果需要用“...”替换最后一个或两个符号)。

有没有一种简单的方法可以实现这一目标?例如,在我调用之后go(true)- 我可以看到用于输出文本而没有实际输出的行数。但我需要以某种方式将实际文本放入框中。

4

1 回答 1

2

您正在使用功能强大的 iText 旧版本,我不知道以我命名的软件包是否支持我要回答的内容。

Q1:我想在最后加上……。A1:如果go()返回NO_MORE_COLUMN,则可以得到已经写入的最后一行的最后一个X位置的X位置。请参阅http://api.itextpdf.com/itext/com/itextpdf/text/pdf/ColumnText.html#getLastX%28%29 您可以使用 getYLine 获取 Y 位置。请参阅http://api.itextpdf.com/itext/com/itextpdf/text/pdf/ColumnText.html#getYLine%28%29 您可以使用此 X 和 Y 在适当的位置添加“...”。

Q2:我不希望文字被剪切;我想将文本放入矩形内。A2:这正是本示例中所做的:http: //itextpdf.com/examples/iia.php ?id=163 在方法 addParagraph() 中,以模拟模式添加文本以查看是否合适。如果是这样,则添加的文本是真实的;如果不是,则再次添加文本,但使用较小的字体。

于 2012-09-06T14:38:43.453 回答