Estoy tratando de obtener información sobre las impresoras en mi sistema.
En Windows y Linux, con este código, sólo el atributo PrinterName
está lleno:Información extendida de la impresora en Java
PrintService[] printServices = PrintServiceLookup.lookupPrintServices(null,null);
for(PrintService printService : printServices) {
log.info("Found print service: "+printService);
log.info(printService.getAttribute(PrinterName.class));
log.info(printService.getAttribute(PrinterLocation.class));
log.info(printService.getAttribute(PrinterMakeAndModel.class));
log.info(printService.getAttribute(PrinterMessageFromOperator.class));
log.info(printService.getAttribute(PrinterMoreInfo.class));
log.info(printService.getAttribute(PrinterMoreInfoManufacturer.class));
log.info(printService.getAttribute(PrinterState.class));
log.info(printService.getAttribute(PrinterStateReasons.class));
log.info(printService.getAttribute(PrinterURI.class));
}
Después de usar la función toArray()
en él ...
log.info("Found print service: "+printService);
for(Attribute a : printService.getAttributes().toArray()) {
log.info("* "+a.getName()+": "+a);
}
... este es el resultado:
Found print service: Win32 Printer : Brother MFC-9420CN BR-Script3 * color-supported: supported * printer-name: Brother MFC-9420CN BR-Script3 * printer-is-accepting-jobs: accepting-jobs * queued-job-count: 0
¿Cómo puedo obtener más información, como la impresora c omment?
¿Qué ves si repites el retorno de 'PrintService.getAttributes()'? –
No puede iterar sobre él. Además, miré la fuente Java y comencé a pensar que los desarrolladores de Java odian las impresoras. Al principio construyen una gran API, y luego incluso ellos mismos solo llenan el conjunto de atributos con 4 (!) De ~ 20 atributos posibles, en Linux y Windows. Lo siento, pero esto es triste. – Daniel
Claro que puede: simplemente use 'toArray' del súper tipo (' AttributeSet') e itere la matriz. –