首页 > 技术文章 > itextpdf5设置页眉页脚、生成页码

whalesea 2019-11-01 14:04 原文

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); //页码
        }
        

 

推荐阅读