1

在我的 pdf 中,我需要有多个页眉和页脚。在页眉中,我希望标题在左侧,一些文本在中间。

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

我看过很多帖子,但我没有得到创建这个的正确想法。有人请帮我一些示例代码片段。谢谢

4

1 回答 1

3

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

只需创建一个扩展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 章,我所指的代码片段取自其中。

于 2013-02-20T13:59:09.290 回答