本文介绍了如何在Itextsharp中以PDF格式在页脚中添加页码的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我在ASP.NET代码中使用iTextSharp DLL。我正在将数据提取到数据集中并将数据集添加到PDF表中。
I am using iTextSharp DLL in ASP.NET code. I am fetching a data into dataset and Add the dataset into PDF table.
如果我的数据集有100行,那么将在PDF表格中添加100行,并在PDF文件中创建3或4页。
If my dataset have more 100 rows then 100 rows will be added into PDF table and 3 or 4 page will be created in PDF file.
如何在每个页面中添加页脚?
How can I add the footer in each page?
推荐答案
您需要从PdfPageEventHelper类继承并覆盖下面代码段中显示的方法:
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();
}
}
这篇关于如何在Itextsharp中以PDF格式在页脚中添加页码的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!