itextpdf5设置页眉页脚、生成页码

时间:2023-03-10 02:31:46
itextpdf5设置页眉页脚、生成页码

itextpdf生成页眉页脚,可以通过继承PdfPageEventHelper,重新里面的相关事件来进行。

常用的几个:

onOpenDocument,文档打开时触发

onCloseDocument,文档关闭时触发

onStartPage,页面开始写入前触发

onEndPage,页面写入完成后触发

设置页眉页脚时可以使用OnEndPage,配合ColumnText类,在页面特定位置输出。

        /**
* 在一个页面写入完成后触发
*/
@Override
public void onEndPage(PdfWriter writer, Document doc) {
Font headFont = FontFactory.getFont(FONT, BaseFont.IDENTITY_H, BaseFont.EMBEDDED, 9,Font.NORMAL,BaseColor.BLACK);
//添加标题文本
StringBuffer underline = new StringBuffer();
for(int i = 0;i<116;i++) {
underline.append("_");
}
Phrase contentPh = new Phrase("这是是页眉",headFont);
Phrase underlinePh = new Phrase(underline.toString(),headFont);
Phrase pageNumberPh = new Phrase(String.valueOf(doc.getPageNumber()),headFont);
float center = doc.getPageSize().getRight()/2;//页面的水平中点
float top = doc.getPageSize().getTop()-36;
float bottom = doc.getPageSize().getBottom()+36; /** 参数xy是指文本显示的页面上的哪个店。alignment指文本在坐标点的对齐方式 */
ColumnText.showTextAligned(writer.getDirectContent(),Element.ALIGN_CENTER,contentPh,center,top,0); //页眉
ColumnText.showTextAligned(writer.getDirectContent(),Element.ALIGN_CENTER,underlinePh,center,top-3,0); //页眉
ColumnText.showTextAligned(writer.getDirectContent(),Element.ALIGN_CENTER,pageNumberPh,center,bottom,0); //页码
}