gpt4 book ai didi

c# - iTextSharp - 在添加到列之前计算短语/段落高度

转载 作者:太空狗 更新时间:2023-10-30 01:05:28 25 4
gpt4 key购买 nike

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

我可以获得 ColumnText.YLine 值,但只能使用 Go() 方法将它应用到 ColumnText 对象之后。

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

最佳答案

正如我之前发表的评论中所指出的,您的问题的答案是肯定的。 MovieColumns3向您展示如何操作:

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

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

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

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

关于c# - iTextSharp - 在添加到列之前计算短语/段落高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18724346/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com