From 707a9e3b02d65802f3b27fdbd115496f0e638725 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Fri, 28 May 2021 13:30:18 +0200 Subject: [PATCH] Work-around for HighlightAnnotations without a top-level /ExtGState-entry (issue 13242) For HighlightAnnotations with a built-in appearance stream, we still rely on it to specify the opacity correctly via a suitable blend mode. However, if the Annotation-drawing operators are placed *within* a /XObject of the /Form-type, the /ExtGState won't apply to the final rendering and the result is that the highlighting obscures the underlying text. The more *correct* and general solution would likely be to somehow modify the implementation in `src/display/canvas.js`, to special-case handling of /Form-type /XObjects when rendering Annotations. Since we can very easily work-around this problem for now by using the "no appearance stream" code-path, doing *something* here ought to be preferable. This patch is (obviously) merely a work-around, but given that the referenced issue is (as far as I know) the first case we've seen of this problem a simple solution will hopefully suffice for now. --- src/core/annotation.js | 12 +++++++++++- test/pdfs/.gitignore | 1 + test/pdfs/issue13242.pdf | Bin 0 -> 27635 bytes test/test_manifest.json | 7 +++++++ 4 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 test/pdfs/issue13242.pdf diff --git a/src/core/annotation.js b/src/core/annotation.js index 9ade49e82..92dbef74f 100644 --- a/src/core/annotation.js +++ b/src/core/annotation.js @@ -2676,7 +2676,17 @@ class HighlightAnnotation extends MarkupAnnotation { null )); if (quadPoints) { - if (!this.appearance) { + const resources = + this.appearance && this.appearance.dict.get("Resources"); + + if (!this.appearance || !(resources && resources.has("ExtGState"))) { + if (this.appearance) { + // Workaround for cases where there's no /ExtGState-entry directly + // available, e.g. when the appearance stream contains a /XObject of + // the /Form-type, since that causes the highlighting to completely + // obsure the PDF content below it (fixes issue13242.pdf). + warn("HighlightAnnotation - ignoring built-in appearance stream."); + } // Default color is yellow in Acrobat Reader const fillColor = this.color ? Array.from(this.color).map(c => c / 255) diff --git a/test/pdfs/.gitignore b/test/pdfs/.gitignore index 1abd53fd2..ea1044a8d 100644 --- a/test/pdfs/.gitignore +++ b/test/pdfs/.gitignore @@ -254,6 +254,7 @@ !find_all.pdf !helloworld-bad.pdf !zerowidthline.pdf +!issue13242.pdf !js-colors.pdf !annotation-line-without-appearance-empty-Rect.pdf !issue12841_reduced.pdf diff --git a/test/pdfs/issue13242.pdf b/test/pdfs/issue13242.pdf new file mode 100644 index 0000000000000000000000000000000000000000..3fc33eccc915f0e5b99ae915e16e3fce52ef0cac GIT binary patch literal 27635 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 literal 0 HcmV?d00001 diff --git a/test/test_manifest.json b/test/test_manifest.json index 2bc7d078d..494dc9664 100644 --- a/test/test_manifest.json +++ b/test/test_manifest.json @@ -2324,6 +2324,13 @@ "lastPage": 1, "type": "eq" }, + { "id": "issue13242", + "file": "pdfs/issue13242.pdf", + "md5": "ceb2da908c972087eb90e6bae240bce9", + "rounds": 1, + "type": "eq", + "annotations": true + }, { "id": "issue7229", "file": "pdfs/issue7229.pdf", "md5": "480e51aae0ac271780e4603d1561d15e",