pdf-lib.js: después de fusionar varios archivos pdf, los datos rellenados en los campos del formulario se vuelven invisibles
Al ver los archivos individualmente, todo está bien y los datos simplemente aparecen bien.
La cuestión:
Ejemplo: si un archivo pdf tiene datos completos (digamos abc.pdf) y después de combinar los archivos pdf en un solo archivo, la combinación está bien, pero los datos completos se vuelven invisibles mientras se visualizan en el iframe. Si hacemos clic en el campo, se vuelve visible.
A continuación se muestra mi código.
async function mergePDFDocuments(documents) { const mergedPdf = await PDFLib.PDFDocument.create(); for (let document of documents) { let existingPdfBytes = await fetch(document).then(res => res.arrayBuffer()) document = await PDFLib.PDFDocument.load(existingPdfBytes); const copiedPages = await mergedPdf.copyPages(document, document.getPageIndices()); copiedPages.forEach((page) => mergedPdf.addPage(page)); } const pdfDataUri = await mergedPdf.saveAsBase64({ dataUri: true }); let iframe = document.createElement('iframe') iframe.setAttribute('style', 'width: 100%; height: 100%;') iframe.setAttribute('src', pdfDataUri) iframe.setAttribute('class', 'custom-pdf-frame') document.body.appendChild(iframe) }Básicamente, combina todos los archivos pdf y establece el iframe src en la cadena base64.
Abrí abc.pdf en Acrobat Professional 8.1 y establecí el color de fondo de un campo en blanco y cargué el archivo en el navegador. Ese campo mostró los datos muy bien. Otros campos mostraban sus datos solo al hacer clic en el campo.
No estoy seguro de lo que me falta en el código. ¿O hay una opción para cambiar el color de fondo de los campos en el archivo pdf combinado usando pdf-lib.js?
Tal vez intente:
const pdfDataUri = await mergedPdf.saveAsBase64({ dataUri: true, updateFieldAppearances: true });Yo lo uso así:
var pdfBytes = await pdfDoc.save({ updateFieldAppearances: true });