当前位置: 首页 > 编程语言 > C#

将参数传递给重写的OnEndPage方法分享

时间:2023-04-11 11:14:49 C#

C#学习教程:将参数传递给重写的OnEndPage方法text.pdf.PdfPageEventHelper{publicoverridevoidOnEndPage(PdfWriterwriter,Documentdoc,intparametro){PdfPTableheaderTbl=newPdfPTable(1);headerTbl.TotalWidth=doc.PageSize.Width;图片标识=Image.GetInstance("logo.png");标识.ScalePercent(42);PdfPCellcell=newPdfPCell(logo);cell.Horizo??ntalAlignment=Element.ALIGN_LEFT;cell.PaddingRight=52;单元格.边框=0;headerTbl.AddCell(单元格);headerTbl.WriteSelectedRows(0,-1,0,(doc.PageSize.Height-10),writer.DirectContent);PdfPTableheaderrow=newPdfPTable(7);headerrow.TotalWidth=570f;headerrow.LockedWidth=true;headerrow.AddCell(newPhrase("TIPODOCUMENTO",newFont(Font.FontFamily.HELVETICA,6f)));headerrow.WriteSelectedRows(0,-1,0,(doc.PageSize.Height-50),writer.DirectContent);这就是我所说的:vardoc=newDocument(PageSize.A4,10,10,170,10);pdfPagepage=newpdfPage();PdfWriterpdfWriter=PdfWriter.GetInstance(doc,newFileStream("test.pdf",FileMode.Create));pdfWriter.PageEvent=page.OnEndPage(pdfWriter,doc,1234);进一步补充布鲁诺所说的,如果你想向PdfPageEventHelper添加额外的信息,可以添加额外的属性:放;}publicoverridevoidOnEndPage(PdfWriterwriter,Documentdoc){//...}}然后:varpage=newpdfPage();page.parametro=40;pdfWriter.PageEvent=页面;或者只是:pdfWriter.PageEvent=newpdfPage(){parametro=40};如果你想“每页”有效地改变这个,你需要将逻辑移动到这个类而不是调用主体page.OnEndPage(returnvoidegno。这意味着pdfWriter.PageEvent=page.OnEndPage(pdfWriter,doc,1234);设置为null,但PageEvent不能设置为null,因为它不可为null,因此它会中断。如果方法签名是publicoverrideipdfpageeventOnEndPage,它将起作用。这是一篇关于PageEvent的文章有一个方法writer.setPageEvent();您在这一行中犯了一个语法错误:publicoverridevoidOnEndPage(PdfWriterwriter,Documentdoc,intparameter)原来的OnEndPage()方法有两个参数。覆盖它时,只能使用两个参数。如果添加一个参数,该方法不是被覆盖,而是被重载。请参阅UCSantaCruz网站上的“覆盖与重载”页面。很难理解您试图通过重载该方法来实现什么,因为在iTextSharp的核心内部调用了OnEndPage()。iTextSharp无法猜测参数是什么。您必须重写iTextSharp的内部代码才能使其工作。正如LUIFA已经解释过的,这也是错误的:pdfWriter.PageEvent=page.OnEndPage(pdfWriter,doc,1234);它应该是:pdfWriter.PageEvent=page;但是:无论发生什么,您的OnEndPage()方法的重载版本都不会被调用,原因对于了解重写方法和重载方法之间区别的人来说应该是显而易见的。这个答案说明你的代码是错误的。您需要将publicoverridevoidOnEndPage(PdfWriterwriter,Documentdoc,intparametro)替换为publicoverridevoidOnEndPage(PdfWriterwriter,Documentdoc)并替换pdfWriter.PageEvent=page.OnEndPage(pdfWriter,doc,1234);与:pdfWriter。页面事件=页面;现在创建一个新问题来解释你想用参数做什么,因为现在你已经将它添加为参数,但我们没有看到你在任何地方使用这个参数。以上就是C#学习教程的全部内容:给重写的OnEndPage方法传递参数。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注——publicclasspdfPage:iTextSharp.text.pdf.PdfPageEventHelper{privatelongOrderId;私有字符串电话号码;//构造函数publicInvoicePdfEvents(longorderId,stringphoneNumber){OrderId=orderId;电话号码=电话号码;}publicoverridevoidOnEndPage(PdfWriter//writer){使用值//OrderId和PhoneNumber//...}}publicclassCreatePDF{privatevoidGenerateCreatePDF(OrderListingInfoorderDetail,stringcontain){vardoc=newDocument(PageSize.A4,10,10,170,10);pdfPagepage=newpdfPage();PdfWriterpdfWriter=PdfWriter.GetInstance(doc,newFileStream("test.pdf",FileMode.Create));intorderID=123456789;stringphoneNumber="+01123456789"pdfWriter.PageEvent=page.OnEndPage(pdfWriter,doc,orderID,phoneNumber);}}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: