检查打印机是不是支持 postscript

Posted

技术标签:

【中文标题】检查打印机是不是支持 postscript【英文标题】:Check if printer supports postscript检查打印机是否支持 postscript 【发布时间】:2018-02-28 09:51:06 【问题描述】:

有什么方法可以使用 C# 检查打印机是否支持 postscript?在对文档进行任何操作之前,我需要检查一下。

谢谢, 巴托斯

【问题讨论】:

【参考方案1】:

您可能会使用 WMI,但我不确定此解决方案是否可靠

System.Management.ObjectQuery oq = new System.Management.ObjectQuery("SELECT * FROM Win32_Printer");
ManagementObjectSearcher mos = new ManagementObjectSearcher(oq);
ManagementObjectCollection moc = mos.Get();
foreach( ManagementObject mo in moc )


    string name = mo["Name"].ToString();
    string language = mo["DefaultLanguage"].ToString();
    MessageBox.Show(String.Format("Printer: 0 -- Language: 1", name, language));

Lifted from here

更新

在此处查看可能相关的其他字段

Win32_Printer class

特别是uint16 LanguagesSupported[];

【讨论】:

感谢您的帮助,我已经找到了这个解决方案,但它对我不起作用 - 我在 mo["DefaultLanguage"].ToString(); 上收到 NullReferenceException 请注意,安装的打印机驱动程序可能会影响是否支持 postscript。【参考方案2】:

代码,我终于用上了,改动不大:

System.Management.ObjectQuery oq = new System.Management.ObjectQuery("SELECT * FROM Win32_Printer");
        ManagementObjectSearcher mos = new ManagementObjectSearcher(oq);
        ManagementObjectCollection moc = mos.Get();
        foreach (ManagementObject mo in moc)
        

            string name = mo["Name"].ToString();
            var language = mo["LanguagesSupported"];
            Console.WriteLine(String.Format("Printer: 0 -- Language: 1", name, language==null ? 0 : (language as ushort[])[0]));
        

【讨论】:

以上是关于检查打印机是不是支持 postscript的主要内容,如果未能解决你的问题,请参考以下文章

检查是不是支持占位符的简单方法?

vb.net 中是不是有任何代码来检查打印机状态

无限循环?检查两台打印机是不是在线或离线 - 如果关闭则发送电子邮件

为啥打印机可以打印却不能复印?

如何在打印(xpath)之前检查文本是不是包含特定字符?

如何查看打印机是不是处于联机状态