创建页脚#of#

时间:2014-02-14 06:31:56

标签: c#-4.0 itextsharp

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

如何在每个页面中添加页脚? 页脚应该是第1页,共10页,10,....,10,10。 如何计算每页中的总页数。 随着数据的增加,pdf页面的数量可能会增加。

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();
  }

   }

0 个答案:

没有答案