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); //页码 }
就算这个世道烂成一堆粪坑,那也不是你吃屎的理由