¿Cómo ver todas las impresoras disponibles con java, la impresora que tienes por default y otros atributos de tus impresoras?
Aquí van algunos ejemplos simples…
—
import javax.print.PrintService; import javax.print.PrintServiceLookup; import javax.print.attribute.Attribute; import javax.print.attribute.AttributeSet; import javax.print.attribute.HashAttributeSet; import javax.print.attribute.PrintServiceAttributeSet; import javax.print.attribute.standard.Destination; import javax.print.attribute.standard.PrinterInfo; import javax.print.attribute.standard.PrinterIsAcceptingJobs; import javax.print.attribute.standard.PrinterLocation; import javax.print.attribute.standard.PrinterMakeAndModel; import javax.print.attribute.standard.PrinterName; import javax.print.attribute.standard.PrinterState; /** * Ejemplos para ver tus impresoras * @author Peiretti */ public class PrintExamples { /** * @param args */ public static void main(String[] args) { printAvailable(); printDefault(); printByName("MiImpresora"); } public static void printAvailable() { // busca los servicios de impresion... PrintService[] services = PrintServiceLookup.lookupPrintServices(null, null); // -- ver los atributos de las impresoras... for (PrintService printService : services) { System.out.println(" ---- IMPRESORA: " + printService.getName()); PrintServiceAttributeSet printServiceAttributeSet = printService.getAttributes(); System.out.println("--- atributos"); // todos los atributos de la impresora Attribute[] a = printServiceAttributeSet.toArray(); for (Attribute unAtribute : a) { System.out.println("atributo: " + unAtribute.getName()); } System.out.println("--- viendo valores especificos de los atributos "); // valor especifico de un determinado atributo de la impresora System.out.println("PrinterLocation: " + printServiceAttributeSet.get(PrinterLocation.class)); System.out.println("PrinterInfo: " + printServiceAttributeSet.get(PrinterInfo.class)); System.out.println("PrinterState: " + printServiceAttributeSet.get(PrinterState.class)); System.out.println("Destination: " + printServiceAttributeSet.get(Destination.class)); System.out.println("PrinterMakeAndModel: " + printServiceAttributeSet.get(PrinterMakeAndModel.class)); System.out.println("PrinterIsAcceptingJobs: " + printServiceAttributeSet.get(PrinterIsAcceptingJobs.class)); } } public static void printDefault() { // tu impresora por default PrintService service = PrintServiceLookup.lookupDefaultPrintService(); System.out.println("Tu impresora por default es: " + service.getName()); } public static void printByName(String printName) { PrintService[] services = PrintServiceLookup.lookupPrintServices(null, null); // buscar por el nombre de la impresora (nombre que le diste en tu S.O.) // en "aset" puedes agregar mas atributos de busqueda AttributeSet aset = new HashAttributeSet(); aset.add(new PrinterName(printName, null)); //aset.add(ColorSupported.SUPPORTED); // si quisieras buscar ademas las que soporten color services = PrintServiceLookup.lookupPrintServices(null, aset); if(services.length == 0){ System.out.println("No se encontro impresora con nombre " + printName); } for (PrintService printService : services) { System.out.println(printService.getName()); } } }
—
Te puede interesar:
2 comentarios
progra100% escribió:
12/16/2010, a las 12:37 AM (UTC -3 )
Loko este codigo esta solo!
Buenisimo aporte!
juan escribió:
12/30/2011, a las 5:35 PM (UTC -3 )
Amigo, el metodo lookupDefaultPrintService no me funciona me retorna nulo, solo tengo una impresora, tampoco funciona lookupPrintServices, estoy utilizando netbeans 5.5 y jdk1.5, porfavor una mano