Ver Mensaje Individual
  #1 (permalink)  
Antiguo 23/01/2018, 17:38
lucho248
 
Fecha de Ingreso: octubre-2010
Mensajes: 154
Antigüedad: 14 años, 1 mes
Puntos: 5
impresiones directo de hoja A4.

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 original
  1. package Test;
  2.  
  3. import java.io.FileInputStream;
  4. import java.io.IOException;
  5.  
  6. import javax.print.Doc;
  7. import javax.print.DocFlavor;
  8. import javax.print.DocPrintJob;
  9. import javax.print.PrintException;
  10. import javax.print.PrintService;
  11. import javax.print.PrintServiceLookup;
  12. import javax.print.SimpleDoc;
  13. import javax.print.attribute.AttributeSet;
  14. import javax.print.attribute.HashAttributeSet;
  15. import javax.print.attribute.HashPrintRequestAttributeSet;
  16. import javax.print.attribute.standard.ColorSupported;
  17. import javax.print.attribute.standard.PrinterName;
  18.  
  19. public class PrintTest {
  20.     public static void main(String args[]) throws IOException, PrintException {
  21.         //Archivo que se desea imprimir
  22.         FileInputStream inputStream = new FileInputStream("c:/archivo.doc");
  23.      
  24.         //Formato de Documento
  25.         DocFlavor docFormat = DocFlavor.INPUT_STREAM.AUTOSENSE;
  26.         //Lectura de Documento
  27.         Doc document = new SimpleDoc(inputStream, docFormat, null);
  28.      
  29.         //Nombre de la impresora
  30.         String printerName = "HP3015";
  31.      
  32.         //Inclusion del nombre de impresora y sus atributos
  33.         AttributeSet attributeSet = new HashAttributeSet();
  34.         attributeSet.add(new PrinterName(printerName, null));
  35.         attributeSet = new HashAttributeSet();
  36.         //Soporte de color o no
  37.         attributeSet.add(ColorSupported.NOT_SUPPORTED);
  38.      
  39.         //Busqueda de la impresora por el nombre asignado en attributeSet
  40.         PrintService[] services = PrintServiceLookup.lookupPrintServices(docFormat, attributeSet);
  41.      
  42.         /* 1: solid converter
  43.          * 2:
  44.          * 3: epson
  45.          * 4: doppdf
  46.          * */
  47.         System.out.println("Imprimiendo en : " + services[3].getName());
  48.      
  49.         DocPrintJob printJob = services[3].createPrintJob();
  50.         //Envio a la impresora
  51.         printJob.print(document, new HashPrintRequestAttributeSet());
  52.      
  53.         inputStream.close();
  54.     }
  55. }
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.