我正在使用itext生成pdf,并想知道元素超出页面大小时幕后发生的事情。
我正在使用PdfPageEventHelper来了解在这种情况下是否添加了新页面。
结果pdf显示了一个新页面,但没有触发我的onStartPage,onEndPage等事件的函数。
答案 0 :(得分:0)
我正在使用PdfPageEventHelper
,我没有遇到任何问题。触发新页面时,在初始化新页面之前,onEndPage()
方法称为,新页面后,onStartPage()
方法称为页面已初始化。
您可以在代码中触发新页面,如下所示:
document.newPage();
或者可以隐式触发newPage()
方法,例如当您使用超出页面大小的document.add()
添加内容时。
您无法验证未触发onEndPage()
和onStartPage()
等功能的指控。恰恰相反:我们有很多例子可以证明,其中一些例子已经捆绑在书中The Best iText Questions on StackOverflow.
在评论中,您说您对NEWPAGE
和NEXTPAGE
之间的差异有疑问。这是一个非常奇怪的问题,因为我不知道你为什么需要这些物品。
Chunk.NEXTPAGE
是iText内部使用的特殊Chunk
。它可以用于通过添加对象来调用newPage()
方法。
例如:
document.add(Chunk.NEXTPAGE);
相当于:
document.newPage();
后一种方法是触发新页面的首选方法,NEXTPAGE
对象在非常具体的用例中内部使用。
至于Chunk.NEWPAGE
,那只是String
(它的值是"NEWPAGE"
)。此String
是用于标识NEXTPAGE
块的属性键。
这属于iText的内部厨房。作为iText用户,您不必担心它。