Generación de PDF en entornos de microservicios
Un cliente quería ampliar su entorno de microservicios con la generación y distribución de documentos PDF – en varios idiomas, sin despliegues costosos y sin trampas de licencias.
Generar y distribuir documentos PDF – integrados en el entorno AWS existente del cliente.
Un microservicio propio genera los PDF a partir de plantillas HTML con Thymeleaf, Flying Saucer y OpenPDF y se conecta mediante REST.
Las plantillas y las traducciones se pueden cambiar sin despliegue – con componentes cuya licencia permite el uso comercial.
Entra HTML, sale PDF
El proyecto utiliza Flying Saucer para convertir HTML en PDF. Por debajo puede usarse como librería PDF iText 5 u OpenPDF – los documentos resultantes son idénticos en tamaño y aspecto.
La recomendación fue OpenPDF: tiene licencia LGPL y puede usarse sin problemas en entornos comerciales. Además, el equipo de Flying Saucer dejó de dar soporte a iText 5 en mayo de 2024.
Cambiar sin desplegar
Un requisito clave: modificar plantillas PDF y traducciones sin tener que desplegar cada vez.
- Un microservicio propio se encarga de generar los PDF.
- Se conecta al entorno AWS existente mediante interfaces REST.
- Las plantillas HTML y las traducciones se guardan en una base de datos y se cargan de forma dinámica.
La cuestión de licencias que se subestima
La fuente incrustada en los PDF requiere especial atención – sobre todo para otros alfabetos como el cirílico. Fuentes populares como Arial requieren licencia y pueden generar costes considerables.
La solución: la familia de fuentes gratuita Noto. Admite más de 800 idiomas y puede redistribuirse libremente bajo la SIL Open Font License.
Funcionando en GitHub
Hay un prototipo funcional disponible públicamente en GitHub. Entrega los PDF de forma síncrona y se puede adaptar fácilmente a una distribución asíncrona.
- Java 21
- Kotlin
- Spring Boot
- Spring Data
- Hibernate
- PostgreSQL
- Docker
- Docker Compose
- Testcontainers
- Rest Assured
- JUnit
- Maven
