2009-10-29 11 views
2

J'essaie de déterminer la sélection actuelle du type de papier sur l'imprimante par défaut en utilisant C#.Détermination du type de papier actuel pour l'imprimante par défaut

J'ai déterminé l'imprimante par défaut en utilisant WMI et en énumérant à travers la collection Properties, je peux voir qu'il y a une propriété de chaîne CurrentPaperType, mais sur les deux imprimantes dans le bureau, son ensemble à une chaîne vide.

MSDN's documentation commence à radoter sur les imprimantes de mise en œuvre de cette norme bla bla, mais très peu à la manière de conseils pratiques: -

type de papier que l'imprimante utilise. Doit être exprimé sous la forme spécifiée par l'application d'impression de documents (DPA) ISO/CEI 10175, qui est résumée dans l'annexe C de la RFC 1759 (MIB de l'imprimante). Cette propriété est héritée de CIM_Printer.

Je peux récupérer une liste de tous les types de papier pris en charge par l'imprimante choisie, mais elle ne me dit pas laquelle elle est actuellement définie.

Je crée un rapport dynamique en mémoire puis recracher à l'imprimante en un seul coup, donc je besoin de connaître la taille du papier afin de définir correctement les marges, la largeur des colonnes, etc.

Tout le monde a un succès en récupérant cette information?

Répondre

5

Ne pas utiliser WMI sauf si vous en avez vraiment besoin. Utilisez les classes intégrées .Net comme Foxfire dit. Vous pouvez obtenir une imprimante en utilisant les éléments suivants:

System.Drawing.Printing.PrinterSettings printer = new System.Drawing.Printing.PrinterSettings(); 
printer.PrinterName = "YourPrinterName"; 

Vous pouvez alors accéder à toutes les propriétés dont vous avez besoin par:

printer.DefaultPageSettings; 
+0

+1 pour le code d'échantillon –

2

Existe-t-il une raison particulière pour laquelle vous utilisez WMI au lieu des classes d'imprimante .Net dans System.Drawing.Printing?

Vous pouvez facilement obtenir votre info grâce à la propriété PaperSources de la classe PrinterSettings qui contient tous PaperKinds qui sont actuellement disponibles dans l'imprimante (pourrait être plus d'un parce que plusieurs imprimantes ont plusieurs plateaux)

+0

enquêtera sur, merci pour le pointeur –

Questions connexes