Ver Mensaje Individual
  #1 (permalink)  
Antiguo 06/06/2013, 17:19
ricknr88
 
Fecha de Ingreso: junio-2013
Mensajes: 1
Antigüedad: 9 años, 2 meses
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();
}
}