Closed edwargl7 closed 4 months ago
Se comenzó la prueba de concepto con la librería WeasyPrint de Python y se obtuvo el siguiente PDF de la plantilla de minuta de Contrato de Prestación de Servicios Profesionales o Apoyo a la Gestión con vigencia más reciente encontrada en la base de datos.
Cabe mencionar que se hizo una prueba preliminar reemplazando uno de los parámetros, en este caso el parámetro de NOMBRE_ORDENADOR, reemplazándolo por ABC, y el cambio se hace correctamente sin mayor dificultad:
El resultado obtenido con esta librería es muy bueno.
Problema que se soluciona pues añadiendo el cierre de la negrilla ( /b ):
Se siguió con la prueba de concepto de la biblioteca Puppeteer, después de un buen rato de intentos y errores, se llegó a la conclusión de que no es viable utilizar esta biblioteca debido a que es necesario el uso de Chromium-browser para el funcionamiento de la biblioteca y, al parecer, en el entorno virtual WSL que estoy manejando (y que la mayoría de los desarrolladores de la OATI utilizan) está limitado en cuanto al uso y ejecución de estas aplicaciones:
Este error indica que está utilizando Windows Subsystem for Linux (WSL) versión 1, que tiene algunas limitaciones, especialmente en lo que respecta a la ejecución de aplicaciones gráficas como Chromium:
Así que por el momento esta biblioteca deberá ser descartada.
Se siguió con la prueba de concepto de la biblioteca Html2pdf, similar a la anterior, después de un buen rato de intentos y errores, se llegó a la conclusión de que no es viable utilizar esta biblioteca debido a un error encontrado, aparentemente, referente a que Node.js, o por lo menos mi versión, no es compatible con dicha biblioteca:
Así que por el momento esta biblioteca deberá ser descartada.
En primera instancia se trabajo esta librería en Python, este fue el pdf resultado. Una cosa por mencionar es que en este pdf si toma el tamaño de la fuente expresado en el HTML que es de 1px y es por esto que la letra se ve tan diminuta, habría que ajustarlo.
Se realizó la prueba de reemplazo de un parámetro como, en este caso el parámetro de NOMBRE_ORDENADOR, reemplazándolo por ABC, y el cambio se hace correctamente sin mayor dificultad:
Esta biblioteca también se podía trabajan en Node.js, así que se hizo la respectiva prueba, siendo el resultado prácticamente el mismo pdf, para esta prueba no se alcanzó a probar el reemplazo de parámetros, quedaría pendiente, por lo demás considero que es una opción viable. Se mantiene la observación del ajuste del tamaño de letra que se encuentra en 1px.
Esta es una librería que hace uso de Wkhtmltopdf, pero además tiene la desventaja que por si misma no está diseñada para interpretar HTML a texto, es por esto que la prueba que se hizo con esta biblioteca dio como resultado un texto HTML impreso literalmente sobre el pdf:
Situación que claramente no nos es útil para nuestro objetivo. Además que para corregir esto se deben implementar otras bibliotecas extras (entre las cuales se encuentra Wkhtmltopdf), y no considero que esto sea funcional.
Revisando la documentación de esta biblioteca en diferentes lugares como este encontré que esta biblioteca lo que hace principalmente es tomar como "pantallazos" del HTML e imprimirlos en el PDF, situación que consideré que no nos es útil debido a que se busca que el documento de Nomina sea de texto plano y no de imágenes de texto, debido a esto no se realizó la prueba de concepto porqué no resulta pertinente.
Se realiza una revisión de los resultados obtenidos presentados durante el sprint, se revisa el repositorio con las pruebas de concepto realizadas. Se observa una investigación y prueba de concepto con una buena variedad de alternativas validadas. Además, con varias posibilidades que lograron alcanzar el resultado esperado.
Cumple con lo requerido, se cuenta con la opción de mPDF que es la librería que funciona actualmente en ARGO actual. Buen trabajo.
Se requiere realizar la prueba de concepto de las alternativas investigadas en la Issue #57 para generar la minuta desde la plantilla HTML y el estilo CSS, basado en la generación actual de minutas de ARGO. Donde se busca desarrollar un microservicio independiente de generación de PDF basado en las plantillas y datos requeridos.
Especificaciones técnicas
Sub Tareas
Criterios de aceptación
Requerimientos
No aplica
Definition of Ready - DoR
Definition of Done - DoD - Desarrollo