sre*_*mer 4 c# pdf-generation itextsharp
我正在创建具有不同数量的项目和注释的PDF工作订单.我ColumnText.SetSimpleColumn(phrase, x, y, x2, y2, height, alignment)用来将文本添加到单个列.
我可以获取ColumnText.YLine值,但只有在使用该Go()方法将其应用于ColumnText对象之后.
我想要做的是预先计算最终的YLine值,或者如果YLine超过mjy底部阈值则撤消添加短语,这样我就可以手动添加另一个页面并继续.这可能吗?
正如我之前发表的评论所示,你的问题的答案是肯定的.MovieColumns3向您展示了如何做到这一点:
ColumnText您需要创建一个ColumnText对象并setSimpleColumn()在该对象上使用该方法,而不是使用静态方法.您可以在文本模式下Phrase使用该addText()方法添加对象,或者在复合模式下添加Element使用该addElement()方法的任何类型.
通常,你会调用go()方法来渲染这些元素,但这就是你问题的重点:在渲染任何元素之前,你想要知道元素拟合.可以go()在模拟模式下使用该方法:go(true).这将假装添加内容,但不会呈现任何内容.您可以使用该getYLine()方法获取Y位置,并检查是否使用该hasMoreText()方法添加了所有内容.
重要的是要理解该go()方法(部分地)消耗ColumnText对象的内容.一旦您决定添加实际内容(即:不在模拟模式下),无论是在当前页面还是下一页,您都需要丢弃ColumnText对象中的所有剩余内容并重新添加.
您可以在我的书中找到更详细的解释,如果您不认识示例中的方法,因为它是用Java编写的,请与示例的C#端口进行比较.
| 归档时间: |
|
| 查看次数: |
3839 次 |
| 最近记录: |