如何使用itext在pdf中添加多个页眉和页脚
在我的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章,您将获得正确的想法,其中引用了我所引用的代码片段。
以上是 如何使用itext在pdf中添加多个页眉和页脚 的全部内容, 来源链接: utcz.com/qa/430276.html