From cefaecc2e8df1dff20ce3beb6ede9ef16dcdac28 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Mon, 16 Jan 2023 12:56:43 +0100 Subject: [PATCH] Ensure that Annotation `appearance`-entries are actually Streams Note how all over the `src/core/annotation.js`-code we're assuming that if an `appearance`-entry exists it's also a Stream. However, we're not actually checking that thoroughly enough which causes issues in some badly generated PDF documents. --- src/core/annotation.js | 19 ++++++++++++++----- test/pdfs/.gitignore | 1 + test/pdfs/checkbox-bad-appearance.pdf | Bin 0 -> 19872 bytes test/test_manifest.json | 7 +++++++ 4 files changed, 22 insertions(+), 5 deletions(-) create mode 100644 test/pdfs/checkbox-bad-appearance.pdf 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 0000000000000000000000000000000000000000..c9fddd908bfc67273fcc9fe1df9b1dd66c6cc974 GIT binary patch literal 19872 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 literal 0 HcmV?d00001 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",