将参数传递给重写的OnEndPage方法 [英] Passing a parameter to an overridden OnEndPage method

查看:692
本文介绍了将参数传递给重写的OnEndPage方法的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要将参数传递给OnEndPage方法的重写版本,当我声明参数时我没有得到任何错误但是当我调用该方法时它告诉我不能隐式地将void转换为itextsharp。 text.pdf.ipdfpageevent

I need to pass a parameter to an overridden version of the "OnEndPage" method, when i declare the parameter i don't get any error but when i call the method it tells me that "cannot implicitly convert void to itextsharp.text.pdf.ipdfpageevent"

这是我的OnEndPage方法:

This is my OnEndPage method:

  public class pdfPage : iTextSharp.text.pdf.PdfPageEventHelper
{           
    public override void OnEndPage(PdfWriter writer, Document doc, int parametro)
    {
        PdfPTable headerTbl = new PdfPTable(1);

        headerTbl.TotalWidth = doc.PageSize.Width;

        Image logo = Image.GetInstance("logo.png");

        logo.ScalePercent(42);

        PdfPCell cell = new PdfPCell(logo);

        cell.HorizontalAlignment = Element.ALIGN_LEFT;

        cell.PaddingRight = 52;

        cell.Border = 0;

        headerTbl.AddCell(cell);

        headerTbl.WriteSelectedRows(0, -1, 0, (doc.PageSize.Height - 10), writer.DirectContent);

        PdfPTable headerrow = new PdfPTable(7);
        headerrow.TotalWidth = 570f;
        headerrow.LockedWidth = true;
        headerrow.AddCell(new Phrase("TIPO DOCUMENTO", new Font(Font.FontFamily.HELVETICA, 6f)));

        headerrow.WriteSelectedRows(0, -1, 0, (doc.PageSize.Height - 50), writer.DirectContent);
    }
}

这就是我的称呼方式:

 var doc = new Document(PageSize.A4, 10, 10, 170, 10);
        pdfPage page = new pdfPage();
        PdfWriter pdfWriter = PdfWriter.GetInstance(doc, new FileStream( "test.pdf", FileMode.Create));
        pdfWriter.PageEvent = page.OnEndPage(pdfWriter, doc, 1234);


推荐答案

进一步补充Bruno所说的,如果你想要的话要向 PdfPageEventHelper 添加其他信息,您只需添加其他属性:

To further add to what Bruno said, if you want to add additional information to your PdfPageEventHelper you can just add additional properties:

public class pdfPage : iTextSharp.text.pdf.PdfPageEventHelper
{           
    public int parametro { get; set; }
    public override void OnEndPage(PdfWriter writer, Document doc)
    {
        //...
    }
}

然后:

var page = new pdfPage();
page.parametro = 40;
pdfWriter.PageEvent = page;

或者只是:

pdfWriter.PageEvent = new pdfPage() { parametro = 40 };

如果你想改变这个有效的每页,你将需要移动你的逻辑进入这个类而不是调用体。

If you want to change this valid "per page", you're going to need to move your logic into this class instead of the calling body.

这篇关于将参数传递给重写的OnEndPage方法的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆