print ejemplos c# .net printing printers printdialog

print dialog c# ejemplos



¿Cómo obtener información de la impresora en.NET? (8)

Como sugirió dowski , podría usar WMI para obtener las propiedades de la impresora. El siguiente código muestra todas las propiedades para un nombre de impresora determinado. Entre ellos encontrará: PrinterStatus, Comment, Location, DriverName, PortName, etc.

using System.Management;

...

string printerName = "YourPrinterName"; string query = string.Format("SELECT * from Win32_Printer WHERE Name LIKE ''%{0}''", printerName); using (ManagementObjectSearcher searcher = new ManagementObjectSearcher(query)) using (ManagementObjectCollection coll = searcher.Get()) { try { foreach (ManagementObject printer in coll) { foreach (PropertyData property in printer.Properties) { Console.WriteLine(string.Format("{0}: {1}", property.Name, property.Value)); } } } catch (ManagementException ex) { Console.WriteLine(ex.Message); } }

En PrintDialog estándar hay cuatro valores asociados con una impresora seleccionada: Estado, Tipo, Dónde y Comentario.

Si conozco el nombre de una impresora, ¿cómo puedo obtener estos valores en C # 2.0?



Esto debería funcionar

using System.Drawing.Printing;

...

PrinterSettings ps = new PrinterSettings(); ps.PrinterName = "The printer name"; // Load the appropriate printer''s setting

Después de eso, se pueden leer las diversas properties de PrinterSettings.

Tenga en cuenta que ps.isValid() puede ver si la impresora realmente existe.

Editar: Un comentario adicional. Microsoft recomienda utilizar un PrintDocument y modificar sus PrinterSettings en lugar de crear PrinterSettings directamente.


Ha pasado mucho tiempo desde que trabajé en un entorno de Windows, pero sugiero que considere usar WMI .



Sé que es una publicación antigua, pero hoy en día la opción más fácil / más rápida es utilizar los servicios de impresión mejorados que ofrece el marco WPF (utilizable por aplicaciones que no son de WPF).

http://msdn.microsoft.com/en-us/library/System.Printing(v=vs.110).aspx

Un ejemplo para recuperar el estado de la cola de la impresora y el primer trabajo.

var queue = new LocalPrintServer().GetPrintQueue("Printer Name"); var queueStatus = queue.QueueStatus; var jobStatus = queue.GetPrintJobInfoCollection().FirstOrDefault().JobStatus


Solo como referencia, here hay una lista de todas las propiedades disponibles para una impresora ManagementObject.

usage: printer.Properties["PropName"].Value


Tenga en cuenta que el artículo que dowski y Panos estaban refiriendo a ( MSDN Win32_Printer ) puede ser un poco engañoso.

Me refiero al primer valor de la mayoría de las matrices. algunos comienzan con 1 y algunos comienzan con 0. Por ejemplo, el primer valor de " ExtendedPrinterStatus " en la tabla es 1, por lo tanto, su matriz debería ser algo como esto:

string[] arrExtendedPrinterStatus = { "","Other", "Unknown", "Idle", "Printing", "Warming Up", "Stopped Printing", "Offline", "Paused", "Error", "Busy", "Not Available", "Waiting", "Processing", "Initialization", "Power Save", "Pending Deletion", "I/O Active", "Manual Feed" };

y, por otro lado, el primer valor de " ErrorState " en la tabla es 0, por lo tanto, su matriz debería ser algo como esto:

string[] arrErrorState = { "Unknown", "Other", "No Error", "Low Paper", "No Paper", "Low Toner", "No Toner", "Door Open", "Jammed", "Offline", "Service Requested", "Output Bin Full" };

Por cierto, " PrinterState " está obsoleto, pero puede usar " PrinterStatus ".