如何在Itextsharp中添加当前页码和总页数

and*_*pol 5 itextsharp

如何将当前页码和pdf文件中的页面总页数设置为Page:3/10

我的代码如下

        //PdfPTable saleTable = SaleTable();
        FileStream fileStream = new FileStream(Customer + "Invoice.pdf",
        FileMode.Create,
                                               FileAccess.Write,
                                               FileShare.None);
        Document doc = new Document(PageSize.A4);

        PdfWriter writer = PdfWriter.GetInstance(doc, fileStream);
        doc.Open();

        glue = new Chunk(new VerticalPositionMark());
        _phrase1.Add(new Chunk(glue));
        _phrase1.Add(new Chunk("Page Number: "));

        _para.Add(_phrase1);
         doc.Add(_para);
Run Code Online (Sandbox Code Playgroud)

Bru*_*gie 6

获取当前页码很容易.你有一个PdfWriter名为的实例writer.您可以向该实例询问当前页码:

int pageNo = writer.PageNumber
Run Code Online (Sandbox Code Playgroud)

在Java中:

int pageNo = writer.getPageNumber();
Run Code Online (Sandbox Code Playgroud)

除非您可以展望未来,否则无法获得总页数.当您在第1页时,iText无法知道您将添加多少页面.也许你会Close()立即调用这个方法,在这种情况下,总页数是1.也许你打算增加一百页.

有两种方法可以解决此问题.

#1:两遍创建PDF

首先在内存中创建没有页码的PDF .之后,您将使用PdfStamper添加页码.这可以在以下问答项目和示例中解释:

#2:使用占位符表示总页数

您可以创建一个PdfTemplate占总页数的占位符.然后,就在您Close()的文档之前,您可以填写该占位符的总页数.

这也曾多次解释过:

请在发布问题之前浏览官方文档.