به این صورت قابل انجام است:
using System; using System.IO; using iTextSharp.text; using iTextSharp.text.pdf; namespace iTextSharpTests { public class PdfWriterPageEvents : PdfPageEventHelper { PdfContentByte _pdfContentByte; // عدد نهایی تعداد کل صفحات را در این قالب قرار خواهیم داد PdfTemplate _template; Font _font; public override void OnOpenDocument(PdfWriter writer, Document document) { FontFactory.Register(Environment.GetEnvironmentVariable("SystemRoot") + "\\fonts\\tahoma.ttf"); _font = FontFactory.GetFont("Tahoma", BaseFont.IDENTITY_H, embedded: true, size: 9); _pdfContentByte = writer.DirectContent; _template = _pdfContentByte.CreateTemplate(50, 50); } public override void OnEndPage(PdfWriter writer, Document document) { base.OnEndPage(writer, document); var pageSize = document.PageSize; var text = "صفحه " + writer.PageNumber + " از "; var textLen = _font.BaseFont.GetWidthPoint(text, _font.Size); var center = (pageSize.Left + pageSize.Right) / 2; ColumnText.ShowTextAligned( _pdfContentByte, Element.ALIGN_RIGHT, new Phrase(text, _font), center, pageSize.GetBottom(25), 0, PdfWriter.RUN_DIRECTION_RTL, 0); //در پایان هر صفحه یک جای خالی را مخصوص تعداد کل صفحات رزرو خواهیم کرد _pdfContentByte.AddTemplate(_template, center - textLen, pageSize.GetBottom(25)); } public override void OnCloseDocument(PdfWriter writer, Document document) { base.OnCloseDocument(writer, document); _template.BeginText(); _template.SetFontAndSize(_font.BaseFont, _font.Size); _template.SetTextMatrix(0, 0); //درج تعداد کل صفحات در تمام قالبهای اضافه شده _template.ShowText((writer.PageNumber - 1).ToString()); _template.EndText(); } } public class AddTotalNoPages { public static void CreateTestPdf() { using (var pdfDoc = new Document(PageSize.A4)) { var pdfWriter = PdfWriter.GetInstance(pdfDoc, new FileStream("tpn.pdf", FileMode.Create)); pdfWriter.PageEvent = new PdfWriterPageEvents(); pdfDoc.Open(); pdfDoc.Add(new Phrase("Page1")); pdfDoc.NewPage(); pdfDoc.Add(new Phrase("Page2")); pdfDoc.NewPage(); pdfDoc.Add(new Phrase("Page3")); } System.Diagnostics.Process.Start("tpn.pdf"); } } }