将信息添加到文档页脚时如何获取 iText7 中的总页码?

Bao*_* Li 4 footer itext7

在 iTextSharp 中,我们可以重写 OnCloseDocument() 事件并在文档页脚添加#total 的页码。但是,PdfDocument 不再有此文档关闭事件。既然我们在添加新页面时无法确定总页数,那么我们如何确定这个总页数并在生成文档时将其放在页脚上呢?

我见过一些使用暴力方法的建议:在生成 PDF 文档之后、刷新之前,使用 PdfReader 读取它以获取总数,然后再更新页脚。这是唯一的方法吗?有更好的方法吗?

谢谢。

Mic*_*mey 6

这是这样做的方法之一。

此代码示例中描述了另一种方法:

protected void manipulatePdf(String dest) throws Exception {
    PdfDocument pdfDoc = new PdfDocument(new PdfReader(SRC), new PdfWriter(dest));
    Document doc = new Document(pdfDoc);

    int numberOfPages = pdfDoc.getNumberOfPages();
    for (int i = 1; i <= numberOfPages; i++) {

        // Write aligned text to the specified by parameters point
        doc.showTextAligned(new Paragraph(String.format("page %s of %s", i, numberOfPages)),
                559, 806, i, TextAlignment.RIGHT, VerticalAlignment.TOP, 0);
    }

    doc.close();
}
Run Code Online (Sandbox Code Playgroud)

在该代码示例中,您将在创建并刷新 PDF 后添加页脚。这是执行此请求的一种非常简单且容易的方法。