我正在使用iText在我的项目中生成PDF文档,并且工作正常。我正在使用writer.setPageEvent在onEndPage方法中添加页眉和页脚。
@Override
public void onEndPage(PdfWriter writer, Document document) {
try {
addHeader(writer);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
addFooter(writer);
}
我的问题是我只想在第一页上显示标题,而不在随后的页面上显示标题。但是标题将显示在所有页面上。
答案 0 :(得分:1)
如果只想在单个页面(特别是第一文档页面)上添加页眉,则根本不需要使用页面事件!页面事件非常适合在许多页面上添加类似的内容,或者甚至仅在通过事件确定的少数页面上添加内容,但是对于当前情况,仅将标题添加到第一页,根本就不需要它们。
因此,作为@Soufiane Sakhi在其回答中建议的事件侦听器中的标志的替代方案,您可以从addHeader(writer)
方法中完全删除onEndPage
调用:
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);
答案 1 :(得分:0)
您可以在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);
}