From 3103deaa44c75511edd3cc85eebfc2106c10b880 Mon Sep 17 00:00:00 2001 From: Calixte Denizet Date: Thu, 3 Oct 2024 21:48:58 +0200 Subject: [PATCH] Fix missing annotation parent in using the one from the Fields entry Fixes #15096. --- src/core/annotation.js | 16 +++++++++++++++- src/core/document.js | 38 +++++++++++++++++++++++++++++-------- src/core/worker.js | 4 +++- test/pdfs/.gitignore | 1 + test/pdfs/issue15096.pdf | Bin 0 -> 203730 bytes test/test_manifest.json | 17 +++++++++++++++++ test/unit/document_spec.js | 2 +- 7 files changed, 67 insertions(+), 11 deletions(-) create mode 100755 test/pdfs/issue15096.pdf diff --git a/src/core/annotation.js b/src/core/annotation.js index 8f415e9c050a5..825e9247a9a72 100644 --- a/src/core/annotation.js +++ b/src/core/annotation.js @@ -112,6 +112,7 @@ class AnnotationFactory { * @params {Object} annotationGlobals * @param {Object} idFactory * @param {boolean} [collectFields] + * @param {Object} [orphanFields] * @param {Object} [pageRef] * @returns {Promise} A promise that is resolved with an {Annotation} * instance. @@ -122,6 +123,7 @@ class AnnotationFactory { annotationGlobals, idFactory, collectFields, + orphanFields, pageRef ) { const pageIndex = collectFields @@ -134,6 +136,7 @@ class AnnotationFactory { annotationGlobals, idFactory, collectFields, + orphanFields, pageIndex, pageRef, ]); @@ -148,6 +151,7 @@ class AnnotationFactory { annotationGlobals, idFactory, collectFields = false, + orphanFields = null, pageIndex = null, pageRef = null ) { @@ -173,6 +177,7 @@ class AnnotationFactory { id, annotationGlobals, collectFields, + orphanFields, needAppearances: !collectFields && acroForm.get("NeedAppearances") === true, pageIndex, @@ -623,7 +628,11 @@ function getTransformMatrix(rect, bbox, matrix) { class Annotation { constructor(params) { - const { dict, xref, annotationGlobals } = params; + const { dict, xref, annotationGlobals, ref, orphanFields } = params; + const parentRef = orphanFields?.get(ref); + if (parentRef) { + dict.set("Parent", parentRef); + } this.setTitle(dict.get("T")); this.setContents(dict.get("Contents")); @@ -3172,6 +3181,11 @@ class ButtonWidgetAnnotation extends WidgetAnnotation { } } + if (!this.parent) { + // If there is no parent then we must set the value in the field. + dict.set("V", name); + } + dict.set("AS", name); dict.set("M", `D:${getModificationDate()}`); if (flags !== undefined) { diff --git a/src/core/document.js b/src/core/document.js index c484bae1d5df4..bff44ce1e4b89 100644 --- a/src/core/document.js +++ b/src/core/document.js @@ -787,12 +787,16 @@ class Page { if (annots.length === 0) { return annots; } - const annotationGlobals = - await this.pdfManager.ensureDoc("annotationGlobals"); + + const [annotationGlobals, fieldObjects] = await Promise.all([ + this.pdfManager.ensureDoc("annotationGlobals"), + this.pdfManager.ensureDoc("fieldObjects"), + ]); if (!annotationGlobals) { return []; } + const orphanFields = fieldObjects?.orphanFields; const annotationPromises = []; for (const annotationRef of annots) { annotationPromises.push( @@ -802,6 +806,7 @@ class Page { annotationGlobals, this._localIdFactory, /* collectFields */ false, + orphanFields, this.ref ).catch(function (reason) { warn(`_parsedAnnotations: "${reason}".`); @@ -1776,10 +1781,12 @@ class PDFDocument { async #collectFieldObjects( name, + parentRef, fieldRef, promises, annotationGlobals, - visitedRefs + visitedRefs, + orphanFields ) { const { xref } = this; @@ -1797,7 +1804,7 @@ class PDFDocument { } else { let obj = field; while (true) { - obj = obj.getRaw("Parent"); + obj = obj.getRaw("Parent") || parentRef; if (obj instanceof Ref) { if (visitedRefs.has(obj)) { break; @@ -1815,6 +1822,15 @@ class PDFDocument { } } + if ( + parentRef && + !field.has("Parent") && + isName(field.get("Subtype"), "Widget") + ) { + // We've a parent from the Fields array, but the field hasn't. + orphanFields.put(fieldRef, parentRef); + } + if (!promises.has(name)) { promises.set(name, []); } @@ -1825,6 +1841,7 @@ class PDFDocument { annotationGlobals, /* idFactory = */ null, /* collectFields */ true, + orphanFields, /* pageRef */ null ) .then(annotation => annotation?.getFieldObject()) @@ -1842,10 +1859,12 @@ class PDFDocument { for (const kid of kids) { await this.#collectFieldObjects( name, + fieldRef, kid, promises, annotationGlobals, - visitedRefs + visitedRefs, + orphanFields ); } } @@ -1867,13 +1886,16 @@ class PDFDocument { const visitedRefs = new RefSet(); const allFields = Object.create(null); const fieldPromises = new Map(); + const orphanFields = new RefSetCache(); for (const fieldRef of await acroForm.getAsync("Fields")) { await this.#collectFieldObjects( "", + null, fieldRef, fieldPromises, annotationGlobals, - visitedRefs + visitedRefs, + orphanFields ); } @@ -1890,7 +1912,7 @@ class PDFDocument { } await Promise.all(allPromises); - return allFields; + return { allFields, orphanFields }; }); return shadow(this, "fieldObjects", promise); @@ -1914,7 +1936,7 @@ class PDFDocument { return true; } if (fieldObjects) { - return Object.values(fieldObjects).some(fieldObject => + return Object.values(fieldObjects.allFields).some(fieldObject => fieldObject.some(object => object.actions !== null) ); } diff --git a/src/core/worker.js b/src/core/worker.js index 3764b12edcda6..a8e0c42306233 100644 --- a/src/core/worker.js +++ b/src/core/worker.js @@ -522,7 +522,9 @@ class WorkerMessageHandler { }); handler.on("GetFieldObjects", function (data) { - return pdfManager.ensureDoc("fieldObjects"); + return pdfManager + .ensureDoc("fieldObjects") + .then(fieldObjects => fieldObjects?.allFields || null); }); handler.on("HasJSActions", function (data) { diff --git a/test/pdfs/.gitignore b/test/pdfs/.gitignore index 001000de0b98c..d74a670c356d7 100644 --- a/test/pdfs/.gitignore +++ b/test/pdfs/.gitignore @@ -673,3 +673,4 @@ !highlight_popup.pdf !issue18072.pdf !stamps.pdf +!issue15096.pdf diff --git a/test/pdfs/issue15096.pdf b/test/pdfs/issue15096.pdf new file mode 100755 index 0000000000000000000000000000000000000000..35ac6288ff459184fa7740369b55371fbb2a105d GIT binary patch literal 203730 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 X!j{9Fgyh#I`a1$gz>rAH8Up_xU0SOU literal 0 HcmV?d00001 diff --git a/test/test_manifest.json b/test/test_manifest.json index 85e2b1058f9d4..044fb9825838b 100644 --- a/test/test_manifest.json +++ b/test/test_manifest.json @@ -10667,5 +10667,22 @@ "popupRef": "44R" } } + }, + { + "id": "issue15096", + "file": "pdfs/issue15096.pdf", + "md5": "5c3515177acd6e146d177adac802277d", + "rounds": 1, + "type": "eq", + "save": true, + "annotations": true, + "annotationStorage": { + "62R": { + "value": true + }, + "66R": { + "value": false + } + } } ] diff --git a/test/unit/document_spec.js b/test/unit/document_spec.js index 94de57dfbd22c..b0224e8821d59 100644 --- a/test/unit/document_spec.js +++ b/test/unit/document_spec.js @@ -250,7 +250,7 @@ describe("document", function () { acroForm.set("Fields", [parentRef]); pdfDocument = getDocument(acroForm, xref); - fields = await pdfDocument.fieldObjects; + fields = (await pdfDocument.fieldObjects).allFields; for (const [name, objs] of Object.entries(fields)) { fields[name] = objs.map(obj => obj.id);