我们使用xhtml以pdf格式取得了很好的成功,但是出现了一个新的要求,在每个页面上都有标题和页数。我们正在使用飞碟的新版本。iText Flying Saucer pdf头和忽略html
...但是这是行不通的。标题将在第一页的左上角。
如果我使用r7版本,页眉和页面编号工作完美,但没有通过html呈现,而在r8页眉\页码被忽略,但HTML完美呈现。用于测试的xHTML是从上面的url复制的。
我知道我一定很想念一件很简单的事情,如果有人有任何想法\评论,我会非常感激的听到。
我们使用xhtml以pdf格式取得了很好的成功,但是出现了一个新的要求,在每个页面上都有标题和页数。我们正在使用飞碟的新版本。iText Flying Saucer pdf头和忽略html
...但是这是行不通的。标题将在第一页的左上角。
如果我使用r7版本,页眉和页面编号工作完美,但没有通过html呈现,而在r8页眉\页码被忽略,但HTML完美呈现。用于测试的xHTML是从上面的url复制的。
我知道我一定很想念一件很简单的事情,如果有人有任何想法\评论,我会非常感激的听到。
我们用同样的方法,一切都完美的作品,但我已经决定不使用飞碟内置的页眉/页脚和使用PdfStamper
将它们加入到生成PDF后,它工作得非常好,这里是一个例。
public void modifyPdf(PdfStamper stamper) {
this.reader = stamper.getReader();
PdfContentByte under = null;
PdfPTable header = null;
PdfPTable footer = null;
final int total = this.reader.getNumberOfPages();
for (int page = 1; page <= total; page++) {
under = stamper.getUnderContent(page);
final PdfDocument doc = under.getPdfDocument();
final Rectangle rect = this.reader.getPageSizeWithRotation(page);
header = ... //build your header
footer = ... // build your footer
final float x = 0;
//write header to PDF
if (header != null) {
float y = (rect.getTop() - 0);
header.writeSelectedRows(0, -1, x, y, under);
}
//write footer to PDF
if (footer != null) {
float y = (rect.getBottom() + 20);
footer.writeSelectedRows(0, -1, x, y, under);
}
}
}
你可以建立你的压模这样的:
final PdfReader reader = new PdfReader(/*your pdf file*/);
final PdfStamper stamper = new PdfStamper(reader, /* output */);
希望对您有所帮助。
非常感谢bgould和时代,得到它通过https://gist.github.com/工作626264 –