Java的itext常见方法总结–4(页头,页尾,页码)

Document document = new Document();

PdfWriter pdfWriter = PdfWriter.getInstance(document,new FileOutputStream("D:\\appblog\\PDF\\水印.pdf"));

document.open();

//获取页码
pdfWriter.getPageNumber();

pdfWriter.setPageEvent(new PdfPageEventHelper() {

    @Override
    public void onStartPage(PdfWriter writer, Document document) {
        //这个newPage之后执行的

        //水印字体,可以使用这个来制作页码
        //ColumnText.showTextAligned(writer.getDirectContent(), ALIGN_RIGHT, new Phrase("Header"), 40, 20, 0);

        //writer.getDirectContent().addImage(); 这个可以添加图片

        //这个是行分割符号
        LineSeparator lineSeparator = new LineSeparator();
        //drawLine的参数:PdfContentByte canvas, float leftX, float rightX, float y
        //leftX代表的是要画的这个线相对这个PDF页面的长度
        //rightX代表的是:这条线的X的坐标
        //y代表的是:这条线y的坐标
        lineSeparator.drawLine(writer.getDirectContent(), document.getPageSize().getWidth(), 0, 60);
    }

    @Override
    public void onEndPage(PdfWriter writer, Document document) {
        //这个是newPage之前执行的
        ColumnText.showTextAligned(writer.getDirectContent(), ALIGN_RIGHT, new Phrase("Header"), 40, document.getPageSize().getHeight()-20, 0);

        LineSeparator lineSeparator = new LineSeparator();
        lineSeparator.drawLine(writer.getDirectContent(), document.getPageSize().getWidth(), 0, document.getPageSize().getHeight()-25);
        //页码
        ColumnText.showTextAligned(writer.getDirectContent(), ALIGN_CENTER, new Phrase("theFirst " + writer.getPageNumber() + " Page"), document.getPageSize().getWidth()/2, 40, 0);
    }

    @Override
    public void onCloseDocument(PdfWriter writer, Document document) {
        //执行documnet.close方法之前还会执行一次onCloseDocument方法,
        //但是执行onCloseDocument方法前,之前还会先执行onEndPage方法一次才轮到onCloseDocument方法
        //也就是说,documnet.close的时候:是先 onEndPage --> onCloseDocument --> documnet.close
        System.out.println("关闭文档");
    }
});

document.add(new Paragraph(" "));

document.newPage();

document.add(new Paragraph(" "));

document.close();
pdfWriter.close();
上一篇 Java的itext常见方法总结--3(水印)
下一篇 腾讯云CVM部署OpenClaw全流程教程
目录
文章列表
1 Mac安装Windows图文教程
Mac安装Windows图文教程
2
Prometheus通过企业微信接收告警
Prometheus通过企业微信接收告警
3
Hutool,一个实用的Java工具类库
Hutool,一个实用的Java工具类库
4
Android P新特性:强制执行 FLAG_ACTIVITY_NEW_TASK 要求
Android P新特性:强制执行 FLAG_ACTIVITY_NEW_TASK 要求
5
Java内部类和静态内部类的区别
Java内部类和静态内部类的区别
最新评论
一位WordPress评论者
一位WordPress评论者
2月12日
您好,这是一条评论。若需要审核、编辑或删除评论,请访问仪表盘的评论界面。评论者头像来自 Gravatar。