Itext笔记之pdf页眉页脚

效果展示:





源码:

public class App 
{
    public static void main( String[] args ) throws Exception {
        Document document = new Document(PageSize.A4,50,50,50,50);
        PdfWriter writer = PdfWriter.getInstance(document,new FileOutputStream("/home/hzq/a.pdf"));
        BaseFont baseFont = BaseFont.createFont("simhei.ttf",BaseFont.IDENTITY_H,BaseFont.EMBEDDED);
        Font font = new Font(baseFont,12);
        Rectangle rect = new Rectangle(36, 54, 559, 788);
        rect.setBorderColor(BaseColor.BLACK);
        writer.setBoxSize("art", rect);

        HeaderFoot headerFoot = new HeaderFoot();
        writer.setPageEvent(headerFoot);

        document.open();
        Paragraph paragraph = new Paragraph("This is First Page 第一页",font);
        document.add(paragraph);

        document.newPage();
        document.add(new Paragraph("This is Second Page 第二页",font));

        document.newPage();
        document.add(new Paragraph("This is Second Page 第三页",font));
        document.close();

    }
}

HeaderFoot类:

public class HeaderFoot extends PdfPageEventHelper {
    private String header;
    private PdfTemplate template;

    public void setHeader(String header){
        this.header = header;
    }
    @Override
    public void onOpenDocument(PdfWriter writer, Document document) {
        template = writer.getDirectContent().createTemplate(30,16);
    }

    @Override
    public void onEndPage(PdfWriter writer, Document document) {
        BaseFont baseFont = null;
        try {
            baseFont = BaseFont.createFont("simhei.ttf",BaseFont.IDENTITY_H,BaseFont.EMBEDDED);
        } catch (DocumentException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }
        Font font = new Font(baseFont,12);
        Rectangle rect = writer.getBoxSize("art");
        //添加页眉
        switch(writer.getPageNumber() % 2) {
            case 0:
                ColumnText.showTextAligned(writer.getDirectContent(),
                        Element.ALIGN_LEFT, new Phrase("偶数页页眉",font),
                        rect.getLeft(230), rect.getTop(), 0);
                break;
            case 1:
                ColumnText.showTextAligned(writer.getDirectContent(),
                        Element.ALIGN_LEFT, new Phrase("奇数页页眉",font),
                        rect.getLeft(230), rect.getTop(), 0);
                break;
        }
        //添加页码
        try {
            PdfPTable table = new PdfPTable(3);
            //设置表格的宽度有两种方法,分别如下
            table.setTotalWidth(new float[]{80,12,40});
            //将宽度锁定
            table.setLockedWidth(true);
            table.getDefaultCell().setFixedHeight(12);
            table.getDefaultCell().setBorder(Rectangle.NO_BORDER);

            PdfPCell cell = new PdfPCell( new Paragraph("第 "+writer.getPageNumber()+" 页/共 ",font));
            cell.setHorizontalAlignment(Element.ALIGN_RIGHT);
            cell.setBorder(Rectangle.NO_BORDER);
            table.addCell(cell);

            PdfPCell cell1 = new PdfPCell(Image.getInstance(template));
            cell.setHorizontalAlignment(Element.ALIGN_CENTER);
            cell1.setBorder(Rectangle.NO_BORDER);
            table.addCell(cell1);

            PdfPCell cell2 = new PdfPCell(new Paragraph("页",font));
            cell2.setBorder(Rectangle.NO_BORDER);
            table.addCell(cell2);
            table.writeSelectedRows(0,-1,235,50,writer.getDirectContent());

        } catch (Exception e) {
            e.printStackTrace();
        }

    }

    @Override
    public void onCloseDocument(PdfWriter writer, Document document) {
        ColumnText.showTextAligned(template,Element.PARAGRAPH,new Phrase(String.valueOf(writer.getPageNumber()-1)),2,2,0);
    }
}

jar包:

    <dependency>
      <groupId>com.itextpdf</groupId>
      <artifactId>itextpdf</artifactId>
      <version>5.4.5</version>
    </dependency>
    <dependency>
      <groupId>com.itextpdf.tool</groupId>
      <artifactId>xmlworker</artifactId>
      <version>5.4.5</version>
    </dependency>

项目下载路径: http://download.csdn.net/detail/mmd0308/9886919


  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
要设置iTextPDF页眉页脚,您可以按照以下步骤进行操作: 1. 首先,您需要下载并导入iTextPDF库,您可以在此链接中下载itextpdf-5.5.13.jar文件。 2. 创建一个PdfWriter实例来写入PDF文件,并传入文档对象和文件输出流,例如: ```java PdfWriter pdfWriter = PdfWriter.getInstance(document, new FileOutputStream(pdfFile)); ``` 3. 创建一个类来实现PdfPageEventHelper接口,来自定义页眉页脚的内容。例如,您可以创建一个PdfHeaderFooter类来设置页眉页脚内容。 ```java public class PdfHeaderFooter extends PdfPageEventHelper { public void onEndPage(PdfWriter writer, Document document) { // 在页面结束时添加页眉页脚的内容 // 可以使用PdfContentByte对象在页面的指定位置添加文本或图像 } } ``` 4. 将该类的实例设置为PdfWriter的PageEvent属性,以便在文档生成过程中调用它。 ```java pdfWriter.setPageEvent(new PdfHeaderFooter()); ``` 5. 在PdfHeaderFooter类的onEndPage方法中,您可以使用PdfContentByte对象来添加页眉页脚的内容。您可以使用setFontAndSize方法设置字体和字号,使用showTextAligned方法添加文本,并使用addImage方法添加图像。 6. 在添加页眉页脚时,您可能需要设置特定的字体,以确保文本的显示效果与HTML页面一致。您可以创建一个AsianFontProvider类来设置字体类型,使其与HTML页面字体一致。 以上是设置iTextPDF页眉页脚的一般步骤,您可以根据实际需求进行进一步的定制。希望对您有帮助!123 #### 引用[.reference_title] - *1* [itext Pdf页眉/页脚/水印](https://blog.csdn.net/Kally_tao/article/details/127053356)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}} ] [.reference_item] - *2* *3* [itext 生成pdf文件添加页眉页脚](https://blog.csdn.net/weixin_30699465/article/details/97089506)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值