2011-08-05 15 views
9

Puedo imprimir un documento, pero no sé cómo obtener su estado. Revisé muchos recursos (MSDN, Links for checking Job Status), pero no pude encontrar una respuesta.Cómo obtener el estado del trabajo de impresión con C#

De hecho, quiero obtener la confirmación de la impresora si el documento se imprimió correctamente o no. Además, también me interesa si puedo obtener una señal de error de la impresora, como si el papel está atascado.

Tengo el nombre de la impresora y el nombre del documento que estoy enviando para imprimir. ¿Alguien ha hecho alguna investigación en esta área y puede decirme cómo lograr esto?

+1

System.Printing no hizo el corte para .NET 2.0 y probablemente no debería haber hecho el corte para .NET 3.0. No es realmente la culpa, la API subyacente de Windows simplemente no es fuerte. Descongele sus requisitos. –

Respuesta

3

hay muestras en línea ... Google "el envío de comandos PJL en C#" (PJL significa lenguaje de trabajo de impresora)

CodeProject Reading Data Directly from the Printer es un buen artículo/muestra a comenzar con

3

Es posible que pueda para usar WMI para esto. Proporciona varios printing-related classes, incluido Win32_PrintJob.

Esto no se ha probado, pero algo como esto debería empezar:

SelectQuery query = new SelectQuery("Win32_PrintJob"); 

using (ManagementObjectSearcher searcher = new ManagementObjectSearcher(query)) 
using (ManagementObjectCollection printJobs = searcher.Get()) 
    foreach (ManagementObject printJob in printJobs) 
    { 
     // The format of the Win32_PrintJob.Name property is "PrinterName,JobNumber" 
     string name = (string) printJob["Name"]; 
     string[] nameParts = name.Split(','); 
     string printerName = nameParts[0]; 
     string jobNumber = nameParts[1]; 
     string document = (string) printJob["Document"]; 
     string jobStatus = (string) printJob["JobStatus"]; 

     // Process job properties... 
    } 
Cuestiones relacionadas