继续表格到下一个PDF页面,并在其间打印文本

时间:2012-01-13 17:42:32

标签: java pdf itext

我不知道我想要做的事情是否可行,而且对于一些非常微不足道的事情来说,这可能是太多的工作。我有一个创建PDF的servlet。我正在使用iText写入创建的pdf,在我的pdf中我有一个可以改变文档大小的动态表。我想在文档底部打印“接下页”,无论何时需要转到下一页。问题是我永远不会知道我的文档中出现分页的位置。

如果有可能的话,我非常乐意为此添加代码。此外,如果这不清楚,请随时提问,谢谢。

编辑:可能和我说话,但我认为这是可能的唯一方法是,如果有一种方法可以意识到刚创建了一个新页面。

2 个答案:

答案 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,在您的情况下搜索页脚。希望这会有所帮助。