1

如何在 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

     }
}
4

3 回答 3

0

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

于 2013-11-08T10:05:45.083 回答
0

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

类_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);
 }

公共虚拟字符串 pintaTitulo() { return "000"; }

}

接着:

class _EventsInherited : _Events
{
    public _EventsInherited(){}

    public override string pintaTitulo()
    {
        return "subTitle"; 
    }
}

并将文档类订阅到:_EventsInherited

于 2013-11-08T15:10:14.183 回答
0

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

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

    Dictionary<Page, Document>.

你如何调用代码?

于 2013-11-07T23:24:38.860 回答