如何在 iTextSharp 事件处理程序 OnStarPage 中获取对象发送器?
class _Events : PdfPageEventHelper
{
public override void OnStartPage(PdfWriter writer, Document document)
{
base.OnStartPage(writer, document);
Paragraph paragraph = new Paragraph("TITULO DE TODOS LOS REPORTESnn", FontFactory.GetFont("Arial", 9, iTextSharp.text.Font.BOLD));
paragraph.Alignment = Element.ALIGN_CENTER;
document.Add(paragraph);
//I NEED THE OBJECT HERE
}
}
由于您无法更改方法签名,因此您需要另一种机制来显示哪个页面发送了文档。
一种愚蠢但相当有效的方法是将字典保留在某个共享对象中,该对象将页面映射到文档。
Dictionary<Page, Document>.
你如何调用代码?
在_Events
类中创建参数。 将类的名称作为构造函数的参数传递给事件处理程序。
我终于解决了。如果有人需要:
类 _Events : PdfPageEventHelper{
public override void OnStartPage(PdfWriter writer, Document document)
{
base.OnStartPage(writer, document);
Paragraph paragraph = new Paragraph("GENERAL TITLEnn", FontFactory.GetFont("Arial", 9, iTextSharp.text.Font.BOLD));
paragraph.Alignment = Element.ALIGN_CENTER;
document.Add(paragraph);
paragraph = new Paragraph(pintaTitulo(), FontFactory.GetFont("Arial", 9, iTextSharp.text.Font.BOLD));
document.Add(paragraph);
}
public virtual string pintaTitulo() { return "000"; }
}
然后:
class _EventsInherited : _Events
{
public _EventsInherited(){}
public override string pintaTitulo()
{
return "subTitle";
}
}
并将文档类绑定到: _EventsInherited