From a7c682c6009548ff10cabed9968939045437beb2 Mon Sep 17 00:00:00 2001 From: Calixte Denizet Date: Fri, 18 Dec 2020 13:17:23 +0100 Subject: [PATCH] Add a default DA for textfield to avoid issues when printing or saving * it aims to fix issue #12750 --- src/core/annotation.js | 14 +++++++++++++- test/pdfs/.gitignore | 1 + test/pdfs/issue12750.pdf | Bin 0 -> 26802 bytes test/test_manifest.json | 12 ++++++++++++ 4 files changed, 26 insertions(+), 1 deletion(-) create mode 100644 test/pdfs/issue12750.pdf diff --git a/src/core/annotation.js b/src/core/annotation.js index d26ddeafb..cf1f742d7 100644 --- a/src/core/annotation.js +++ b/src/core/annotation.js @@ -994,10 +994,13 @@ class WidgetAnnotation extends Annotation { data.defaultFieldValue = this._decodeFormValue(defaultFieldValue); data.alternativeText = stringToPDFString(dict.get("TU") || ""); - data.defaultAppearance = + const defaultAppearance = getInheritableProperty({ dict, key: "DA" }) || params.acroForm.get("DA") || ""; + data.defaultAppearance = isString(defaultAppearance) + ? defaultAppearance + : ""; const fieldType = getInheritableProperty({ dict, key: "FT" }); data.fieldType = isName(fieldType) ? fieldType.name : null; @@ -1282,6 +1285,15 @@ class WidgetAnnotation extends Annotation { const totalHeight = this.data.rect[3] - this.data.rect[1]; const totalWidth = this.data.rect[2] - this.data.rect[0]; + if (!this.data.defaultAppearance) { + // The DA is required and must be a string. + // If there is no font named Helvetica in the resource dictionary, + // the evaluator will fall back to a default font. + // Doing so prevents exceptions and allows saving/printing + // the file as expected. + this.data.defaultAppearance = "/Helvetica 0 Tf 0 g"; + } + const fontInfo = await this._getFontData(evaluator, task); const [font, fontName] = fontInfo; const fontSize = this._computeFontSize(...fontInfo, totalHeight); diff --git a/test/pdfs/.gitignore b/test/pdfs/.gitignore index e4fca428a..3433db767 100644 --- a/test/pdfs/.gitignore +++ b/test/pdfs/.gitignore @@ -48,6 +48,7 @@ !issue6931_reduced.pdf !issue7580.pdf !issue7598.pdf +!issue12750.pdf !issue7665.pdf !issue7696.pdf !issue7835.pdf diff --git a/test/pdfs/issue12750.pdf b/test/pdfs/issue12750.pdf new file mode 100644 index 0000000000000000000000000000000000000000..c4f5bd92ef64b40b0c1efd601aa27ff8782340e8 GIT binary patch literal 26802 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