1
0
Fork 0
mirror of https://github.com/mozilla/pdf.js.git synced 2025-04-19 14:48:08 +02:00

Merge pull request #19289 from Snuffleupagus/issue-19281

Skip LinkAnnotations when collecting field objects (issue 19281)
This commit is contained in:
Tim van der Meij 2025-01-04 13:32:18 +01:00 committed by GitHub
commit 4d4e1befeb
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 37 additions and 3 deletions

View file

@ -20,6 +20,7 @@ import {
info,
InvalidPDFException,
isArrayEqual,
objectSize,
PageActionEventType,
RenderingIntentFlag,
shadow,
@ -1773,6 +1774,13 @@ class PDFDocument {
if (!(field instanceof Dict)) {
return;
}
let subtype = await field.getAsync("Subtype");
subtype = subtype instanceof Name ? subtype.name : null;
// Skip unrelated annotation types (see issue 19281).
switch (subtype) {
case "Link":
return;
}
if (field.has("T")) {
const partName = stringToPDFString(await field.getAsync("T"));
name = name === "" ? partName : `${name}.${partName}`;
@ -1888,9 +1896,12 @@ class PDFDocument {
})
);
}
await Promise.all(allPromises);
return { allFields, orphanFields };
return {
allFields: objectSize(allFields) > 0 ? allFields : null,
orphanFields,
};
});
return shadow(this, "fieldObjects", promise);
@ -1913,7 +1924,7 @@ class PDFDocument {
if (catalogJsActions) {
return true;
}
if (fieldObjects) {
if (fieldObjects?.allFields) {
return Object.values(fieldObjects.allFields).some(fieldObject =>
fieldObject.some(object => object.actions !== null)
);

View file

@ -0,0 +1 @@
https://github.com/user-attachments/files/18304780/Antarctica-Grid.pdf

View file

@ -11239,5 +11239,13 @@
"link": true,
"disableFontFace": true,
"type": "eq"
},
{
"id": "issue19281",
"file": "pdfs/issue19281.pdf",
"md5": "c5db558965e4189cc6db2720cdaa3e55",
"rounds": 1,
"link": true,
"type": "other"
}
]

View file

@ -1713,6 +1713,20 @@ describe("api", function () {
await loadingTask.destroy();
});
it("gets fieldObjects and skipping LinkAnnotations", async function () {
if (isNodeJS) {
pending("Linked test-cases are not supported in Node.js.");
}
const loadingTask = getDocument(buildGetDocumentParams("issue19281.pdf"));
const pdfDoc = await loadingTask.promise;
const fieldObjects = await pdfDoc.getFieldObjects();
expect(fieldObjects).toEqual(null);
await loadingTask.destroy();
});
it("gets non-existent calculationOrder", async function () {
const calculationOrder = await pdfDocument.getCalculationOrderIds();
expect(calculationOrder).toEqual(null);