Есть ли способ определить в .Net (или WMI), будет ли драйвер печати печатать в формате PCL или PostScript при печати в файл? - PullRequest
1 голос
/ 08 октября 2009

Есть ли способ определить в .Net (или WMI), будет ли драйвер печати печатать в формате PCL, PostScript или XPS при печати в файл?

Ответы [ 2 ]

1 голос
/ 23 февраля 2011

Если ваша целевая ОС - Windows, еще один способ - это немного логизировать драйвер и очередь печати. Вы можете использовать API-интерфейсы WMI / .NET для получения имени DLL драйвера. Если это unidrv.dll, то драйвер является драйвером PCL, а если это pscript.dll, то это драйвер PS. Конечно, это для драйверов, основанных на структуре драйверов MS Unidrv / PScript, но вы обнаружите, что подавляющее большинство ваших установленных драйверов основано на этой структуре.

0 голосов
/ 08 октября 2009

Вы должны быть в состоянии собрать эту информацию через WMI. Предполагается, что Win32_Printer.DefaultLanguage вернет это значение. Если я вспомню, что пытался сделать это раньше, многие драйверы принтеров не возвращали значение.

Проверьте здесь: http://msdn.microsoft.com/en-us/library/aa394363%28VS.85%29.aspx

Что-то вроде этого "должно" сделать свое дело:

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

Это вернет UInt16, проверьте ссылку для перевода «Язык по умолчанию» на английский термин, т. Е. PCL, Postscript, HPGL и т. Д.

Могу я спросить, почему вы пытаетесь определить заранее, каким будет результат? Если это процесс печати в файл, я просто посмотрю на вывод и определю, что это такое. Большинство новых драйверов печати вставляют оператор PJL в начале задания, как это

@ PJL ENTER LANUGAGE = "PCL"

Или просто посмотрите на сам код для контрольных индикаторов, таких как для PCL или% PS для Postscript и т. Д.

...