我正在使用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. java数组 相同颜色距离最远的_java-数组列表并找到具有相同编号的最长子...
  2. air java_Air 调用本地化java程序
  3. 腾讯 Web UI 解决方案 QMUI Web —— 探索与沉淀
  4. java判断对象已死_Java的JVM判断对象已死的基本算法分析
  5. 将安全信息应用到以下对象时发生错误 拒绝访问_手机资讯:拒绝「京东金融」事件再次发生|如何避免iPhone 应用私自获取照片...
  6. access control java_Java Access Controller
  7. thymealf如何实现传单个变量给html_50个关于IPython的奇技淫巧
  8. 一个应用程序中最多只能有一个窗口java_在Windows 中,同时显示多个应用程序窗口的正确方法是 ______ 。_学小易找答案...
  9. 不属于python标准库的是_下列哪项不是Python标准库中处理到程序中参量的模块?...
  10. Unix操作系统常用命令
  11. 新版vip在线解析html源码
  12. Python函数练习题
  13. python下载urllib3_使用urllib3下载网页
  14. 彩色证件照片常用的红色、蓝色背景颜色值
  15. mysql数据库data没有新创建_如何从pandas datafram在MySQL数据库中创建新表
  16. Project(1)——创建数据库、实体类、用户注册的持久层
  17. 描述12个异性追求者(互动媒体技术作业)
  18. 【设计模式11】备忘录和解释器模式 SpelExpressionParser
  19. 浅析编程及类的本质、类的抽象
  20. 功夫熊猫:电子病历评级概述——总论

热门文章

  1. Web端即时通讯、消息推送的实现
  2. 阿里云态势感知以及安骑士分析
  3. mysql索引原理及查询优化
  4. 2022年全球与中国99.999%纯度氧化亚氮行业市场需求预测与投资战略规划分析报告
  5. 分享已个根据电影名称 下载电影海报的插件
  6. java计算机毕业设计冠军体育用品购物网站源码+mysql数据库+系统+lw文档+部署
  7. mysql 不同端口_mysql不同端口的连接
  8. Java开发多、单商户淘宝客+任务系统cps系统源码小程序app
  9. 批量将一个或多个 Word 文件按固定页数拆分成多个 Word 文件
  10. 消息中间件ActiveMQ 5:可持久化方式AMQ和KahaDB