Existe-t-il un moyen de déterminer dans .Net (ou WMI) si un pilote d'imprimante imprimera au format PCL ou PostScript ou XPS lors de l'impression dans un fichier?Existe-t-il un moyen de déterminer dans .Net (ou WMI) si un pilote d'imprimante imprimera au format PCL ou PostScript lors de l'impression dans un fichier?
Répondre
Vous devriez être capable de rassembler ces informations via WMI. Win32_Printer.DefaultLanguage est supposé renvoyer cette valeur. Si je me souviens d'essayer cela dans le passé, cependant, de nombreux pilotes d'imprimante ne renvoient pas une valeur.
Vérifiez ici: http://msdn.microsoft.com/en-us/library/aa394363%28VS.85%29.aspx
Somthing comme celui-ci « devrait » faire l'affaire:
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);
}
Cela renverra un UInt16, vérifiez le lien pour la traduction de « langue par défaut » pour les Anglais terme à savoir: PCL, Postscript, HPGL etc.
Puis-je vous demander pourquoi vous essayez de déterminer à l'avance ce que sera la sortie? Si c'est un processus d'impression sur fichier, je regarderais simplement la sortie et déterminerais ce que c'est. La plupart des nouveaux pilotes d'impression insérera une déclaration PJL au sommet du travail comme celui-ci
@PJL ENTRER Lanugage = « PCL »
Ou regardez simplement le code lui-même pour les indicateurs révélateurs tels que le PCL ou% PS pour Postscript, etc.
Si votre système d'exploitation cible est Windows, un autre moyen consiste à effectuer une certaine logique sur le pilote et la file d'attente d'impression. Vous pouvez utiliser les API WMI/.NET pour obtenir le nom de la DLL du pilote. Si c'est unidrv.dll alors le pilote est un pilote PCL et si c'est pscript.dll alors c'est un pilote PS. Bien sûr, ceci est pour les pilotes basés sur le framework de pilote MS Unidrv/PScript mais vous constaterez que la grande majorité de vos pilotes basés sur l'installation sont basés sur ce framework.