如何判断打印机是否支持打印到文件?

6
我有一个使用 .Net 2.0 编写的应用程序(C#),其中包含一个组件作为服务运行,并提供一个 UI 用于配置该服务。
该 UI 提供了一种方法,供用户选择将要由该服务使用的打印机。
我希望该 UI 可以过滤掉任何已被配置为打印到文件的打印机,因为这些打印机会给服务带来问题(会弹出“另存为”对话框,但因为它属于服务,所以是不可见的)。
问题在于我找不到任何检测打印机是否设置为打印到文件的方法。
System.Drawing.Printing.PrinterSettings 有一个名为 PrintToFile 的属性,但它总是设置为 false!

1
一个真正的打印机可能会显示“请放更多纸” - 基本上,任何打印机都有可能要显示用户界面。 - Damien_The_Unbeliever
是的,我的佳能打印机喜欢弹出一些进度条和对话框。 - J-16 SDiZ
此外,我认为大多数打印机是基于每个用户安装的 - 而服务往往在机器帐户下运行 - 因此服务可能无法访问打印机。 - Damien_The_Unbeliever
感谢您的评论,但是您提到的消息不会在创建打印作业时显示 - 它们在实际打印过程中显示。因此,这些消息将显示给已登录的用户(如果有),而不是在生成作业的进程上下文中显示。 - user1483326
1个回答

1

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

希望这解决了您的问题。


谢谢您的建议,但它并没有帮助到我。我需要知道打印机是否已经通过打印机属性配置为打印到文件。而且在发送新的打印作业之前,我需要知道这一点。此外,有一些应用程序会添加一个虚拟打印机以便打印到PDF - 我想知道如何检测它们!从迄今为止的回复来看,似乎无法做到这一点。 - user1483326
首先回答你问题的第二部分:请使用“System.Drawing.Printing.PrinterSettings.installedprinters”属性。它可以获取已安装打印机的集合。您可以使用已安装打印机名称的集合,为用户提供打印选择。对于你问题的第一部分,请检查PrinterSettings类是否适用于你。 - mrd

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接