使用 java 中的 Itext 仅将 header 添加到第一个 PDF 页面
Add header to only the first PDF page using Itext in java
我在我的项目中使用 iText 生成 PDF 文档,它工作正常。我正在使用 writer.setPageEvent.
在 onEndPage 方法中添加 header 和页脚
@Override
public void onEndPage(PdfWriter writer, Document document) {
try {
addHeader(writer);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
addFooter(writer);
}
我的问题是我只想在第一页显示 header 而不是在后续页面。但是 header 正在所有页面上显示。
您可以向 PdfPageEventHelper 添加一个字段来检查它是否是第一页,如下所示:
private boolean firstPage = true;
@Override
public void onEndPage(PdfWriter writer, Document document) {
try {
if (firstPage) {
firstPage = false;
addHeader(writer);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
addFooter(writer);
}
如果您只想在单个页面上添加 header,尤其是第一个文档页面,则根本不需要使用页面事件!页面事件适用于在许多页面上添加类似的内容,甚至只在您通过事件确定的几页上添加内容,但对于手头的情况,仅在第一页添加 header ,根本不需要它们.
因此,作为@Soufiane Sakhi 在他的回答中提出的事件侦听器中的标志的替代方案,您可以从 onEndPage
方法中完全删除 addHeader(writer)
调用:
public void onEndPage(PdfWriter writer, Document document) {
addFooter(writer);
}
打开文档后立即执行(当第一页为当前页时)
Document document = new Document();
PdfWriter writer = PdfWriter.getInstance(document, outputStream);
writer.setPageEvent(YOUR_PAGE_EVENT_LISTENER);
document.open();
addHeader(writer);
我在我的项目中使用 iText 生成 PDF 文档,它工作正常。我正在使用 writer.setPageEvent.
在 onEndPage 方法中添加 header 和页脚@Override
public void onEndPage(PdfWriter writer, Document document) {
try {
addHeader(writer);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
addFooter(writer);
}
我的问题是我只想在第一页显示 header 而不是在后续页面。但是 header 正在所有页面上显示。
您可以向 PdfPageEventHelper 添加一个字段来检查它是否是第一页,如下所示:
private boolean firstPage = true;
@Override
public void onEndPage(PdfWriter writer, Document document) {
try {
if (firstPage) {
firstPage = false;
addHeader(writer);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
addFooter(writer);
}
如果您只想在单个页面上添加 header,尤其是第一个文档页面,则根本不需要使用页面事件!页面事件适用于在许多页面上添加类似的内容,甚至只在您通过事件确定的几页上添加内容,但对于手头的情况,仅在第一页添加 header ,根本不需要它们.
因此,作为@Soufiane Sakhi 在他的回答中提出的事件侦听器中的标志的替代方案,您可以从 onEndPage
方法中完全删除 addHeader(writer)
调用:
public void onEndPage(PdfWriter writer, Document document) {
addFooter(writer);
}
打开文档后立即执行(当第一页为当前页时)
Document document = new Document();
PdfWriter writer = PdfWriter.getInstance(document, outputStream);
writer.setPageEvent(YOUR_PAGE_EVENT_LISTENER);
document.open();
addHeader(writer);