Buenas,
He estado haciendo un tipo de monitoreo de impresoras, cuando el usuario imprime la cola de impresión me da las datos.
Pasa que cuando los pido, los datos de nombre, fecha y nombre del documento me dan lo que necesito, pero cuando trato de averiguar cuántas páginas tiene el documento el programa sólo me retorna 1 y en el caso de las páginas totales 0.
El programa lo estoy haciendo con Visual Studio 2010 y con C#.
Es importante aclarar que he probado con word y notepad, los cuáles se generan con más de 1 página.
Les agradecería si me pudieran ayudar con esto.
He estado haciendo un tipo de monitoreo de impresoras, cuando el usuario imprime la cola de impresión me da las datos.
Pasa que cuando los pido, los datos de nombre, fecha y nombre del documento me dan lo que necesito, pero cuando trato de averiguar cuántas páginas tiene el documento el programa sólo me retorna 1 y en el caso de las páginas totales 0.
El programa lo estoy haciendo con Visual Studio 2010 y con C#.
Es importante aclarar que he probado con word y notepad, los cuáles se generan con más de 1 página.
Les agradecería si me pudieran ayudar con esto.
Código (csharp) [Seleccionar]
System.Collections.ArrayList printJobCollection = new System.Collections.ArrayList();
//Obtiene los trabajos que contiene en memoria.
public System.Collections.ArrayList obtenerimpresiones(string PrinterName)
{
string PrinterJobs = "SELECT * FROM Win32_PrintJob";
string hora;
ManagementObjectSearcher FindPrintJobs = new ManagementObjectSearcher(PrinterJobs);
ManagementObjectCollection prntJobCollection = FindPrintJobs.Get();
foreach (ManagementObject prntJob in prntJobCollection)
{
System.String jobName = prntJob.Properties["Name"].Value.ToString();
System.String pages = prntJob.Properties["PagesPrinted"].Value.ToString();
System.String print = prntJob.Properties["DriverName"].Value.ToString();
System.String totalpages = prntJob.Properties["TotalPages"].Value.ToString();
hora = DateTime.Now.ToString();
char[] JobSplit = new char[1];
JobSplit[0] = Convert.ToChar(",");
string prnterName = jobName.Split(JobSplit)[0];
string documentName = "Nombre del documento->" + prntJob.Properties["Document"].Value.ToString() + " Usuario->" + prntJob.Properties["owner"].Value.ToString() + " - Fecha->" + hora + " - Páginas del documento->" + pages + "- Impresora ->" + print + "Total páginas impresas->" + totalpages + "\n";
if (String.Compare(prnterName, PrinterName, true) == 0)
{
printJobCollection.Add(documentName);
}
}
return printJobCollection;
}