diff --git a/src/core/editor/pdf_editor.js b/src/core/editor/pdf_editor.js index 9c536e21e..c4358b784 100644 --- a/src/core/editor/pdf_editor.js +++ b/src/core/editor/pdf_editor.js @@ -2000,7 +2000,7 @@ class PDFEditor { const resourcesValuesCache = new Map(); for (const field of drToFix) { const ap = field.get("AP"); - for (const value of ap.getValues()) { + for (const [, value] of ap) { if (!(value instanceof BaseStream)) { continue; } diff --git a/test/pdfs/.gitignore b/test/pdfs/.gitignore index d591829ed..7996868da 100644 --- a/test/pdfs/.gitignore +++ b/test/pdfs/.gitignore @@ -906,3 +906,5 @@ !issue13520.pdf !22060_A1_01_Plans.pdf !issue21126.pdf +!bug2035197_1.pdf +!bug2035197_2.pdf diff --git a/test/pdfs/bug2035197_1.pdf b/test/pdfs/bug2035197_1.pdf new file mode 100644 index 000000000..a2df0f406 --- /dev/null +++ b/test/pdfs/bug2035197_1.pdf @@ -0,0 +1,41 @@ +%PDF-1.7 +%âãÏÓ +1 0 obj +<> +endobj +2 0 obj +<> +endobj +3 0 obj +<>>>/DA(/Helv 12 Tf 0 g)>> +endobj +4 0 obj +<>/Annots[5 0 R]>> +endobj +5 0 obj +<>/P 4 0 R>> +endobj +6 0 obj +<> +endobj +7 0 obj +<> +stream + +endstream +endobj +xref +0 8 +0000000000 65535 f +0000000019 00000 n +0000000079 00000 n +0000000130 00000 n +0000000211 00000 n +0000000304 00000 n +0000000411 00000 n +0000000474 00000 n +trailer +<> +startxref +564 +%%EOF diff --git a/test/pdfs/bug2035197_2.pdf b/test/pdfs/bug2035197_2.pdf new file mode 100644 index 000000000..f882a9eaa --- /dev/null +++ b/test/pdfs/bug2035197_2.pdf @@ -0,0 +1,34 @@ +%PDF-1.7 +%âãÏÓ +1 0 obj +<> +endobj +2 0 obj +<> +endobj +3 0 obj +<>>>/DA(/TiRo 12 Tf 0 g)>> +endobj +4 0 obj +<>/Annots[5 0 R]>> +endobj +5 0 obj +<> +endobj +6 0 obj +<> +endobj +xref +0 7 +0000000000 65535 f +0000000019 00000 n +0000000079 00000 n +0000000130 00000 n +0000000211 00000 n +0000000304 00000 n +0000000396 00000 n +trailer +<> +startxref +461 +%%EOF diff --git a/test/unit/api_spec.js b/test/unit/api_spec.js index dfa59c3b5..6727dd385 100644 --- a/test/unit/api_spec.js +++ b/test/unit/api_spec.js @@ -6586,6 +6586,29 @@ small scripts as well as for`); await loadingTask.destroy(); }); + + it("merges PDFs with conflicting AcroForm /DR (bug 2035197)", async function () { + // Two PDFs with different `AcroForm.DR`. + const loadingTask = getDocument( + buildGetDocumentParams("bug2035197_1.pdf") + ); + const pdfDoc = await loadingTask.promise; + const pdfData2 = await DefaultFileReaderFactory.fetch({ + path: TEST_PDFS_PATH + "bug2035197_2.pdf", + }); + + const data = await pdfDoc.extractPages([ + { document: null }, + { document: pdfData2 }, + ]); + expect(data).not.toBeNull(); + await loadingTask.destroy(); + + const newLoadingTask = getDocument(data); + const newPdfDoc = await newLoadingTask.promise; + expect(newPdfDoc.numPages).toEqual(2); + await newLoadingTask.destroy(); + }); }); describe("Outlines", function () {