【问题标题】:iTextSharp - calculating phrase/paragraph height before adding to columniTextSharp - 在添加到列之前计算短语/段落高度
【发布时间】:2013-09-14 11:36:12
【问题描述】:

我正在创建包含不同数量的项目和注释的 PDF 工作订单。我正在使用 ColumnText.SetSimpleColumn(phrase, x, y, x2, y2, height, alignment) 将文本添加到单个列。

我可以获得 ColumnText.YLine 值,但只有在 使用 Go() 方法将其应用于 ColumnText 对象之后。

我想要做的是预先计算最终的 YLine 值,或者如果 YLine 超过 mjy 底部阈值,则撤消添加短语,以便我可以手动添加另一个页面并继续。这可能吗?

【问题讨论】:

标签: c# pdf-generation itextsharp


【解决方案1】:

正如我之前发布的评论所述,您的问题的答案是肯定的。 MovieColumns3 告诉你怎么做:

您需要创建一个ColumnText 对象并在该对象上使用setSimpleColumn() 方法,而不是使用静态ColumnText 方法。您可以在文本模式中使用addText() 方法添加Phrase 对象,或者在复合模式中使用addElement() 方法添加任何类型的Element

通常,您随后会调用 go() 方法来渲染这些元素,但这就是您问题的重点:在渲染任何元素之前,您想知道元素是否适合。可以在模拟模式下使用go() 方法:go(true)。这将假装添加内容,但不会呈现任何内容。您可以使用getYLine()方法获取Y位置,并使用hasMoreText()方法检查是否所有内容都添加了。

了解go() 方法(部分)使用ColumnText 对象的内容很重要。一旦您决定在当前页面或下一页添加真实的内容(即:不在模拟模式下),您需要丢弃 ColumnText 对象中的所有剩余内容并重新添加。

你会在我的book中找到更详细的解释,如果你不认识示例中的方法,因为它是用Java编写的,请与示例中的C# port进行比较。

【讨论】:

    猜你喜欢
    • 2015-01-15
    • 2015-04-04
    • 2019-08-29
    • 2012-02-24
    • 2023-02-04
    • 2011-07-01
    • 1970-01-01
    • 2011-12-07
    • 1970-01-01
    相关资源
    最近更新 更多