ACLARACION: la impresión necesito que sea directa, sin abrir el frame de buscar la impresora, de esa forma, no se porque si sale bien, pero necesito que sea directo, indicar imprimir, y que largue el documento que le envío a imprimir.
codigo que estoy siguiendo:
Código Código Java imprimir en printer terminca:
Es decir, imprimí las "n" lineas que envío a imprimir, y la hoja deja de pasar en la impresora, queda donde termino de imprimir (simulando o entendiendo como si fuera una impresora de papel continuo, me explico?).Ver original
package Test; import java.io.FileInputStream; import java.io.IOException; import javax.print.Doc; import javax.print.DocFlavor; import javax.print.DocPrintJob; import javax.print.PrintException; import javax.print.PrintService; import javax.print.PrintServiceLookup; import javax.print.SimpleDoc; import javax.print.attribute.AttributeSet; import javax.print.attribute.HashAttributeSet; import javax.print.attribute.HashPrintRequestAttributeSet; import javax.print.attribute.standard.ColorSupported; import javax.print.attribute.standard.PrinterName; public class PrintTest { public static void main(String args[]) throws IOException, PrintException { //Archivo que se desea imprimir FileInputStream inputStream = new FileInputStream("c:/archivo.doc"); //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); /* 1: solid converter * 2: * 3: epson * 4: doppdf * */ System.out.println("Imprimiendo en : " + services[3].getName()); DocPrintJob printJob = services[3].createPrintJob(); //Envio a la impresora printJob.print(document, new HashPrintRequestAttributeSet()); inputStream.close(); } }
ese "c:/archivo.doc", es un archivo que lo cree para probar, y solo tiene dos lineas...
imprime esas dos lineas y corta ahi, no expulsa la hoja, la hoja esta bien seteada, es tamaño A4, y los margenes comunes, 3cm por lado de margen.
Alguien probo esto?.
NOTA: si el archivo que mando es un *.doc, *.txt si imprime el contenido, pero si le mando un *.pdf empieza a imprimir el contenido como de bytes, o quien sabe que contenido imprime, y larga varias hojas de basura.
Si alguien tiene una idea y/o ayuda de ejemplo, me avisa. Que lo estoy necesitando.
Desde ya muchas gracias.
Un cordial saludo.