gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-29 05:48:20 30 4
gpt4 key购买 nike

在我的 pdf 中,我需要不止一个页眉和页脚。在页眉中,我希望标题位于左侧,一些文本位于中心。

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

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

最佳答案

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

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

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

我不知道我是否理解“多个” header 的意思。如果您有多个页面事件实现,您可以使用 setPageEvent() 方法添加它们,它们都会被执行。如果你想从一个页面事件实现切换到另一个,你需要先使用setPageEvent(null)

也许您希望不同页面的 header 不同,只需在您的页面事件实现中使用一个成员变量并沿途更改它。在名为 MovieHistory2 的一本书示例中, header 的文本存储在名为 headerString 数组中。

页眉的位置取决于页码:

    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 — 第二版”一书的第 5 章,我所指的代码片段就是从中获取的。

关于java - 如何使用 itext 在 pdf 中添加多个页眉和页脚,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14977967/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com