当前位置: 首页 > 面试题库 >

如何使用itext在pdf中添加多个页眉和页脚

邹京
2023-03-14
问题内容

在我的pdf文件中,我需要有多个页眉和页脚。在页眉中,我希望标题标题位于左侧,而某些文本位于中心。

同样,在页脚中,我需要在左侧打印公司名称,在中心打印页码,并在右侧打印有关表格内容的一些信息。

我看过很多文章,但是我没有正确的想法来创建它,有人请帮助我提供一些示例代码片段。


问题答案:

页眉和页脚应使用“页面事件”添加。如果您需要一些示例,只需在官方网站上查找关键字header
/ footer。

只需创建一个扩展PdfPageEventHelper并实现该onEndPage()方法的类。阅读文档的人不会常犯使用该onStartPage()方法的错误,但是也许您忽略了此方法,因此,我将其添加为一个额外的警告。

使用方法将类的实例添加到PdfWriter对象setPageEvent()

我不知道我是否理解“多个”标头的含义。如果您有多个页面事件实现,则可以使用setPageEvent()方法将它们全部添加,它们将全部执行。如果要从一个页面事件实现切换到另一个页面事件实现,则需要先使用setPageEvent(null)

也许您希望不同页面的页眉不同,只需在页面事件实现中使用成员变量并在此过程中进行更改即可。在其中一个名为MovieHistory2的书籍示例中,标题的文本存储在String名为的数组中header

页眉的位置取决于页码:

    public void onEndPage(PdfWriter writer, Document document) {
        Rectangle rect = writer.getBoxSize("art");
        switch(writer.getPageNumber() % 2) {
        case 0:
            ColumnText.showTextAligned(writer.getDirectContent(),
                    Element.ALIGN_RIGHT, header[0],
                    rect.getRight(), rect.getTop(), 0);
            break;
        case 1:
            ColumnText.showTextAligned(writer.getDirectContent(),
                    Element.ALIGN_LEFT, header[1],
                    rect.getLeft(), rect.getTop(), 0);
            break;
        }
        ColumnText.showTextAligned(writer.getDirectContent(),
                Element.ALIGN_CENTER, new Phrase(String.format("page %d", pagenumber)),
                (rect.getLeft() + rect.getRight()) / 2, rect.getBottom() - 18, 0);
    }

对于偶数页码,标题添加到右侧;左边的奇数页码。如您所见,页脚居中。

您还提到了标题表。如果要使用表格,请查看MovieCountries1示例

您说:“我看过这么多帖子,但是我没有正确的想法来创建它。” 通过阅读文档,尤其是“ iText in Action-Second
Edition”一书的第5章,您将获得正确的想法,其中引用了我所引用的代码片段。



 类似资料:
  • 使用iTextSharp,您可以通过将事件附加到PDF来向PDF添加页眉/页脚,如本SO答案中所述:https://stackoverflow.com/a/19004392 我怎样才能用 iText 7 做同样的事情? 这个链接有Java代码示例,但看起来不像它使用的页面事件。

  • 我使用ColdFusion和iText来生成PDF文档,我希望能够在iText决定进行分页时“自动”向PDF添加页眉和页脚。我已经看到了如何在Java中实现这一点的示例,下面是实现这一点的基本方法: 然后,在开始编写PDF文档之前,您要像他的事件一样“注册”您的事件: (至少据我所知。)

  • 问题内容: 如何在我的PDF页面中添加 页眉 和 页脚 ?我想要一个表,表头中有3列,其他表中,页脚中有3列。我的页面可能是A3或A4,并且是横向或纵向。 谁能帮我?我在互联网上找不到很好的例子。 谢谢! mas正 问题答案: 创建一个MyPageEventListener类,该类扩展了 PdfPageEventHelper 将页面事件侦听器添加到PdfWriter对象 在MyPageEventL

  • 问题内容: 我正在尝试使用具有以下代码的iText 7创建PDF文档,并且生成时,我的PDF文档内容在同一页面中重叠(即,在第1页中)。 我看到了 document.newPage(); iText 7中缺少该方法。如何在itext 7中不使用pdfDocumet.copyPages(…)或PDFmerger将页面添加到我的PDF文档中。 问题答案: 在iText 7中,该方法已成为区域中断的特殊