Foros del Web » Programación para mayores de 30 ;) » Java »

Error con texto al imprimir un PDF desde JAVA con JPanel

Estas en el tema de Error con texto al imprimir un PDF desde JAVA con JPanel en el foro de Java en Foros del Web. Hola: En mi trabajo surgio la necesidad de imprimir un recibo de pago que manejan, el procedimiento que hago es diseñar el recibo mediante el ...
  #1 (permalink)  
Antiguo 06/06/2013, 17:19
 
Fecha de Ingreso: junio-2013
Mensajes: 1
Antigüedad: 9 años, 1 mes
Puntos: 0
Error con texto al imprimir un PDF desde JAVA con JPanel

Hola:

En mi trabajo surgio la necesidad de imprimir un recibo de pago que manejan, el procedimiento que hago es diseñar el recibo mediante el Jasper, una vez diseñado tengo un metodo para generarlo en PDF, no lo guardo en la maquina, se genera como un arreglo de bytes.

Despues tengo 2 metodos, uno para visualisar en pantalla el PDF, el cual funciona perfecto y lo visualiza, y el otro metodo para mandarlo a imprimir SIN QUE SE VISUALICE, es decir, tomo el arreglo de bytes (PDF) y lo mando directo a la impresora. Uso la libreria JPanel, el pdf (recibo) se imprime alineado correactamente, solo que imprime las puras lineas, no imprime nada de texto.

Investigando vi que la propiedad "setTextPrint" de la libreria pdfDecoder toca algo sobre eso, la active y fue ahi que me imprimio el texto PERO lo imprime todas las letras en el mismo espacio y en forma vertical, es decir, si dice HOLA, imprime la H y luego la O encima de la H y asi sucesivamente.

Me podrian ayudar? este es el codigo del metodo que uso.

public void imprimirPDF(byte[] informePDF) {
PdfDecoder pdf = null;

try {
pdf = new PdfDecoder(true);
//Asignar la impresora predeterminada
PrintService service = PrintServiceLookup.lookupDefaultPrintService();
PrinterJob printJob = PrinterJob.getPrinterJob();
printJob.setPrintService(service);
Paper paper = new Paper();
PageFormat pf = printJob.defaultPage();

//Se asigna el tamaño del papel media carta
paper.setSize(612, 385); //ANCHO, ALTO (EN PUNTOS)
paper.setImageableArea(20, -91, 595, 595);
pf.setPaper(paper);
pf.setOrientation(pf.LANDSCAPE); //Asignarle orientacion a horizontal
//Cargar el pdf para imprimir
pdf.openPdfArray(informePDF); //Asignar el pdf
pdf.setTextPrint(pdf.TEXTSTRINGPRINT); //Usar las fuentes como texto
pdf.PDFContainsEmbeddedFonts();
pdf.hasEmbeddedFonts();

pdf.setPageFormat(pf);
//Enviar a imprimir
printJob.setPageable(pdf);
printJob.print();
} catch (Exception e) {
e.printStackTrace();
} finally {
pdf.closePdfFile();
}
}

Etiquetas: byte, impresion, jpanel, libreria, pdf
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:50.