How to Add Page number in Footer in PDF by Itextsharp

后端 未结 4 855
遥遥无期
遥遥无期 2020-12-05 19:51

I am using iTextSharp DLL in ASP.NET code. I am fetching a data into dataset and Add the dataset into PDF table.

If my dataset have more 100 rows then 100 rows will

4条回答
  •  自闭症患者
    2020-12-05 20:24

    You need to inherit from PdfPageEventHelper class and override the methods shown in the code snippet below:

    Document doc = new Document(PageSize.A4.Rotate());        
    
    using (MemoryStream ms = new MemoryStream())
    {
      PdfWriter writer = PdfWriter.GetInstance(doc, ms);
      PageEventHelper pageEventHelper = new PageEventHelper();
      writer.PageEvent = pageEventHelper;
    }
    
     public class PageEventHelper : PdfPageEventHelper
        {
            PdfContentByte cb;
            PdfTemplate template;
    
    
            public override void OnOpenDocument(PdfWriter writer, Document document)
            {
                cb = writer.DirectContent;
                template = cb.CreateTemplate(50, 50);
            }
    
            public override void OnEndPage(PdfWriter writer, Document document)
            {
                base.OnEndPage(writer, document);
    
                int pageN = writer.PageNumber;
                String text = "Page " + pageN.ToString() + " of ";
                float len = this.RunDateFont.BaseFont.GetWidthPoint(text, this.RunDateFont.Size);
    
                iTextSharp.text.Rectangle pageSize = document.PageSize;
    
                cb.SetRGBColorFill(100, 100, 100);
    
                cb.BeginText();
                cb.SetFontAndSize(this.RunDateFont.BaseFont, this.RunDateFont.Size);
                cb.SetTextMatrix(document.LeftMargin, pageSize.GetBottom(document.BottomMargin));
                cb.ShowText(text);
    
                cb.EndText();
    
                cb.AddTemplate(template, document.LeftMargin + len, pageSize.GetBottom(document.BottomMargin));
            }
    
            public override void OnCloseDocument(PdfWriter writer, Document document)
            {
                base.OnCloseDocument(writer, document);
    
                template.BeginText();
                template.SetFontAndSize(this.RunDateFont.BaseFont, this.RunDateFont.Size);
                template.SetTextMatrix(0, 0);
                template.ShowText("" + (writer.PageNumber - 1));
                template.EndText();
            }
        }
    

提交回复
热议问题