«

»

Manejando tus impresoras con Java

¿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:

  1. Anotaciones en Java
  2. Usando SwingWorker para correr procesos en background

2 comentarios

  1. progra100% escribió:

    Loko este codigo esta solo!
    Buenisimo aporte!

  2. juan escribió:

    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

Deja un comentario

Tu email nunca se publicará.

Puedes utilizar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="" highlight="">