Autor Tema: Imprimir desde Java en puerto USB impresora predeterminada o elegir impresora  (Leído 6699 veces)

venceras

  • Sin experiencia
  • *
  • APR2.COM
  • Mensajes: 1
    • Ver Perfil
Buenas tardes compañeros del foro

Estoy incursionando en la programación  java y encuentro algunas dudas, específicamente sobre la forma de imprimir en puertos usb.

Tengo una impresora Epson CX3900 en cuyas propiedades, Hardware aparece ubicada en el puerto :Port_#0004.Hub_#0002.  en Windows 10:

uso las siguientes sentecias para reorientar la salida la la impresora:

        FileOutputStream fact = new FileOutputStream("\\Port_#0004.Hub_#0002");       
        PrintStream out = new PrintStream(fact);
        System.setOut(out);

al correr el programa me genera el siguiente mensaje:
java.io.FileNotFoundException: \\Port_#0004.Hub_#0002 (La ruta de acceso especificada no es válida)

Si con las mismas intrucciones envio la salida a un  documento, si obtengo la salida apropiada.

        FileOutputStream fact = new FileOutputStream("Factura.txt");     
        PrintStream out = new PrintStream(fact);
        System.setOut(out);
les aclaro que probe tambien cambiando la instrucción a :
        FileOutputStream fact = new FileOutputStream("//Port_#0004.Hub_#0002");

Que estoy haciendo mal o cual es la forma o sintaxis correcta?

De ante mano gracias por su ayuda.
« Última modificación: 04 de Junio 2016, 23:25 por César Krall »

César Krall

  • Moderador Global
  • Experto
  • *******
  • Mensajes: 2078
  • No vales por lo que dices, sino por lo que haces
    • Ver Perfil
    • aprenderaprogramar.com
Hola!

Para imprimir en la impresora por defecto del sistema puedes guiarte por este código:

Código: [Seleccionar]
import javax.print.*;
import javax.print.attribute.HashPrintRequestAttributeSet;
import javax.print.attribute.PrintRequestAttributeSet;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
 
 
public class PrintTest {
 
    public static void main(String args[]) throws IOException {
 
        FileInputStream inputStream = null;
        try {
            inputStream = new FileInputStream("c:/archivo.pdf");
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        if (inputStream == null) {
            return;
        }
 
        DocFlavor docFormat = DocFlavor.INPUT_STREAM.AUTOSENSE;
        Doc document = new SimpleDoc(inputStream, docFormat, null);
 
        PrintRequestAttributeSet attributeSet = new HashPrintRequestAttributeSet();
 
        PrintService defaultPrintService = PrintServiceLookup.lookupDefaultPrintService();
 
 
        if (defaultPrintService != null) {
            DocPrintJob printJob = defaultPrintService.createPrintJob();
            try {
                printJob.print(document, attributeSet);
 
            } catch (Exception e) {
                e.printStackTrace();
            }
        } else {
            System.err.println("No existen impresoras instaladas");
        }
 
        inputStream.close();
    }
}


Si quieres elegir la impresora donde imprimir utiliza su nombre dentro del sistema como en este ejemplo:

Código: [Seleccionar]
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();
 
}

Saludos!
Responsable de departamento de producción aprenderaprogramar.com

 

Sobre la educación, sólo puedo decir que es el tema más importante en el que nosotros, como pueblo, debemos involucrarnos.

Abraham Lincoln (1808-1865) Presidente estadounidense.

aprenderaprogramar.com: Desde 2006 comprometidos con la didáctica y divulgación de la programación

Preguntas y respuestas

¿Cómo establecer o cambiar la imagen asociada (avatar) de usuario?
  1. Inicia sesión con tu nombre de usuario y contraseña.
  2. Pulsa en perfil --> perfil del foro
  3. Elige la imagen personalizada que quieras usar. Puedes escogerla de una galería de imágenes o subirla desde tu ordenador.
  4. En la parte final de la página pulsa el botón "cambiar perfil".