Este repositorio contiene una Prueba de Concepto (PoC) desarrollada como ejercicio práctico para implementar la generación programática de documentos PDF en un entorno Java Backend.
El proyecto surge como respuesta proactiva a un desafío técnico común en el desarrollo de software empresarial: la exportación de reportes con contenido mixto (texto e imágenes) de manera eficiente.
- Lenguaje: Java SE (Enfoque en POO y Manejo de Excepciones).
- Librería Core: Apache PDFBox (Open Source).
- Gestión de Dependencias: Maven (
pom.xml). - IDE: IntelliJ IDEA.
El script ejecuta un flujo lineal de generación de documentos:
- Inicialización de Documento: Creación de instancias
PDDocumenten memoria. - Stream de Contenido: Uso de
PDPageContentStreampara "dibujar" elementos en coordenadas específicas (X, Y). - Manejo de Assets: Carga e incrustación de imágenes externas (
PDImageXObject) con validación de existencia de archivos (java.io.File). - Gestión de Recursos: Implementación de buenas prácticas para el cierre de flujos de memoria (
.close()) para evitar memory leaks.
Durante la implementación de esta solución, se consideraron los siguientes puntos clave para un entorno de producción real:
- Eficiencia de Memoria: A diferencia de generar HTML y convertirlo, el uso de librerías nativas como PDFBox permite un control granular sobre el peso del archivo final.
- Manejo de Errores: Se implementaron bloques
try-catchpara asegurar que el sistema no colapse si falta un recurso (como la imagen del logo), permitiendo una degradación elegante del servicio. - Escalabilidad: Aunque esta es una aplicación de consola (
Main), la lógica está desacoplada y lista para ser migrada a un Microservicio REST o una Cloud Function en Google Cloud Platform (GCP).
- Clonar el repositorio.
- Asegurarse de tener Maven cargado para bajar las dependencias de Apache PDFBox.
- Colocar una imagen llamada
logo.jpgen la raíz del proyecto. - Ejecutar la clase
Main. - Verificar la creación del archivo
resultado_prueba.pdf.
Autor: Rodrigo Vásquez Alarcón Desarrollador Fullstack Trainee