Foros aprenderaprogramar.com
Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: venceras en 27 de Mayo 2016, 01:22
-
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.
-
Hola!
Para imprimir en la impresora por defecto del sistema puedes guiarte por este código:
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:
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!