itext5给每页页脚添加页数

以下是itex给pdf每页页脚添加页数代码,具体参数根据实际调整

public void print(Object object, HttpServletResponse response) {
        Document document = null;
        try {
            //创建pdf文档
            document = new Document(PageSize.A4);
            document.setMargins(40, 15, 70, 20);
            PdfWriter pdfWriter = PdfWriter.getInstance(document, response.getOutputStream());
            pdfWriter.setViewerPreferences(PdfWriter.PageModeUseThumbs);

			//添加页脚
            FooterEvent footerEvent = new FooterEvent();
            pdfWriter.setPageEvent(footerEvent);
            
            document.open();

            //渲染数据
            //。。。
            
        } catch (Exception e) {
            throw new RuntimeException("打印预览失败:" + e.getMessage());
        } finally {
            document.close();
        }
}
public static class FooterEvent extends PdfPageEventHelper {
        //总页数
        PdfTemplate totalPage;
        //字体
        Font font;

        {
            try {
                font = new Font(BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED), 9f);
            } catch (DocumentException | IOException e) {
                e.printStackTrace();
            }
        }

        //打开文档时,创建一个总页数的模版
        public void onOpenDocument(PdfWriter writer, Document document) {
            PdfContentByte cb = writer.getDirectContent();
            totalPage = cb.createTemplate(50, 9);
        }

        @Override
        public void onEndPage(PdfWriter writer, Document document) {
            //创建一个两列的表格
            PdfPTable table = new PdfPTable(2);
            try {
                table.setTotalWidth(PageSize.A4.getWidth());//总宽度为A4纸张宽度
                table.setLockedWidth(true);//锁定列宽
                table.setWidths(new int[]{50, 50});//设置每列宽度
                PdfPCell cell = new PdfPCell(new Phrase(document.getPageNumber() + "  /", font));
                cell.setHorizontalAlignment(Element.ALIGN_RIGHT);//设置水平右对齐
                cell.setVerticalAlignment(Element.ALIGN_MIDDLE);//设置垂直居中
                cell.disableBorderSide(15);//隐藏全部边框
                table.addCell(cell);
                PdfPCell cell1 = new PdfPCell(Image.getInstance(totalPage));//共 页
                cell1.setHorizontalAlignment(Element.ALIGN_LEFT);//设置水平左对齐
                cell1.setVerticalAlignment(Element.ALIGN_MIDDLE);//设置垂直居中
                cell1.disableBorderSide(15);//隐藏全部边框
                table.addCell(cell1);
                table.writeSelectedRows(0, -1, 0, 30, writer.getDirectContent());
            } catch (Exception e) {
                throw new ExceptionConverter(e);
            }
        }

        public void onCloseDocument(PdfWriter writer, Document document) {
            String text = "" + writer.getPageNumber();
            ColumnText.showTextAligned(totalPage, Element.ALIGN_MIDDLE, new Paragraph(text, font), 0, 0, 0);
        }
    }
  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
您可以使用 iTextPDF 库来向每个页面添加页脚。下面是一个简单的示例代码,演示如何在每个页面的底部添加页脚: ```java import com.itextpdf.text.Document; import com.itextpdf.text.DocumentException; import com.itextpdf.text.Element; import com.itextpdf.text.Font; import com.itextpdf.text.Paragraph; import com.itextpdf.text.Phrase; import com.itextpdf.text.pdf.*; import java.io.FileOutputStream; import java.io.IOException; public class FooterExample { public static void main(String[] args) { Document document = new Document(); try { PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream("output.pdf")); document.open(); document.add(new Paragraph("Page 1")); document.newPage(); document.add(new Paragraph("Page 2")); document.newPage(); document.add(new Paragraph("Page 3")); // 添加页脚 PdfContentByte cb = writer.getDirectContent(); Phrase footer = new Phrase("这是页脚", new Font(Font.FontFamily.HELVETICA, 10)); for (int i = 1; i <= writer.getPageNumber(); i++) { // 在每个页面的底部左侧添加页脚 ColumnText.showTextAligned(cb, Element.ALIGN_LEFT, footer, document.leftMargin() + 10, document.bottom() - 10, 0); // 在每个页面的底部中间添加页脚 ColumnText.showTextAligned(cb, Element.ALIGN_CENTER, footer, (document.right() + document.left()) / 2, document.bottom() - 10, 0); // 在每个页面的底部右侧添加页脚 ColumnText.showTextAligned(cb, Element.ALIGN_RIGHT, footer, document.right() - 10, document.bottom() - 10, 0); // 移动到下一页 document.newPage(); } } catch (DocumentException | IOException e) { e.printStackTrace(); } finally { document.close(); } } } ``` 在这个示例中,我们使用 `ColumnText.showTextAligned()` 方法在每个页面的底部添加页脚。可以根据需要选择左对齐、居中对齐或右对齐。 请注意,以上示例代码只是一个简单的示例,您可能需要根据实际需求进行适当修改。希望对您有帮助!如有任何问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

赵培风

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值