java - 如何在 Itext Pdf 文档中为不同页面设置不同的页脚
问题描述
我用 itext 生成 PDF 文档。文档有两部分。第一部分应该有不同的页脚,第二部分应该有不同的页脚。我该如何解决这个问题。我已经尝试过这个代码块:
ByteArrayOutputStream fileOut = new ByteArrayOutputStream();
Document document = new Document(PageSize.A4, 36, 36, 36, 145);
FooterPageEvent1 event1 = new FooterPageEvent1();
PdfWriter writer = PdfWriter.getInstance(document, fileOut);
writer.setPageEvent(event1);
document.open();
.....
FooterPageEvent2 event2 = new FooterPageEvent2();
PdfWriter writer2 = PdfWriter.getInstance(document, fileOut);
writer2.setPageEvent(event2);
....
解决方案
您的方法将不起作用,因为每次创建PdfWriter
新的 pdf 文件时都会启动一个新的 pdf 文件。因此,您有两个 pdf 编写器创建单独的 pdf,它们都写入同一个文件。因此,您会得到一个大杂烩作为输出,如果结果可以以 pdf 格式打开,那就太幸运了!
相反,您可以在某个时间切换单个作者的页面事件侦听器:
Document document = new Document(PageSize.A4, 36, 36, 36, 145);
FooterPageEvent1 event1 = new FooterPageEvent1();
PdfWriter writer = PdfWriter.getInstance(document, fileOut);
writer.setPageEvent(event1);
document.open();
.....
writer.setPageEvent(null);
FooterPageEvent2 event2 = new FooterPageEvent2();
writer.setPageEvent(event2);
.....
或者,您可以使用布尔属性实现单页事件侦听器,该属性根据属性的当前值创建一个或另一个页脚。在文档部分之间,您只需切换该属性。
推荐阅读
- html - 如何在网站页面上使用 microsoft edge 以马拉雅拉姆语朗读功能
- android - 回到应用程序时,Android 后台活动消失
- dplyr - 根据 2 列中的条件汇总所有列
- r - 是否有适用于所有操作系统/无头/图形的通用/灵活的 RSelenium 启动功能?
- javascript - 如何在 Javascript 中设置 cookie 在 1 小时内过期?有了这个脚本
- amazon-web-services - 无服务器中的 NetCore3.0
- ios - 在某个日期过后从 Firestore 中删除文档
- javascript - 当 jQuery 时间选择器中的 addSliderAccess 为 true 时,如何解决闪烁问题?
- arrays - 同一个 searchBar 的多个过滤器并忽略 Swift 5 中的 oder
- node.js - 如何在 Node.js 中解码令牌?jwt.verify() 失败