diff --git a/src/core/annotation.js b/src/core/annotation.js index 1355f08b4..8224b915b 100644 --- a/src/core/annotation.js +++ b/src/core/annotation.js @@ -866,7 +866,10 @@ class Annotation { if (!(as instanceof Name) || !normalAppearanceState.has(as.name)) { return; } - this.appearance = normalAppearanceState.get(as.name); + const appearance = normalAppearanceState.get(as.name); + if (appearance instanceof BaseStream) { + this.appearance = appearance; + } } setOptionalContent(dict) { @@ -3013,9 +3016,12 @@ class ButtonWidgetAnnotation extends WidgetAnnotation { this.data.exportValue = exportValues[1]; + const checkedAppearance = normalAppearance.get(this.data.exportValue); this.checkedAppearance = - normalAppearance.get(this.data.exportValue) || null; - this.uncheckedAppearance = normalAppearance.get("Off") || null; + checkedAppearance instanceof BaseStream ? checkedAppearance : null; + const uncheckedAppearance = normalAppearance.get("Off"); + this.uncheckedAppearance = + uncheckedAppearance instanceof BaseStream ? uncheckedAppearance : null; if (this.checkedAppearance) { this._streams.push(this.checkedAppearance); @@ -3058,9 +3064,12 @@ class ButtonWidgetAnnotation extends WidgetAnnotation { } } + const checkedAppearance = normalAppearance.get(this.data.buttonValue); this.checkedAppearance = - normalAppearance.get(this.data.buttonValue) || null; - this.uncheckedAppearance = normalAppearance.get("Off") || null; + checkedAppearance instanceof BaseStream ? checkedAppearance : null; + const uncheckedAppearance = normalAppearance.get("Off"); + this.uncheckedAppearance = + uncheckedAppearance instanceof BaseStream ? uncheckedAppearance : null; if (this.checkedAppearance) { this._streams.push(this.checkedAppearance); diff --git a/test/pdfs/.gitignore b/test/pdfs/.gitignore index bb699a606..4f04657ec 100644 --- a/test/pdfs/.gitignore +++ b/test/pdfs/.gitignore @@ -21,6 +21,7 @@ !issue14881.pdf !issue3214.pdf !issue4665.pdf +!checkbox-bad-appearance.pdf !issue4684.pdf !issue8092.pdf !issue5256.pdf diff --git a/test/pdfs/checkbox-bad-appearance.pdf b/test/pdfs/checkbox-bad-appearance.pdf new file mode 100644 index 000000000..c9fddd908 Binary files /dev/null and b/test/pdfs/checkbox-bad-appearance.pdf differ diff --git a/test/test_manifest.json b/test/test_manifest.json index d126594d3..39b297caa 100644 --- a/test/test_manifest.json +++ b/test/test_manifest.json @@ -785,6 +785,13 @@ "rounds": 1, "type": "eq" }, + { "id": "checkbox-bad-appearance", + "file": "pdfs/checkbox-bad-appearance.pdf", + "md5": "acdac655911cb3d33c3fb1462cf2ad56", + "rounds": 1, + "type": "eq", + "forms": true + }, { "id": "artofwar", "file": "pdfs/artofwar.pdf", "md5": "7bdd51c327b74f1f7abdd90eedb2f912",