0
/*  string text = "Page " + writer.PageNumber + " of "+TotalNumberofPages;
How to get TotalNumberofPages = TotalNumber of Pages */

How can I add the footer in each page? Footer should be line Page 1 of 10,1 of 10,....,10 of 10. How to get count of total pages in each page. pdf pages may increase in number as data increases.

public class MyPdfPageEventHelpPageNo : iTextSharp.text.pdf.PdfPageEventHelper
{
protected PdfTemplate total;
protected BaseFont helv;
private bool settingFont = false;

  public override void OnOpenDocument(PdfWriter writer, Document document)
  {
    total = writer.DirectContent.CreateTemplate(100, 100);
    total.BoundingBox = new Rectangle(-20, -20, 100, 100);

    helv = BaseFont.CreateFont(BaseFont.HELVETICA, BaseFont.WINANSI,     BaseFont.NOT_EMBEDDED);
}

public override void OnEndPage(PdfWriter writer, Document document)
{
    PdfContentByte cb = writer.DirectContent;
    cb.SaveState();
    string text = "Page " + writer.PageNumber + " of "+ writer.TOTALPAGES;/*How to total pages count in all pages*/
    float textBase = document.Bottom - 20;
    float textSize = 12; //helv.GetWidthPoint(text, 12);
    cb.BeginText();
    cb.SetFontAndSize(helv, 12);
    if ((writer.PageNumber % 2) == 1)
    {
        cb.SetTextMatrix(document.Left, textBase);
        cb.ShowText(text);
        cb.EndText();
        cb.AddTemplate(total, document.Left + textSize, textBase);
    }

    {
        float adjust = helv.GetWidthPoint("0", 12);
        cb.SetTextMatrix(document.Right - textSize - adjust, textBase);
        cb.ShowText(text);
        cb.EndText();
        cb.AddTemplate(total, document.Right - adjust, textBase);
    }
    cb.RestoreState();
   }

  public override void OnCloseDocument(PdfWriter writer, Document document)
  {
    total.BeginText();
    total.SetFontAndSize(helv, 12);
    total.SetTextMatrix(0, 0);
    int pageNumber = writer.PageNumber - 1;
    total.ShowText(Convert.ToString(pageNumber));
    total.EndText();
  }

   }
Andrea
  • 11,801
  • 17
  • 65
  • 72

0 Answers0