Buscar en el Blog

viernes, 8 de marzo de 2013

Código Java para imprimir en una impresora nombrada

En ésta publicación comparto el código Java para imprimir en una impresora nombrada.

    public static void main(String args[]) throws FileNotFoundException, IOException, PrintException {

        //Archivo que se desea imprimir
        FileInputStream inputStream = new FileInputStream("c:/archivo.pdf");

        //Formato de Documento
        DocFlavor docFormat = DocFlavor.INPUT_STREAM.AUTOSENSE;
        //Lectura de Documento
        Doc document = new SimpleDoc(inputStream, docFormat, null);

        //Nombre de la impresora
        String printerName = "HP3015";

        //Inclusion del nombre de impresora y sus atributos
        AttributeSet attributeSet = new HashAttributeSet();
        attributeSet.add(new PrinterName(printerName, null));
        attributeSet = new HashAttributeSet();
        //Soporte de color o no
        attributeSet.add(ColorSupported.NOT_SUPPORTED);

        //Busqueda de la impresora por el nombre asignado en attributeSet
        PrintService[] services = PrintServiceLookup.lookupPrintServices(docFormat, attributeSet);

        System.out.println("Imprimiendo en : " + services[0].getName());

        DocPrintJob printJob = services[0].createPrintJob();
        //Envio a la impresora
        printJob.print(document, new HashPrintRequestAttributeSet());

        inputStream.close();

    }


17 comentarios:

  1. Buenas como hago para mostrar opciones de impresion como que detecte todas me las muestre y elegir cual usar???me das alguna idea???

    ResponderEliminar
  2. Muchas gracias por el codigo

    y ayudando al compañero que pregunta como elegir la impresora y opciones de impresión.. A ver si esto te ayuda un poco, yo obtengo asi el nombre de la impresora.

    PrinterJob job = PrinterJob.getPrinterJob();
    job.printDialog();
    String impresora=job.getPrintService().getName();

    ResponderEliminar
  3. Muchas gracias por la el código...

    Y tratando de ayudar a quien pregunta como elegir el nombre de la impresora... a ver si esto te ayuda un poco


    PrinterJob job = PrinterJob.getPrinterJob();
    job.printDialog();
    String impresora=job.getPrintService().getName();

    ResponderEliminar
  4. Muchas gracias por la el código...

    Y tratando de ayudar a quien pregunta como elegir el nombre de la impresora... a ver si esto te ayuda un poco


    PrinterJob job = PrinterJob.getPrinterJob();
    job.printDialog();
    String impresora=job.getPrintService().getName();

    ResponderEliminar
  5. Disculpa, pero tengo una pregunta... resulta que tu código funciona de maravilla pero yo necesito que si le doy X nombre vaya a esa impresora he imprima sobre ella... pero hago el ejercicio y sale en la impresora predeterminada o en la que imprimió por ultima vez, tienes alguna idea como pueda manejar ese problema.

    ResponderEliminar
  6. Para el amigo de arriba, puedes hacerlo de esta manera:
    //En caso de que tengamos varias impresoras configuradas
    PrintService myPrinter = null;
    for (int i = 0; i < services.length; i++){
    if (services[i].getName().equals(printerName)){
    myPrinter = services[i];
    System.out.println("Imprimiendo en : " + services[i].getName());
    break;
    }
    }

    DocPrintJob printJob = myPrinter.createPrintJob();
    //Envio a la impresora
    PrintRequestAttributeSet aset = new HashPrintRequestAttributeSet();
    printJob.print(document, aset);
    inputStream.close();

    ResponderEliminar
  7. Hola, de que manera puedo pasarle una cadena y que sea eso lo que me imprima ?

    ResponderEliminar
    Respuestas
    1. En la línea 4 reemplaza por InputStream inputstream = new ByteArrayInputStream("Cadena de texto".getBytes(StandardCharsets.UTF_8));

      Eliminar
  8. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  9. este còdigo me sirve para enviar a imprimir las boletas en un restaurante ?

    ResponderEliminar
  10. Necesito mandar a imprimir un archivo PDF pero lo que quiero es..... Al momento de dar clic en el botón imprimir se me abra una ventana para seleccionar la impresora, escoger el número de hoja que quiero imprimir (del total del documento) etc.

    ResponderEliminar
    Respuestas
    1. Prueba con lo que nos ayudó Julián:

      PrinterJob job = PrinterJob.getPrinterJob();
      job.printDialog();
      String impresora=job.getPrintService().getName();

      Saludos,

      Eliminar
  11. Buenas tardes, su codigo me funciona muy bien para imprimir, pero no me ejecuta la impresion en la impresora nombrada, siempre me la tira a la impresora por defecto, obtengo el nombre tal cual pusieron en los comentarios y lo seteo en el campo del nombre de su codigo, pero siempre me envia la impresion al impresor por defecto, en mi caso tengo 2 impresores, de ante mano gracias por su respuesta

    ResponderEliminar
  12. tengo este codigo public void imprimirnomina() {
    PrinterJob job = PrinterJob.getPrinterJob();
    job.setPrintable(this);
    //Si el usuario presiona imprimir en el dialogo de impresión,
    //entonces intenta imprimir todas las lineas de texto
    boolean ok = job.printDialog();
    if (ok) {
    try {
    job.print();
    } catch (PrinterException ex) {
    /* The job did not successfully complete */
    }
    }
    }


    como puedo hacer que mande a imprimir a una impresora que yo escoja pasando su nombre como una cadena por ejempleo String impresora="hp 200";

    ResponderEliminar
  13. un favor mi impresora no esta funcionando correctamente quedo imprimiendo el ultimo tema q descargue de internet como hago para restaurarla y que me permita imprimir otras cosas?


    ResponderEliminar
  14. Buenas, el codigo me funciono perfercto. Ahora si quiero enviar un pagina HTML que carga datos dinamicos, como deberia de hacer???
    Yo tengo un formulario que el cliente carga su informacion, luego al darle confirmar, algunos datos van a un HTML que no se mostraria y SI deberia de imprimirse, pero no logro hacerlo. Alguien que pueda ayudar?
    Muchas gracias

    ResponderEliminar
  15. Buenas, una consulta. Tengo un formulario al cual los clientes llenan sus datos, eso genera un HTML que no se muestra pero que se debe imprimir.
    El codigo de arriba me funciono perfecto, pero no puedo hacer que imprima el HTML, alguna ayuda???
    Gracias

    ResponderEliminar