From 41aaa083df1838af5a87f9f01e201e97a641268e Mon Sep 17 00:00:00 2001 From: Calixte Denizet Date: Tue, 9 Apr 2024 15:54:34 +0200 Subject: [PATCH] Don't render annotations with a null dimension Fixes #17906. --- src/core/annotation.js | 19 ++++++++++++++----- test/pdfs/issue17906.pdf.link | 1 + test/test_manifest.json | 10 ++++++++++ 3 files changed, 25 insertions(+), 5 deletions(-) create mode 100644 test/pdfs/issue17906.pdf.link diff --git a/src/core/annotation.js b/src/core/annotation.js index b5ab358575f2a..4efe7ae2f9352 100644 --- a/src/core/annotation.js +++ b/src/core/annotation.js @@ -1119,11 +1119,20 @@ class Annotation { renderForms, annotationStorage ) { - const data = this.data; + const { hasOwnCanvas, id, rect } = this.data; let appearance = this.appearance; const isUsingOwnCanvas = !!( - this.data.hasOwnCanvas && intent & RenderingIntentFlag.DISPLAY + hasOwnCanvas && intent & RenderingIntentFlag.DISPLAY ); + if (isUsingOwnCanvas && (rect[0] === rect[2] || rect[1] === rect[3])) { + // Empty annotation, don't draw anything. + this.data.hasOwnCanvas = false; + return { + opList: new OperatorList(), + separateForm: false, + separateCanvas: false, + }; + } if (!appearance) { if (!isUsingOwnCanvas) { return { @@ -1143,7 +1152,7 @@ class Annotation { ); const bbox = appearanceDict.getArray("BBox") || [0, 0, 1, 1]; const matrix = appearanceDict.getArray("Matrix") || [1, 0, 0, 1, 0, 0]; - const transform = getTransformMatrix(data.rect, bbox, matrix); + const transform = getTransformMatrix(rect, bbox, matrix); const opList = new OperatorList(); @@ -1159,8 +1168,8 @@ class Annotation { } opList.addOp(OPS.beginAnnotation, [ - data.id, - data.rect, + id, + rect, transform, matrix, isUsingOwnCanvas, diff --git a/test/pdfs/issue17906.pdf.link b/test/pdfs/issue17906.pdf.link new file mode 100644 index 0000000000000..f3427a6724e3d --- /dev/null +++ b/test/pdfs/issue17906.pdf.link @@ -0,0 +1 @@ +https://web.archive.org/web/20240408171222/https://www.myconsumers.org/docs/default-source/default-document-library/consumer_fee_schedule3cb1f27b220b46e38278186d8f609a23fc8e3ea533ad421d8caf5ccbd8df1cb5.pdf diff --git a/test/test_manifest.json b/test/test_manifest.json index ad3351073af8f..85fb66cbe90f6 100644 --- a/test/test_manifest.json +++ b/test/test_manifest.json @@ -9823,5 +9823,15 @@ "md5": "07d95eabf18aee0cf38f09eb7b1390ec", "rounds": 1, "type": "eq" + }, + { + "id": "issue17906", + "file": "pdfs/issue17906.pdf", + "md5": "f81c617e5113e0c510a4cfe8b012798e", + "rounds": 1, + "link": true, + "firstPage": 1, + "lastPage": 1, + "type": "eq" } ]