PDF y JAVA

Cada vez es mas frecuente que la información que necesitamos presentar al usuario sea entregada en formato PDF, ya sea para visualizarlo en el navegador o para descárgala. En mi experiencia con este tipo de formatos, nos tocaba hacer bastantes “triquiñuelas” con el fin de dar solución a esta necesidad.

Hace poco descubrí la librería gratuita iText.jar, la cual contiene todo lo necesario para que este trabajo resulte más simple de lo imaginado; por este motivo les presento mis apuntes.

Generar PDF al vuelo: Documento generado dinámicamente basado en el procesamiento de los datos ingresados por el usuario.

import com.lowagie.text.Document;
import com.lowagie.text.Paragraph;
import com.lowagie.text.pdf.PdfWriter;

OutputStream file = new FileOutputStream(new File("C:\\prueba.pdf"));
Document document = new Document();
PdfWriter.getInstance(document, file);
document.open();
document.add(new Paragraph("Hola a todos!"));
document.add(new Paragraph(new Date().toString()));
document.close();
file.close();

Como se puede ver, para este caso simplemente referenciamos el objeto document de la librería iText y agregamos el texto que deseamos; también podemos adicionar imágenes y formato al texto.

Generar PDF basado en una plantilla: Este tipo de documento lo creamos basado en una plantilla ya creada y lo que hacemos es diligenciar cada uno de los campo de la plantilla, para ello lo hacemos de la siguiente manera

import com.lowagie.text.pdf.AcroFields;

import com.lowagie.text.pdf.PdfReader;
import com.lowagie.text.pdf.PdfStamper;

 
//Cargamos la plantilla a diligenciar
PdfReader pdfReader = new PdfReader("C:\\plantilla.pdf");
ByteArrayOutputStream bos = new ByteArrayOutputStream();
PdfStamper stamper = new PdfStamper(pdfReader, bos);

//Se obtienen los campos del formulario
AcroFields fdfDoc = stamper.getAcroFields();

//Se llenan los campos del formulario
fdfDoc.setField("campo1", campo1);
fdfDoc.setField("campo2", campo2);
fdfDoc.setField("campo3", campo3);


Debemos tener en cuenta que tenemos que conocer el nombre de los campos de la plantilla para poder asociar nuestras variables a los campos del formulario.  Para la creación de las plantillas podemos usar el Acrobat Writer.

Si te fue útil, has comentarios y recomiéndalo !.

Comentarios

  1. Y para setearle imagenes, porque tengo un aplantilla que le tengo q ingresar unas firmas digitales depende del usuario conectado.

    Que solucion me dan?

    ResponderEliminar
    Respuestas
    1. No entiendo muy bien lo que me planteas, pero asumo que lo que estas es deseando ingresar una imagen a un campo del formulario, para esto; el procedimiento es igual al de ingresar un campo texto, simplemente es asociar el nombre del campo y asignar el URI de la imagen, obviamente se debe tener definido el tipo de dato del campo en la plantilla, pero como lo comente esto hace parte del desarrollo con Acrobat Writes

      Eliminar

Publicar un comentario

Entradas populares de este blog

Enviar SMS desde JAVA

Tareas Programas en JAVA

Trabajar con ICEFaces