【问题标题】:handle page events in itext of page break在分页符的 itext 中处理页面事件
【发布时间】:2014-12-27 20:44:36
【问题描述】:

我正在使用 itext 生成 pdf,并且想知道当元素超过页面大小时幕后会发生什么。

我正在使用 PdfPageEventHelper 来了解在这种情况下是否添加了新页面。

生成的 pdf 显示一个新页面,但不会触发我的事件函数,例如 onStartPage ,onEndPage。

【问题讨论】:

  • 向我们展示您的代码。周围有很多例子证明onStartPage()onEndPage()被触发了。查看The Best iText Questions on StackOverflow 中的页面事件部分的一些示例。
  • 我又试了一次,发现它可以工作,但仍然对 NEWPAGE 和 NEXTPAGE 之间的区别有疑问

标签: itext


【解决方案1】:

我正在使用PdfPageEventHelper,我没有遇到任何问题。当一个新页面被触发时,onEndPage()方法被调用之前一个新页面被初始化,onStartPage()方法被调用之后新页面被初始化。

您可以像这样在代码中触发新页面:

document.newPage();

或者newPage() 方法可以被隐式触发,例如当您使用document.add() 添加超出页面大小的内容时。

您关于onEndPage()onStartPage()等功能未触发的说法无法核实。相反:我们有很多例子证明不是这样,其中一些捆绑在书The Best iText Questions on StackOverflow.

在 cmets 中,您说您对 NEWPAGENEXTPAGE 之间的区别有疑问。这是一个非常奇怪的问题,因为我不知道你为什么需要这些对象。

Chunk.NEXTPAGE 是一个特殊的Chunk,由 iText 在内部使用。可以通过添加对象来调用newPage()方法。

例如:

document.add(Chunk.NEXTPAGE);

相当于:

document.newPage();

后一种方法是触发新页面的首选方式,NEXTPAGE 对象在内部用于非常特定的用例。

对于Chunk.NEWPAGE,那只是一个String(它的值是"NEWPAGE")。这个String 是用于标识NEXTPAGE 块的属性键。

这属于 iText 的内部厨房。作为 iText 用户,您不必担心。

【讨论】:

    猜你喜欢
    • 2012-05-03
    • 1970-01-01
    • 2018-09-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-08
    • 1970-01-01
    相关资源
    最近更新 更多