首页 > 解决方案 > 使用 iTextSharp 5.0.2.0 的 pdf 文件中的页码

问题描述

我想获取使用 iTextSharp 5.0.2.0 生成的 pdf 每一页的页码。

现在部分代码是

e.FooterText = writer.CurrentPageNumber.ToString();

但是当我这样做时,它显示页码,但问题是它在所有页面中显示相同的页码。在所有页面中都像“1”。如何使用 iTextSharp 5.0.2.0 版获取 pdf 文件的页码?有什么想法吗?

标签: c#.netitext

解决方案


您必须打开 PDFiTextSharp并按照以下代码对您有所帮助


public void AddPageNumberToPDF(string physicalDocPath, bool showPageOfPage)
{
   byte[] Fbytes = File.ReadAllBytes(physicalDocPath);
   PdfReader reader = new PdfReader(Fbytes);
   int n = reader.NumberOfPages;
   using (var fileStream = new FileStream(physicalDocPath, FileMode.Create, FileAccess.Write))
   {
       var document = new Document(reader.GetPageSizeWithRotation(1));
       var writer = PdfWriter.GetInstance(document, fileStream);
       document.Open();
       PdfContentByte cb = writer.DirectContent;
       int p = 0;

       for (int page = 1; page <= reader.NumberOfPages; page++)
       {
           document.NewPage();
           p++;

           PdfImportedPage importedPage = writer.GetImportedPage(reader, page);
           cb.AddTemplate(importedPage, 0, 0);

           BaseFont bf = BaseFont.CreateFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.NOT_EMBEDDED);
           cb.BeginText();
           cb.SetFontAndSize(bf, 10);
           if (showPageOfPage)
           {
               cb.ShowTextAligned(PdfContentByte.ALIGN_RIGHT, p.ToString()+"/"+n.ToString(), 575, 17, 0);
           }
           else
           {
               cb.ShowTextAligned(PdfContentByte.ALIGN_RIGHT, p.ToString(), 575, 17, 0);
           }
           cb.EndText();
       }

       document.Close();
       writer.Close();
   }
}

推荐阅读