我不知道我想要做的事情是否可行,而且对于一些非常微不足道的事情来说,这可能是太多的工作。我有一个创建PDF的servlet。我正在使用iText写入创建的pdf,在我的pdf中我有一个可以改变文档大小的动态表。我想在文档底部打印“接下页”,无论何时需要转到下一页。问题是我永远不会知道我的文档中出现分页的位置。
如果有可能的话,我非常乐意为此添加代码。此外,如果这不清楚,请随时提问,谢谢。
编辑:可能和我说话,但我认为这是可能的唯一方法是,如果有一种方法可以意识到刚创建了一个新页面。
答案 0 :(得分:0)
你可以使用setSkipLastFooter(boolean)。这样,它将打印表格的页脚行,除了最后一页之外,每页都有连续的文本。您需要确保在桌面上设置了FieldFooterRows。
您还可以使用PdfPageEventHelper,它允许您拦截各种页面事件,包括结束页面事件。在onEndPage方法中,您可以在文档中添加“续下页”文本。
答案 1 :(得分:0)
您可以在pdf生成器类中尝试应用此代码段:
private static final float FOOTER_MARGIN = 15;
private static final float PAGE_MARGIN_LEFT = 36;
private static final float PAGE_MARGIN_RIGHT = 36;
private static final float PAGE_MARGIN_BOTTOM = 36 + FOOTER_MARGIN;
private static final float PAGE_MARGIN_TOP = 36;
private static final Rectangle PAGE_SIZE = PageSize.A4;
//Put this in your generator method
//..
Document document = new Document(PAGE_SIZE,
PAGE_MARGIN_LEFT, PAGE_MARGIN_RIGHT, PAGE_MARGIN_BOTTOM, MARGIN_TOP);
PdfWriter writer = PdfWriter.getInstance(document, OUTPUT_STREAM);
writer.setPageEvent(new HeaderFooter());
//..
private class HeaderFooter extends PdfPageEventHelper {
@Override
public void onEndPage(PdfWriter writer, Document document) {
Phrase footerText = new Phrase("Continued On Next Page");
ColumnText.showTextAligned(
writer.getDirectContent(),
Element.ALIGN_LEFT, footerText,
PAGE_MARGIN_LEFT, PAGE_MARGIN_BOTTOM - FOOTER_MARGIN, 0);
}
}
仅供参考,有一大堆iText examples,在您的情况下搜索页脚。希望这会有所帮助。