【发布时间】:2015-04-04 16:09:08
【问题描述】:
我们在应用程序中使用 itextpdf 和 xmlworker API(itextpdf-5.1.1.jar、Xmlworker-1.1.0.jar)来执行 PDF 生成任务。我们通过 XML-XSLT 转换生成 HTML 内容,然后使用 HTML 内容创建 pdf 文档。
当我们尝试实现分页(as 1 of 3, 2 of 3..)时,我们从 itextpdf 在线示例中了解到,除了我们创建的 PDF 文档之外,我们始终需要创建一个结果 pdf 文档以便盖章每页内容的页码。
这种方法在删除中间 pdf 文档时带来了挑战。有没有什么方法可以在我们第一次创建 pdf 时确定页码,以避免创建一个结果 pdf 文档?
谢谢 文卡特
class TableFooter extends PdfPageEventHelper {
String header;
PdfTemplate total;
public void setHeader(String header) {
this.header = header;
}
public void onOpenDocument(PdfWriter writer, Document document) {
total = writer.getDirectContent().createTemplate(30, 16);
}
public void onEndPage(PdfWriter writer, Document document) {
Font ffont = new Font(Font.FontFamily.UNDEFINED, 7, Font.NORMAL);
PdfPTable table = new PdfPTable(2);
try
{
table.setWidths(new int[]{1,1});
table.setTotalWidth(50);
table.getDefaultCell().setFixedHeight(15);
table.getDefaultCell().setHorizontalAlignment(Element.ALIGN_RIGHT);
Phrase footer = new Phrase(String.format("%d of", writer.getPageNumber()), ffont);
table.addCell(footer);
PdfPCell cell = new PdfPCell(Image.getInstance(total));
table.addCell(cell);
table.writeSelectedRows(0, -1, 275, 20, writer.getDirectContent());
}
catch(Exception de) {
throw new ExceptionConverter(de);
}
}
public void onCloseDocument(PdfWriter writer, Document document) {
ColumnText.showTextAligned(total, Element.ALIGN_LEFT, new Phrase(String.valueOf(writer.getPageNumber() - 1)), 10, 4, 0);
}
}
【问题讨论】:
标签: pagination itextpdf