gpt4 book ai didi

java - 使用 itext 创建的 pdf 文档的第一页上看不到标题

转载 作者:行者123 更新时间:2023-12-02 04:27:46 25 4
gpt4 key购买 nike

我正在尝试向报告中的每个页面添加页眉和页脚,但第一页上没有页眉。我正在覆盖 PdfPageEventHelper 的 onStartPage 和 onEndPage 方法。我的代码:

public class HeaderFooterPageEvent extends PdfPageEventHelper {

public void onStartPage(PdfWriter writer, Document document) {
Image leftUpper = Image.getInstance("leftUpper.png");
leftUpper.setAbsolutePosition(0, 0);
Chunk chunk = new Chunk(leftUpper, 0, -45);
HeaderFooter header = new HeaderFooter(new Phrase(chunk), false);
header.setBorder(Rectangle.NO_BORDER);
document.setHeader(header);
}

public void onEndPage(PdfWriter writer, Document document) {
Image img = Image.getInstance("reportFooter.png");
img.setAbsolutePosition(0, 0);
img.scaleAbsolute(595, 50)
writer.getDirectContent().addImage(img);
}

}

页脚工作正常,但首页上的页眉丢失。我究竟做错了什么?

最佳答案

你的代码真的很奇怪。您正在将过时的 HeaderFooter 功能(很久以前已从 iText 中删除)与较新的页面事件功能混合在一起。

如果您想使用已过时的 HeaderFooter 类,则不应引入页面事件。在这种情况下,您的错误是您没有在 document.open() 之前设置 header 。请注意,如果您选择此选项,则不应在商业环境中使用您的应用程序,因为您使用的 iText 版本不适合商业用途,如 Open Source beta 上所述(以及其他)。在 StackExchange 上。

如果您想使用页面事件(推荐这样做),您就违反了基本规则之一:不要在 onStartPage() 方法中添加任何内容。所有这些都在免费电子书 The Best iText Questions on StackOverflow 中进行了解释。您可以在其中找到问题引用(以及相应的答案),例如:

您的 onStartPage() 方法包含多个错误。请扔掉该代码,并调整您的 onEndPage() 方法:

public void onEndPage(PdfWriter writer, Document document) {
Image img = Image.getInstance("reportFooter.png");
img.setAbsolutePosition(0, 0);
img.scaleAbsolute(595, 50)
writer.getDirectContent().addImage(img);
}

您的 onEndPage() 方法在页面底部添加图像:该图像用作页脚。如果您还想添加 header ,则需要像这样调整此方法:

public void onEndPage(PdfWriter writer, Document document) {
Image header = Image.getInstance("reportHeader.png");
header.setAbsolutePosition(792, 0);
header.scaleAbsolute(595, 50)
writer.getDirectContent().addImage(header);
Image footer = Image.getInstance("reportFooter.png");
footer.setAbsolutePosition(0, 0);
footer.scaleAbsolute(595, 50)
writer.getDirectContent().addImage(footer);
}

在此代码片段中,我假设页面大小为 A4:842 x 595 个用户单位,并且有 50 个用户单位的边距,因为我将页眉和页脚的尺寸定义为 595 x 50 个用户单位。我在 y = 0 处添加页脚,在 y = 792 处添加页眉(即 842 - 50)。如果您为文档定义的边距小于 50,您的内容和页眉或页脚将重叠。

关于java - 使用 itext 创建的 pdf 文档的第一页上看不到标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31915082/

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