我正在使用WinForms应用程序,该应用程序使用ReportViewer控件显示一些Reporting Services报告.在这些屏幕上,我们允许用户通过调用ReportViewer上的PrintDialog()方法来打印报表,如下所示:

_reportViewer.PrintDialog();

这在大多数情况下工作正常,它会打开标准的Windows打印对话框,用户选择要打印的打印机,然后进行打印.但是,当用户选择使用“Adobe PDF”打印到PDF时,它会抛出Win32Exception:指定的数据类型无效.用于选择保存pdf的位置的文件对话框甚至都没有出现.

这仅适用于Adobe PDF打印机.我安装了NitroPDF并使用了他们的PDF打印机,它没有问题.

有没有人知道可能导致这种情况发生的原因?

编辑:

这是堆栈跟踪:

at System.Drawing.Printing.StandardPrintController.OnStartPrint(PrintDocument document, PrintEventArgs e)

at System.Windows.Forms.PrintControllerWithStatusDialog.OnStartPrint(PrintDocument document, PrintEventArgs e)

at System.Drawing.Printing.PrintController.Print(PrintDocument document)

at System.Drawing.Printing.PrintDocument.Print()

at Microsoft.Reporting.WinForms.ReportViewer.PrintDialog(PrinterSettings printerSettings)

at Microsoft.Reporting.WinForms.ReportViewer.PrintDialog()

解决方法:

这并没有真正解决问题,而是在用户眼中解决了这个问题.

捕获PDF打印机抛出的错误,然后调用Reporting Services中内置的导出到PDF功能.即使打印到PDF打印机,它也不会在Winforms中出错.从用户的角度来看,他们像平常一样“打印到pdf”,体验是相同的.这是一个有效的工作.

标签:c,pdf,winforms,reporting-services

来源: https://codeday.me/bug/20190606/1189311.html

c# printdialog 打印html,c# – ReportViewer.PrintDialog()在打印到Adobe PDF时抛出异常相关推荐

  1. .NET环境下有关打印页面设置、打印机设置、打印预览对话框的实现

    原文:.NET环境下有关打印页面设置.打印机设置.打印预览对话框的实现 我个人认为,开发MIS,首先就得解决网格的问题,而开发工具为我们提供了如DataGrid.MSHFlexGrid的控件.其次,是 ...

  2. .NET环境下有关打印页面设置、打印机设置、打印预览对话框的实现与应用(1)

    From: http://blog.csdn.net/flygoldfish/article/details/77208 .NET环境下有关打印页面设置.打印机设置.打印预览对话框的实现 我个人认为, ...

  3. .Net环境下有关打印页面设置、打印机设置、打印预览对话框的实现(开源)---转

    作者:周方勇 我个人认为,开发MIS,首先就得解决网格的问题,而开发工具为我们提供了如DataGrid.MSHFlexGrid的控件.其次,是打印的问题,将业务单据与数据报表打印出来.可想而知,即使一 ...

  4. php前面有人排队,PHP实现打印类(实现队列排队打印)

    class Wprint{ //收集打印代码 private $data = array(); //处理打印代码 private $handle; public function __construc ...

  5. 邮件 自动打印 linux,Unix / Linux基本实用程序-打印,电子邮件

    Unix / Linux基本实用程序-打印,电子邮件 在本章中,我们将详细讨论作为Unix的基本实用程序的Printing and Email.到目前为止,我们已经尝试了解Unix OS及其基本命令的 ...

  6. java线程 打印_Java多线程实战之交叉打印的两种方法

    要求效果:先打印5次"printA-",再打印5次"printB-",每次打印间隔1秒,重复循环20次 方式一:使用wait()和notifyAll()方法 p ...

  7. Java:写2个线程,其中一个线程打印1-52,另一个线程打印A-Z,打印顺序应该是12A34B56C...5152Z。

    写2个线程,其中一个线程打印1-52,另一个线程打印A-Z,打印顺序应该是12A34B56C...5152Z 多线程编程:使用Runnable接口实例创建线程.使用线程等待方法wait(): pack ...

  8. Adobe Acrobat 9.0“ PDFMaker无法找到Adobe PDF Printer 的打印驱动程序”解决办法

    [问题症状] 安装Adobe Acrobat Perfessional 9.0后,office工具栏中会显示两个按钮.正常情况下,可以点击按钮直接将当前的office文档转化为pdf文档,同样IE工具 ...

  9. 利用lodop打印控件轻松实现批量打印

    最近在做一个打印程序,要实现批量打印功能,在网上找了很多天,也在tp官网咨询大牛们,对大家的的提议我一一进行了研究,总结如下: 要实现批量打印可以有两个办法: 一是利用专业的报表程序,能实现十分复杂的 ...

最新文章

  1. python的基本语句_Python的基本语句
  2. mysqlevent每天,附答案
  3. Hadoop文件系统常用命令
  4. mysql十大报错_MySQL十大报错函数
  5. 皇牌空战无限服务器,《皇牌空战:无限》正式停服 一个搏击长空的时代终结[多图]...
  6. 计算机基础知识表格加密管理,【事业单位考试】计算机网络知识:数据加密技术之密钥管理...
  7. 【项目管理】人力资源计划和组建项目团队
  8. Mike and Chocolate Thieves(CF #361 Div. 2)
  9. [haoi2009]毛毛虫 树形dp
  10. mysql实现分组查询每个班级的前三名、每门课程的前三名
  11. 【BZOJ5316】【JSOI2018】绝地反击
  12. android 360度全景,android 360度全景展示
  13. python visual studio jetbrain_jetbrain系列IDE设置
  14. 装了svn桌面右键没有_右键菜单没有svn选项怎么办|win7 svn没有右键菜单怎么解决|svn添加到右键菜单方法...
  15. Python识别二维码条形码?用pyzbar一招搞掂(含代码)
  16. 8个提高摸鱼效率的python自动化脚本,提高打工人幸福感~
  17. 南京航空航天大学计算机考研经验分享,南京航空航天大学计算机考研试题.pdf...
  18. 求不定积分的系列题型(一)
  19. Unit 2: Linux/Unix Acquisition 2.1 Linux/Unix Acquistion Memory Acquisition
  20. 在群晖上使用小米或者360随身WiFi

热门文章

  1. 完美的背景图全屏css代码 – background-size:cover?
  2. java正则手机号_Java正则替换手机号代码实例
  3. 东华大学 oj37——黑色星期五
  4. 以下哪些Linux命令可以重启计算机的是,linux重启命令
  5. MIPS RAM实验设计
  6. 微软ERP Axapta 开发环境编辑器的快捷键大全
  7. OriginLab-Pro(学生免费注册方法)
  8. 视频、音乐播放器大家都听说过,那么图片播放器呢
  9. John Pitts:BSV网络的价值可能是个“天文数字”
  10. Qt + FFmpeg 视频播放器