LuraPDF carga tu PDF usando pdf.js, que renderiza el contenido de cada página en un lienzo HTML. Una capa interactiva de fabric.js se superpone al renderizado de pdf.js, lo que permite interacciones como seleccionar con un clic, arrastrar, redimensionar y editar texto. Al editar un elemento de texto, modificas un objeto de texto de fabric.js que se superpone al renderizado original del PDF. Los nuevos objetos (formas, firmas, cuadros de texto, imágenes) se añaden como objetos de fabric.js posicionados en el lienzo. Esta arquitectura te proporciona un editor interactivo y adaptable que funciona completamente en el navegador sin necesidad de comunicación con el servidor.
Al hacer clic en Guardar PDF, pdf-lib toma el control. Analiza el PDF original y aplica cada edición como una modificación a los flujos de contenido del PDF: los cambios de texto se escriben como operadores de texto PDF actualizados, y los nuevos objetos se agregan como XObjects de formulario PDF posicionados en la página. El resultado es un documento PDF/1.7 válido, no una imagen plana de la página, sino un PDF real con la capa de texto, los hipervínculos y la funcionalidad de los campos de formulario conservados. El PDF resultante se descarga directamente en su dispositivo.