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

打印PDF创建共享

时间:2023-04-10 12:02:55 C#

使用itextsharp打印PDF使用itextsharp创建我的目标是在客户端计算机上打印RDLC报告而不预览它。我无法使用ReportViewer打印按钮,因为它需要安装ActiveX对象并且没有权限。因此,我使用ITextSharp从呈现的LocalReport返回的字节数组创建PDF,并添加用于打印的javascript。在调试过程中,我可以看到PDF已生成并且有2页,一切正常。我没有收到任何错误,函数正常退出,但不打印。我做错了什么,或者我错过了什么?这是我的代码:stringjsPrint="varpp=this.getPrintParams();pp.interactive=pp.constants.interactionLevel.silent;this.print(pp);";byte[]bytes=report.Render("PDF",null,outmimeType,outencoding,outextension,outstreams,outwarnings);使用(MemoryStreamms=newMemoryStream()){文档doc=newDocument();PdfWriterwriter=PdfWriter.GetInstance(doc,ms);doc.SetPageSize(PageSize.A4);文档.Open();PdfContentBytecb=writer.DirectContent;PdfImportedPage页面;PdfReader阅读器=newPdfReader(bytes);intpages=reader.NumberOfPages;for(inti=1;i<=pages;i++){doc.SetPageSize(PageSize.A4);文档.NewPage();page=writer.GetImportedPage(读者,我);cb.AddTemplate(页面,0,0);}PdfActionjAction=PdfAction.JavaScript(jsPrint,writer);writer.AddJavaScript(jAction);文档.Close();}谢谢。关于您关于PdfStamper的问题(在评论中)。它应该像这样简单:stringjsPrint="varpp=this.getPrintParams();pp.interactive=pp.constants.interactionLevel.silent;this.print(pp);";PdfReader阅读器=newPdfReader(bytes);MemoryStream流=新的MemoryStream();PdfStamperstamper=newPdfStamper(pdfReader,stream);stamper.Writer.AddJavaScript(jsPrint);压模。关闭();读者。关闭();关于您的原始问题:自动打印PDF文档被认为存在安全风险:PDF可以发送给最终用户,并且PDF会导致打印机喷出页面。过去可以使用(真正)旧的PDF查看器,但现代查看器阻止了这种情况的发生。换句话说:你可能正在努力满足过去的要求。今天的PDF查看器总是需要最终用户执行操作才能打印PDF文档。以上就是C#学习教程:打印PDF和使用itextsharp创建分享的全部内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右边联系管理员删除。如需转载请注明出处: