如何在itext事件处理程序上引用发送方

时间:2013-11-07 22:45:01

标签: c# events event-handling itextsharp

如何在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 REPORTES\n\n", FontFactory.GetFont("Arial", 9, iTextSharp.text.Font.BOLD));
        paragraph.Alignment = Element.ALIGN_CENTER;
        document.Add(paragraph);
      //I NEED THE OBJECT HERE

     }
}

3 个答案:

答案 0 :(得分:0)

由于您无法更改方法签名,因此您需要另一种机制来显示发送文档的页面。

一种愚蠢但相当有效的方法是将字典保存在将页面映射到文档的某个共享对象中。

    Dictionary<Page, Document>.

你是如何调用代码的?

答案 1 :(得分:0)

_Events课程中创建参数。将类的名称作为构造函数的参数传递给事件处理程序。

答案 2 :(得分:0)

我终于解决了。如果有人需要它:

class _Events:PdfPageEventHelper {

public override void OnStartPage(PdfWriter writer, Document document)
{
    base.OnStartPage(writer, document);
    Paragraph paragraph = new Paragraph("GENERAL TITLE\n\n", 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