2012-01-13 96 views
1

我不知道我试图做什么甚至是可能的,并且对于非常不重要的东西来说它可能太多了。我有一个创建PDF的servlet。我正在使用iText写入创建的pdf,在我的pdf中我有一个动态表,可以更改文档的大小。我希望在文档底部打印“接下页”,只要它需要转到下一页。问题是我永远不会知道我的文档中出现分页符的位置。继续转到下一个PDF页面,并在两个文本之间打印

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

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

回答

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,你的情况寻找页脚。希望这可以帮助。

0

你可以使用setSkipLastFooter(boolean)。这样,它将打印表格的页脚行,在除最后一页以外的每个页面上都有连续的文本。您需要确保在表格上设置FooterRows。

您也可以使用PdfPageEventHelper,它允许您截取各种页面事件,包括结束页面事件。在onEndPage方法中,您可以将“下一页继续”文本添加到文档中。

相关问题