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

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

谢谢, 巴托斯

【问题讨论】:

    标签: c# postscript printers


    【解决方案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]));
            }
    

    【讨论】:

      猜你喜欢
      • 2012-02-13
      • 2018-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-13
      • 2015-03-11
      • 1970-01-01
      相关资源
      最近更新 更多