iText生成pdf文件时,会遇到分页(page X of Y)的需求。
iText分页主要有2个方法:
1. 创建一个document(不含page X of Y信息)放内存中,新建一个PdfReader对象,通过PdfReader对象得到PdfStamper,使用PdfStamper把分页号写入每一页的页眉或页脚。当需要生成pdf的页面较多时,计算页号就有可能发生不准确。
2. 在Page Event(如onEndPage)里增加Page X of 信息,同时增加一个空的模板应用到所有的页面上。当onCloseDocument事件发生时, 设置Y的值到模板上,并应用到每个页面上。
下面重点来聊聊第二种方法。
1. onStartPage() - 当一个新的页面开始时触发 Triggered when a new page is started. Don’t add content in
this event, not even a header or footer . Use this event for initializing vari-
ables or setting parameters that are page specific, such as the transition or
duration parameters.
2. onEndPage()—Triggered just before starting a new page. This is the best place to add a header, a footer, a watermark, and so on.
3. onOpenDocument()—Triggered when a document is opened, just before onStartPage() is called for
iText分页主要有2个方法:
1. 创建一个document(不含page X of Y信息)放内存中,新建一个PdfReader对象,通过PdfReader对象得到PdfStamper,使用PdfStamper把分页号写入每一页的页眉或页脚。当需要生成pdf的页面较多时,计算页号就有可能发生不准确。
2. 在Page Event(如onEndPage)里增加Page X of 信息,同时增加一个空的模板应用到所有的页面上。当onCloseDocument事件发生时, 设置Y的值到模板上,并应用到每个页面上。
下面重点来聊聊第二种方法。
1. onStartPage() - 当一个新的页面开始时触发 Triggered when a new page is started. Don’t add content in
this event, not even a header or footer . Use this event for initializing vari-
ables or setting parameters that are page specific, such as the transition or
duration parameters.
2. onEndPage()—Triggered just before starting a new page. This is the best place to add a header, a footer, a watermark, and so on.
3. onOpenDocument()—Triggered when a document is opened, just before onStartPage() is called for