C# 是否将带有页码的页脚添加到itextsharp pdf-RunDateFont?
我使用这里提供的代码创建一个页眉和页脚,并使用iTextSharp进行页面编号。Visual Studio特别指出,“PageEventHelper”不包含“RunDateFont”的定义,并且找不到接受“PageEventHelper”类型的第一个参数的扩展方法“RunDateFont”(是否缺少using指令或程序集引用?) 我错过了什么 以下是我的代码的简化版本:C# 是否将带有页码的页脚添加到itextsharp pdf-RunDateFont?,c#,pdf-generation,itextsharp,C#,Pdf Generation,Itextsharp,我使用这里提供的代码创建一个页眉和页脚,并使用iTextSharp进行页面编号。Visual Studio特别指出,“PageEventHelper”不包含“RunDateFont”的定义,并且找不到接受“PageEventHelper”类型的第一个参数的扩展方法“RunDateFont”(是否缺少using指令或程序集引用?) 我错过了什么 以下是我的代码的简化版本: namespace MyWebApp { public partial class _Default : Page
namespace MyWebApp {
public partial class _Default : Page
{
protected void Button_Click(object sender, EventArgs e)
{
using (MemoryStream myMemoryStream = new MemoryStream())
{
Document document = new iTextSharp.text.Document();
PdfWriter myPDFWriter = PdfWriter.GetInstance(document, myMemoryStream);
PageEventHelper pageEventHelper = new PageEventHelper();
myPDFWriter.PageEvent = pageEventHelper;
var response = HttpContext.Current.Response;
response.Clear();
response.ContentType = "application/pdf";
// myPDFWriter.PageEvent = new Footer();
document.Open();
document.Add(clienttable);
document.NewPage();//page break OR New Page
document.Add(new Paragraph("This is a second page."));
document.Close();
byte[] content = myMemoryStream.ToArray();
myPDFWriter.Flush();
response.OutputStream.Write(myMemoryStream.GetBuffer(), 0, myMemoryStream.GetBuffer().Length);
response.OutputStream.Flush();
response.OutputStream.Close();
response.End();
}
}
// some other functions
}
public class PageEventHelper : PdfPageEventHelper
{
PdfContentByte cb;
PdfTemplate template;
public override void OnOpenDocument(PdfWriter myPDFWriter, Document document)
{
cb = myPDFWriter.DirectContent;
template = cb.CreateTemplate(50, 50);
}
public override void OnEndPage(PdfWriter myPDFWriter, Document document)
{
base.OnEndPage(myPDFWriter, document);
int pageN = myPDFWriter.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 myPDFWriter, Document document)
{
base.OnCloseDocument(myPDFWriter, document);
template.BeginText();
template.SetFontAndSize(this.RunDateFont.BaseFont, this.RunDateFont.Size);
template.SetTextMatrix(0, 0);
template.ShowText("" + (myPDFWriter.PageNumber - 1));
template.EndText();
}
}
PdfPageEventHelper
没有属性,只有方法。因此,错误是准确的。在不使用该属性的情况下,请查看此错误。RunDateFont
只是一个任意自定义类/结构,用于保存某人的运行时配置数据。没有特定于它的iText,只是它碰巧公开了iText类型的属性。整个类可以只是局部变量。我建议您在文档上进行两次传递,一次传递文本,一次传递页眉和页脚。请参阅,其中显示了如何避免使用事件。