【问题标题】:PrintTicket provider failed to bind to printer. Win32 error: The printer name is invalidPrintTicket 提供程序无法绑定到打印机。 Win32错误:打印机名称无效
【发布时间】:2015-02-12 17:46:24
【问题描述】:

我正在尝试在 WPF 应用程序中打印之前显示一个打印对话框。我正在使用来自 link

的 Microsoft 示例代码
// Create the print dialog object and set options
PrintDialog pDialog = new PrintDialog();
pDialog.PageRangeSelection = PageRangeSelection.AllPages;
pDialog.UserPageRangeEnabled = true;

// Display the dialog. This returns true if the user presses the Print button.
Nullable<Boolean> print = pDialog.ShowDialog();

它在最后一行崩溃,但有以下异常:

PrintTicket 提供程序无法绑定到打印机。 Win32 错误: 打印机名称无效。

我尝试搜索解决方案,人们建议的两个解决方案是安装打印机服务器功能,并切换到任何 CPU 构建,但这些都不适用于我的情况。

【问题讨论】:

  • 您尝试过的每台打印机都会出现这种情况吗?我遇到了特定于打印机的问题;所以这也是需要注意的事情。

标签: c# wpf winapi printing printdialog


【解决方案1】:

我创建了另一个空白项目,仅使用来自 Microsoft 的代码,它运行良好。我开始比较两个项目设置,它们是相同的。最后发现是以下设置导致了问题:

Debug->Exceptions...-公共语言运行时异常

我忘记了在排除其他问题时我已经打开了它。一旦我取消选中它,我的程序将不再因异常而中断,并正确显示对话框。

【讨论】:

  • 对于那些读过这篇文章的人——有一些低级异常会在系统级别被抛出,只有在捕获所有异常时才能看到这些异常。我的一般经验法则是,如果打印机打印出您所期望的内容,那么不要担心 mscorlib 之类的异常抛出。我个人在我的应用程序中看到了 ThreadSafeHandle 异常。
  • 换句话说,答案是“不要惊慌”?
猜你喜欢
  • 1970-01-01
  • 2013-03-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多