如何在Itextsharp中添加当前页码和总页数[重复]

2023-12-08

pdf文件中的当前页码和总页数如何计算 页数: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);

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

int pageNo = writer.PageNumber

In Java:

int pageNo = writer.getPageNumber();

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

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

#1:分两遍创建 PDF

您首先在内存中创建 PDFwithout页码。之后,您使用PdfStamper添加页码。这在以下问答项目和示例中进行了解释:

  • 例子:向现有 PDF 添加页码 (Java)
  • 例子:双通道(爪哇)/双通道 (C#)
  • iText - 将内容添加到现有页面的底部(StackOverflow 问答)
  • iText Java - 向现有 pdf 添加标题(StackOverflow 问答)
  • 使用 iTextSharp 创建 PDF 时输入页码(StackOverflow 问答)
  • ...

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

您可以创建一个PdfTemplate作为总页数的占位符。然后,就在你面前Close()文档中,您可以在该占位符上填写总页数。

这一点之前也已经解释过很多次了:

  • 例子:电影国家1(爪哇)/电影国家1 (C#)
  • 问答部分:页面事件
  • 使用 iTextSharp 创建 PDF 时输入页码(StackOverflow 问答)
  • 第 X 页(共 Y 期)(StackOverflow 问答)
  • ...

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在Itextsharp中添加当前页码和总页数[重复] 的相关文章

随机推荐