我正在尝试使用ITextSharp库5.0.4编写页脚,但由于OnEndPage和OnClosePage未被调用,因此无法打印页码。
这是一个简单的控制台应用程序,我打印表格以生成几页并期望OnEndPage或OnClosePage被调用,一旦document.close()方法被执行,我的代码将被执行。
请让我知道这有什么问题?
答案 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有一个很好的例子。
如果您这样做但仍有问题,请发布一些代码。