diff --git a/src/core/annotation.js b/src/core/annotation.js index 923597e4c..3241152d7 100644 --- a/src/core/annotation.js +++ b/src/core/annotation.js @@ -25,6 +25,7 @@ import { escapeString, getModificationDate, isString, + objectSize, OPS, shadow, stringToPDFString, @@ -1460,18 +1461,20 @@ class WidgetAnnotation extends Annotation { if (dict.has("AA")) { const additionalActions = dict.get("AA"); for (const key of additionalActions.getKeys()) { - if (key in AnnotationActionEventType) { - const actionDict = additionalActions.getRaw(key); - const parents = new RefSet(); - const list = []; - this._collectJS(actionDict, xref, list, parents); - if (list.length > 0) { - actions[AnnotationActionEventType[key]] = list; - } + const action = AnnotationActionEventType[key]; + if (!action) { + continue; + } + const actionDict = additionalActions.getRaw(key); + const parents = new RefSet(); + const list = []; + this._collectJS(actionDict, xref, list, parents); + if (list.length > 0) { + actions[action] = list; } } } - // Collect the Action if any (we may have one on pushbutton) + // Collect the Action if any (we may have one on pushbutton). if (dict.has("A")) { const actionDict = dict.get("A"); const parents = new RefSet(); @@ -1481,7 +1484,7 @@ class WidgetAnnotation extends Annotation { actions.Action = list; } } - return actions; + return objectSize(actions) > 0 ? actions : null; } getFieldObject() { diff --git a/src/shared/util.js b/src/shared/util.js index ab1f58aef..c49e6e30c 100644 --- a/src/shared/util.js +++ b/src/shared/util.js @@ -585,6 +585,10 @@ function string32(value) { ); } +function objectSize(obj) { + return Object.keys(obj).length; +} + // Ensures that the returned Object has a `null` prototype. function objectFromEntries(iterable) { return Object.assign(Object.create(null), Object.fromEntries(iterable)); @@ -1040,6 +1044,7 @@ export { isString, isSameOrigin, createValidAbsoluteUrl, + objectSize, objectFromEntries, IsLittleEndianCached, IsEvalSupportedCached,