Java es un lenguaje muy extendido en los entornos empresariales, donde la generación de informes y documentos en PDF es una necesidad constante.
Por ello, JODReports nos ayudó mucho hace unos años, y sigue haciéndolo, pero la necesidad de contar con soluciones más livianas y de bajo impacto en la infraestructura nos llevó a comenzar a migrar a XDocReport.
Aquí os contamos las virtudes que nos ha supuesto este cambio.
De JODReports…
Java OpenDocument Reports, es una solución para crear documentos de oficina e informes en formato OpenDocument Text a partir de plantillas que se pueden componer visualmente utilizando el procesador de texto OpenOffice.org Writer. Estos documentos se pueden convertir opcionalmente a otros formatos como PDF, Word y RTF con JODConverter.
Sus principales características son:
- Las plantillas son archivos de texto OpenDocument (ODT).
- Reemplazo de campo dinámico.
- Sustitución de una imagen incrustada.
- JODReports se basa en el popular lenguaje de plantillas FreeMarker.
- Los datos que se fusionarán en la plantilla se pueden suministrar como:
- Un mapa simple de variables.
- Un modelo de objetos de Java.
- Plantillas XML.
- Se proporciona soporte especial para aplicaciones web, incluida la integración con el marco Spring MVC.
- Con licencia bajo los términos de la LGPL, lo que básicamente significa que es de uso gratuito tanto en proyectos de código abierto como comerciales.
Cambiamos a XDocReport
XDocReport es un API Java open-source (licencia MIT) que permite generar informes en diversos formatos (PDF, XHTML) mergeando documentos/plantillas creados MS Office (.docx), OpenOffice (.odt) o LibreOffice (.odt) con un modelo Java.
¿Qué ganamos con este cambio?
- Comparte las mismas caracteristicas, no perdemos ninguna herramienta con el cambio, ni quitamos potencia al proyecto. Ambos trabajan con la libreria iText y se integran con
frameworks como Spring MVC. - No necesitamos un servidor OpenOffice activo, lanzar peticiones para generar documentos, abrir/cerrar conexiones… Evitando así problemas de servidor caído o de conexion.
- Eliminamos servidores de OpenOffice por entornos reduciendo la carga de nuestro sistema. También nos facilita el proceso de migración de aplicaciones a Google Cloud, objetivo en el que estamos inmersos.
- Evitamos problemas de apertura y cierre de etiquetas del XML con los diversos cambios de formatos que provocaban errores a nivel de plantilla, en ocasiones ilocalizables. Permite formatear el documento con más sencillez y rapidez.
- Se integra con frameworks como Spring MVC: https://github.com/opensagres/xdocreport/wiki/XDocReportSpringMVC
¿Cómo trabajamos con XDocReport?
- En mi plantilla creo variables (con sintaxis Velocity o FreeMarker), en este caso $name.
- Cargo la plantilla y sobre mi contexto sustituyo mi variable para generar otro documento ODT.
- Genero el documento en el formato adecuado, PDF en este caso.
Principal dificultad superada
- La inclusion de imagenes como objeto a la plantilla. Solventamos con generación de imagenes independiente y incrustando al final de la creación del documento. Realizamos un almacenamiento temporal, borrando la carga de imagenes después de finalizar el documento.
¿Y vosotros qué solución para generar o convertir a PDF utilizáis? Contadnos vuestras experiencias 😉