gpt4 book ai didi

itextsharp - 如何通过 Itextsharp 在 PDF 的页脚中添加页码

转载 作者:行者123 更新时间:2023-12-04 01:45:08 29 4
gpt4 key购买 nike

我在 ASP.NET 代码中使用 iTextSharp DLL。我正在将数据提取到数据集中并将数据集添加到 PDF 表中。

如果我的数据集有更多 100 行,那么 100 行将添加到 PDF 表中,并在 PDF 文件中创建 3 或 4 页。

如何在每个页面中添加页脚?

最佳答案

您需要从 PdfPageEventHelper 类继承并覆盖以下代码片段中显示的方法:

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 - 如何通过 Itextsharp 在 PDF 的页脚中添加页码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10515548/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com