如何使用iTextSharp 5.0.4编写页脚

时间:2010-10-19 12:49:18

标签: c# itextsharp

我正在尝试使用ITextSharp库5.0.4编写页脚,但由于OnEndPage和OnClosePage未被调用,因此无法打印页码。

这是一个简单的控制台应用程序,我打印表格以生成几页并期望OnEndPage或OnClosePage被调用,一旦document.close()方法被执行,我的代码将被执行。

请让我知道这有什么问题?

2 个答案:

答案 0 :(得分:3)

我发现如何使用页码和图像创建页脚而没有任何复杂情况。 i-m使用itextsharp 5.1.2。这很容易。 第1步:在APP_Code中创建一个.cs文件,名称为...在我的情况下为“pdfPage.cs” 第2步:复制并粘贴此代码:

using System;
using System.Collections.Generic;
using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Text;
using System.IO;
using System.Xml;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using iTextSharp.text;
using iTextSharp.text.pdf;
using iTextSharp.text.html.simpleparser;
using System.Collections;
using System.Net;


namespace myApp.ns.pages

{
   public class pdfPage : iTextSharp.text.pdf.PdfPageEventHelper
   {

       public override void OnEndPage(PdfWriter writer, Document doc)
       {

           BaseColor grey = new BaseColor(128, 128, 128);
           Font font = FontFactory.GetFont("Arial", 9, Font.NORMAL, grey);
           //tbl footer
            PdfPTable footerTbl = new PdfPTable(1);
            footerTbl.TotalWidth = doc.PageSize.Width;
           //img footer
            iTextSharp.text.Image foot= iTextSharp.text.Image.GetInstance(HttpContext.Current.Server.MapPath("footer.jpg"));
            foot.ScalePercent(45);

            footerTbl.HorizontalAlignment = Element.ALIGN_CENTER;
            PdfPCell cell = new PdfPCell(foot);
            cell.HorizontalAlignment = Element.ALIGN_CENTER ;
            cell.Border = 0;
            footerTbl.AddCell(cell);


            //page number
            Chunk myFooter = new Chunk("Page " +  (doc.PageNumber), FontFactory.GetFont(FontFactory.HELVETICA_OBLIQUE, 8, grey));
            PdfPCell footer = new PdfPCell(new Phrase(myFooter));    
            footer.Border = Rectangle.NO_BORDER;    
            footer.HorizontalAlignment = Element.ALIGN_CENTER; 
            footerTbl.AddCell(footer); 

         //this is for the position of the footer ... im my case is "+80"
         footerTbl.WriteSelectedRows(0,-1, 0, (doc.BottomMargin + 80),  writer.DirectContent);
       }

    }

}

并保存。

最后一步:写入.cs文件,在开头创建pdf“using myApp.ns.pages;”。

这就是全部

答案 1 :(得分:2)

您需要创建一个扩展PdfPageEventHelper的类并覆盖OnStartPage和OnEndPage。使用此助手类来处理PageEvent中的PdfWriter

Massoud Mazar的博文Code sample for using iTextSharp PDF library有一个很好的例子。

如果您这样做但仍有问题,请发布一些代码。