Ejemplo sencillo de como crear un documento PDF con Java y PDFBox
Escrito por
el , actualizado el .
java
planeta-codigo
programacion
Enlace permanente
Comentarios
Leer un CSV, escribir un CSV, archivos excel, generar gráficas para visualizar datos junto con generar documentos PDF son tareas comunes de las aplicaciones como forma de exportar los datos de la base de datos de una aplicación. Generar un archivo PDF con PDFBox requiere unas pocas lineas de código para documentos con cierta complejidad quizá sea más adecuado usar la librería JasperReports.
Generar documentos e informes de salida en una una tarea básica de cualquier aplicación y una forma de exportar los datos a otros formatos. Con Apache POI se pueden generar hojas de cálculo excel para su procesamiento con LibreOffice o Microsoft Office Excel. En ocasiones también es necesario generar gráficas para visualizar un conjunto grande de datos para ser más fáciles de interpretar, descubrir tendencias, comparar, sacar conclusiones en base a las cuales tomar alguna acción. Los archivos PDF también son muy utilizados para imprimirlos en formato en papel o enviarlos adjuntos en correos electrónicos.
Uno de estos casos podría ser la generación de una factura en base a una plantilla e incluir el el importe y consumo realizado por un cliente y que este pueda obtenerla en formato electrónico o le sea enviada por correo electrónico como un documento adjunto o enviar un correo electrónico para indicar que tiene la factura disponible en su área de cliente lista para su descarga. Este es el caso de muchas empresas que ofrecen servicios como compañías eléctricas, de telecomunicaciones, servicios municipales de agua y basura, bancos para su justificantes y comprobantes, comercios, etc…
Contenido del artículo
Generar un documento PDF con Java y PDFBox
Para generar documentos en PDF en Java está disponible la librería Apache PDFBox. Un ejemplo sencillo de como generar un archivo PDF con algunos estilos de texto, fuentes, un tamaño específico de página y una imagen es el siguiente.
|
|
Hay que añadir la dependencia de la librería en el archivo de construcción del proyecto.
|
|
Documento PDF generado
El resultado es el siguiente documento PDF que puedes visualizar sin necesidad de instalar programas adicionales en tu ordenador usando el visor en línea de Smallpdf que permite la incrustación de documentos PDF en varios tipos de páginas web.
Alternativas a PDFBox
Una alternativa a PDFBox es iText, la primera tiene una licencia Apache e iText una licencia AGPL o comercial lo que puede ser determinante para un proyecto. La licencia AGPL obliga a que una aplicación web haga público su código fuente lo que probablemente en usos comerciales no sea lo deseado y usar la versión de la licencia comercial obliga a adquirir el derecho de uso al que obliga la licencia que posee un coste tal vez indeseado o que directamente hace que quede descartada.
PDFBox no posee una forma de escribir párrafos y tener saltos de línea automáticos según el ancho de la página, en el ejemplo el texto se posiciona de forma absoluta en la página estando la coordenada (0,0) en la parte inferior izquierda. Para añadir esta funcionalidad a PDFBox hay que usar el complemento pdfbox-layout.
Pero en vez de crear un documento PDF desde cero desde Java si se trata de una factura es más sencillo partir de un documento PDF a modo de plantilla con el diseño deseado en el que solo haya que incluir la información que varía en la ubicación del documento apropiada. Este sería en caso de una factura o justificante. Y si el documento es un informe con muchos datos o el diseño se desea cambia independientemente de la información que incluye o es complejo en vez de insertar cada campo de texto e imágenes individualmente con código está la opción de utilizar el generador de documentos JasperReports.
En el siguiente tutorial de PDFBox se incluyen más ejemplos de tareas básicas al procesar documentos PDF con esta librería. Con PDFBox el documento PDF se genera completamente mediante código, si el PDF requiere cambios hay que modificar el código que para documentos sencillos es aceptable. Para documentos PDF complejos y para separar el estilo, la información que contiene y que el código no requiera modificaciones también se pueden Generar documentos, informes y facturas en formato PDF con JasperReports.
El código fuente completo del ejemplo puedes descargarlo del repositorio de ejemplos de Blog Bitix alojado en GitHub y probarlo en tu equipo ejecutando siguiente comando:./gradlew run