【问题标题】:How can I tell if a printer will print to file?如何判断打印机是否会打印到文件?
【发布时间】:2012-06-26 16:07:09
【问题描述】:

我有一个 .net 2.0 应用程序 (c#),其中一个组件作为服务运行,还有一个用于配置服务的 UI。

UI 为用户提供了一种选择服务将使用的打印机的方法。

我希望 UI 过滤掉任何配置为打印到文件的打印机,因为这些打印机会导致服务出现问题(“另存为”对话框将打开,但该对话框不可见,因为它属于服务)。

问题是我找不到任何方法来检测设置为打印到文件的打印机。

System.Drawing.Printing.PrinterSettings 有一个名为 PrintToFile 的属性,但它始终设置为 false!

【问题讨论】:

  • 真正的打印机可能会显示“请装入更多纸张”——基本上,任何打印机可能都想显示 UI。
  • 是的,我的大炮打印机喜欢弹出一些进度条和对话框
  • 除此之外,我相信大多数打印机都是按用户安装的 - 而服务往往在机器帐户下运行 - 因此服务可能无论如何都无法访问打印机。
  • 感谢 cmets,但您提到的消息在创建打印作业时不会显示 - 它们会在实际打印过程中显示。因此,这些消息将显示给已登录的用户(如果有的话),而不是在假脱机作业的进程的上下文中。

标签: c# .net printing io


【解决方案1】:

PrinterSettings.PrintToFile 只能由 System.Windows.Forms.Printing.PrintDialog 类设置。打印到文件选项仅在 System.Windows.Forms.Printing.PrintDialog.AllowPrintToFile 属性设置为 true 时出现在 System.Windows.Forms.Printing.PrintDialog 上。

希望能解决您的问题。

【讨论】:

  • 感谢您的建议,但这对我没有帮助。我需要知道是否已经通过打印机属性配置了打印机以打印到文件。在发送新的打印作业之前,我需要知道这一点。此外,还有一些应用程序“在那里”添加了用于打印到 PDF 的虚拟打印机 - 我也想知道如何检测它们!从目前的回复来看,好像做不到。
  • 首先回答您问题的第二部分:请使用“System.Drawing.Printing.PrinterSettings.installedprinters”属性。它获取已安装打印机的集合。您可以使用已安装打印机名称的集合为用户提供要打印到的打印机选择。对于您问题的第一部分,请检查 PrinterSettings 类是否适合您。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-11
  • 2012-03-05
  • 2012-11-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多