将参数传递给重写的OnEndPage方法 [英] Passing a parameter to an overridden OnEndPage method
问题描述
我需要将参数传递给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屋!