Buenas tardes, estoy buscando ejemplos de como imprimir en java de una o varias hojas A4, pero solo encuentro el ejemplo de imprimir en impresora térmica, que imprime el contenido que se le envía a imprimir y corta el paso del papel.
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:
Ver originalpackage 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();
}
}
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?).
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.