Hawex
Hawex

Reputation: 133

Check if printer supports postscript

is there any way to check if printer supports postscript, using C#? I need to check this before I do anything with my document.

Thanks, Bartosz

Upvotes: 2

Views: 627

Answers (2)

TheGeneral
TheGeneral

Reputation: 81493

You could use WMI potentially, however im not sure if this solution will be reliable

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

Update

Check here to see other fields that might be relevant

Win32_Printer class

In particular uint16 LanguagesSupported[];

Upvotes: 1

Hawex
Hawex

Reputation: 133

Code, which I've finally used, with little changes:

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]));
        }

Upvotes: 1

Related Questions