c# - 使用 iTextSharp 5.0.2.0 的 pdf 文件中的页码
问题描述
我想获取使用 iTextSharp 5.0.2.0 生成的 pdf 每一页的页码。
现在部分代码是
e.FooterText = writer.CurrentPageNumber.ToString();
但是当我这样做时,它显示页码,但问题是它在所有页面中显示相同的页码。在所有页面中都像“1”。如何使用 iTextSharp 5.0.2.0 版获取 pdf 文件的页码?有什么想法吗?
解决方案
您必须打开 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();
}
}