From f6965fadc02cc62f873387cfa623f506a68fed38 Mon Sep 17 00:00:00 2001 From: Tim van der Meij Date: Wed, 14 Sep 2016 16:32:51 +0200 Subject: [PATCH 1/3] Text widget annotations: support multiline and read-only fields Moreover, this patch provides us with a framework for handling field flags in general for all types of widget annotations. --- src/core/annotation.js | 28 ++++++++++++++++++++++++++-- src/display/annotation_layer.js | 10 ++++++++-- src/shared/util.js | 23 +++++++++++++++++++++++ web/annotation_layer_builder.css | 22 +++++++++++++++++++--- 4 files changed, 76 insertions(+), 7 deletions(-) diff --git a/src/core/annotation.js b/src/core/annotation.js index 0527d17f4..e52c69a51 100644 --- a/src/core/annotation.js +++ b/src/core/annotation.js @@ -33,6 +33,7 @@ coreColorSpace, coreObj, coreEvaluator) { var AnnotationBorderStyleType = sharedUtil.AnnotationBorderStyleType; +var AnnotationFieldFlag = sharedUtil.AnnotationFieldFlag; var AnnotationFlag = sharedUtil.AnnotationFlag; var AnnotationType = sharedUtil.AnnotationType; var OPS = sharedUtil.OPS; @@ -621,9 +622,13 @@ var WidgetAnnotation = (function WidgetAnnotationClosure() { data.defaultAppearance = Util.getInheritableProperty(dict, 'DA') || ''; var fieldType = Util.getInheritableProperty(dict, 'FT'); data.fieldType = isName(fieldType) ? fieldType.name : null; - data.fieldFlags = Util.getInheritableProperty(dict, 'Ff') || 0; this.fieldResources = Util.getInheritableProperty(dict, 'DR') || Dict.empty; + data.fieldFlags = Util.getInheritableProperty(dict, 'Ff'); + if (!isInt(data.fieldFlags) || data.fieldFlags < 0) { + data.fieldFlags = 0; + } + // Hide signatures because we cannot validate them. if (data.fieldType === 'Sig') { this.setFlags(AnnotationFlag.HIDDEN); @@ -662,7 +667,22 @@ var WidgetAnnotation = (function WidgetAnnotationClosure() { data.fullName = fieldName.join('.'); } - Util.inherit(WidgetAnnotation, Annotation, {}); + Util.inherit(WidgetAnnotation, Annotation, { + /** + * Check if a provided field flag is set. + * + * @public + * @memberof WidgetAnnotation + * @param {number} flag - Bit position, numbered from one instead of + * zero, to check + * @return {boolean} + * @see {@link shared/util.js} + */ + hasFieldFlag: function WidgetAnnotation_hasFieldFlag(flag) { + var mask = 1 << (flag - 1); + return !!(this.data.fieldFlags & mask); + }, + }); return WidgetAnnotation; })(); @@ -684,6 +704,10 @@ var TextWidgetAnnotation = (function TextWidgetAnnotationClosure() { maximumLength = null; } this.data.maxLen = maximumLength; + + // Process field flags for the display layer. + this.data.readOnly = this.hasFieldFlag(AnnotationFieldFlag.READONLY); + this.data.multiLine = this.hasFieldFlag(AnnotationFieldFlag.MULTILINE); } Util.inherit(TextWidgetAnnotation, WidgetAnnotation, { diff --git a/src/display/annotation_layer.js b/src/display/annotation_layer.js index 60c8f4618..c81eefc4d 100644 --- a/src/display/annotation_layer.js +++ b/src/display/annotation_layer.js @@ -446,9 +446,15 @@ var TextWidgetAnnotationElement = ( var element = null; if (this.renderInteractiveForms) { - element = document.createElement('input'); - element.type = 'text'; + if (this.data.multiLine) { + element = document.createElement('textarea'); + } else { + element = document.createElement('input'); + element.type = 'text'; + } + element.value = this.data.fieldValue; + element.disabled = this.data.readOnly; if (this.data.maxLen !== null) { element.maxLength = this.data.maxLen; diff --git a/src/shared/util.js b/src/shared/util.js index 974e91004..853cc1a34 100644 --- a/src/shared/util.js +++ b/src/shared/util.js @@ -93,6 +93,28 @@ var AnnotationFlag = { LOCKEDCONTENTS: 0x200 }; +var AnnotationFieldFlag = { + READONLY: 1, + REQUIRED: 2, + NOEXPORT: 3, + MULTILINE: 13, + PASSWORD: 14, + NOTOGGLETOOFF: 15, + RADIO: 16, + PUSHBUTTON: 17, + COMBO: 18, + EDIT: 19, + SORT: 20, + FILESELECT: 21, + MULTISELECT: 22, + DONOTSPELLCHECK: 23, + DONOTSCROLL: 24, + COMB: 25, + RICHTEXT: 26, + RADIOSINUNISON: 26, + COMMITONSELCHANGE: 27, +}; + var AnnotationBorderStyleType = { SOLID: 1, DASHED: 2, @@ -2364,6 +2386,7 @@ exports.OPS = OPS; exports.VERBOSITY_LEVELS = VERBOSITY_LEVELS; exports.UNSUPPORTED_FEATURES = UNSUPPORTED_FEATURES; exports.AnnotationBorderStyleType = AnnotationBorderStyleType; +exports.AnnotationFieldFlag = AnnotationFieldFlag; exports.AnnotationFlag = AnnotationFlag; exports.AnnotationType = AnnotationType; exports.FontType = FontType; diff --git a/web/annotation_layer_builder.css b/web/annotation_layer_builder.css index 36b62b064..b7427a159 100644 --- a/web/annotation_layer_builder.css +++ b/web/annotation_layer_builder.css @@ -41,7 +41,8 @@ cursor: pointer; } -.annotationLayer .textWidgetAnnotation input { +.annotationLayer .textWidgetAnnotation input, +.annotationLayer .textWidgetAnnotation textarea { background-color: rgba(0, 54, 255, 0.13); border: 1px solid transparent; box-sizing: border-box; @@ -52,11 +53,26 @@ width: 100%; } -.annotationLayer .textWidgetAnnotation input:hover { +.annotationLayer .textWidgetAnnotation textarea { + font: message-box; + font-size: 9px; + resize: none; +} + +.annotationLayer .textWidgetAnnotation input[disabled], +.annotationLayer .textWidgetAnnotation textarea[disabled] { + background: none; + border: 1px solid transparent; + cursor: not-allowed; +} + +.annotationLayer .textWidgetAnnotation input:hover, +.annotationLayer .textWidgetAnnotation textarea:hover { border: 1px solid #000; } -.annotationLayer .textWidgetAnnotation input:focus { +.annotationLayer .textWidgetAnnotation input:focus, +.annotationLayer .textWidgetAnnotation textarea:focus { background: none; border: 1px solid transparent; } From adf0972ca57e66202acb489b8782a3b73d510bf5 Mon Sep 17 00:00:00 2001 From: Tim van der Meij Date: Wed, 14 Sep 2016 21:51:21 +0200 Subject: [PATCH 2/3] Text widget annotations: improve unit and reference tests This patch improves the unit tests by testing the support for read-only and multiline fields. Moreover, we add a reference test to ensure that the text widgets are not only rendered, but also that their contents are styled properly. Finally, we perform minor improvements in `src/core/annotation.js`, for example adding missing comments. --- src/core/annotation.js | 17 +++++++++-------- test/annotation_layer_test.css | 15 ++++++++++++++- test/pdfs/.gitignore | 1 + test/pdfs/annotation-text-widget.pdf | Bin 0 -> 91256 bytes test/test_manifest.json | 7 +++++++ test/unit/annotation_layer_spec.js | 17 ++++++++++++++--- 6 files changed, 45 insertions(+), 12 deletions(-) create mode 100644 test/pdfs/annotation-text-widget.pdf diff --git a/src/core/annotation.js b/src/core/annotation.js index e52c69a51..7abd2213f 100644 --- a/src/core/annotation.js +++ b/src/core/annotation.js @@ -66,6 +66,8 @@ AnnotationFactory.prototype = /** @lends AnnotationFactory.prototype */ { /** * @param {XRef} xref * @param {Object} ref + * @param {string} uniquePrefix + * @param {Object} idCounters * @returns {Annotation} */ create: function AnnotationFactory_create(xref, ref, @@ -717,20 +719,19 @@ var TextWidgetAnnotation = (function TextWidgetAnnotationClosure() { return Annotation.prototype.getOperatorList.call(this, evaluator, task); } - var opList = new OperatorList(); - var data = this.data; + var operatorList = new OperatorList(); // Even if there is an appearance stream, ignore it. This is the // behaviour used by Adobe Reader. - if (!data.defaultAppearance) { - return Promise.resolve(opList); + if (!this.data.defaultAppearance) { + return Promise.resolve(operatorList); } - var stream = new Stream(stringToBytes(data.defaultAppearance)); - return evaluator.getOperatorList(stream, task, - this.fieldResources, opList). + var stream = new Stream(stringToBytes(this.data.defaultAppearance)); + return evaluator.getOperatorList(stream, task, this.fieldResources, + operatorList). then(function () { - return opList; + return operatorList; }); } }); diff --git a/test/annotation_layer_test.css b/test/annotation_layer_test.css index f99ff1fad..ae5881c62 100644 --- a/test/annotation_layer_test.css +++ b/test/annotation_layer_test.css @@ -43,7 +43,8 @@ position: absolute; } -.annotationLayer .textWidgetAnnotation input { +.annotationLayer .textWidgetAnnotation input, +.annotationLayer .textWidgetAnnotation textarea { background-color: rgba(0, 54, 255, 0.13); border: 1px solid transparent; box-sizing: border-box; @@ -54,6 +55,18 @@ width: 100%; } +.annotationLayer .textWidgetAnnotation textarea { + font: message-box; + font-size: 9px; + resize: none; +} + +.annotationLayer .textWidgetAnnotation input[disabled], +.annotationLayer .textWidgetAnnotation textarea[disabled] { + background: none; + border: 1px solid transparent; +} + .annotationLayer .popupAnnotation { display: block !important; } diff --git a/test/pdfs/.gitignore b/test/pdfs/.gitignore index 546382bea..588d08aa5 100644 --- a/test/pdfs/.gitignore +++ b/test/pdfs/.gitignore @@ -249,4 +249,5 @@ !annotation-squiggly.pdf !annotation-highlight.pdf !annotation-fileattachment.pdf +!annotation-text-widget.pdf !zero_descent.pdf diff --git a/test/pdfs/annotation-text-widget.pdf b/test/pdfs/annotation-text-widget.pdf new file mode 100644 index 0000000000000000000000000000000000000000..d6c959c1a5faefe62a5c0f94305d6cf09dc1a14a GIT binary patch literal 91256 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 z%0D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 literal 0 HcmV?d00001 diff --git a/test/test_manifest.json b/test/test_manifest.json index bc8b0412c..821a4cb1e 100644 --- a/test/test_manifest.json +++ b/test/test_manifest.json @@ -3137,6 +3137,13 @@ "type": "eq", "annotations": true }, + { "id": "annotation-text-widget-forms", + "file": "pdfs/annotation-text-widget.pdf", + "md5": "cc9672539ad5b837152a9c6961e5f106", + "rounds": 1, + "type": "eq", + "forms": true + }, { "id": "issue6108", "file": "pdfs/issue6108.pdf", "md5": "8961cb55149495989a80bf0487e0f076", diff --git a/test/unit/annotation_layer_spec.js b/test/unit/annotation_layer_spec.js index 6971e6fca..267b6e8a9 100644 --- a/test/unit/annotation_layer_spec.js +++ b/test/unit/annotation_layer_spec.js @@ -469,7 +469,8 @@ describe('Annotation layer', function() { textWidgetDict = null; }); - it('should handle unknown text alignment and maximum length', function() { + it('should handle unknown text alignment, maximum length and flags', + function() { var textWidgetRef = new Ref(124, 0); var xref = new XRefMock([ { ref: textWidgetRef, data: textWidgetDict, } @@ -478,11 +479,15 @@ describe('Annotation layer', function() { var textWidgetAnnotation = annotationFactory.create(xref, textWidgetRef); expect(textWidgetAnnotation.data.textAlignment).toEqual(null); expect(textWidgetAnnotation.data.maxLen).toEqual(null); + expect(textWidgetAnnotation.data.readOnly).toEqual(false); + expect(textWidgetAnnotation.data.multiLine).toEqual(false); }); - it('should not set invalid text alignment and maximum length', function() { + it('should not set invalid text alignment, maximum length and flags', + function() { textWidgetDict.set('Q', 'center'); textWidgetDict.set('MaxLen', 'five'); + textWidgetDict.set('Ff', 'readonly'); var textWidgetRef = new Ref(43, 0); var xref = new XRefMock([ @@ -492,11 +497,15 @@ describe('Annotation layer', function() { var textWidgetAnnotation = annotationFactory.create(xref, textWidgetRef); expect(textWidgetAnnotation.data.textAlignment).toEqual(null); expect(textWidgetAnnotation.data.maxLen).toEqual(null); + expect(textWidgetAnnotation.data.readOnly).toEqual(false); + expect(textWidgetAnnotation.data.multiLine).toEqual(false); }); - it('should set valid text alignment and maximum length', function() { + it('should set valid text alignment, maximum length and flags', + function() { textWidgetDict.set('Q', 1); textWidgetDict.set('MaxLen', 20); + textWidgetDict.set('Ff', 4097); var textWidgetRef = new Ref(84, 0); var xref = new XRefMock([ @@ -506,6 +515,8 @@ describe('Annotation layer', function() { var textWidgetAnnotation = annotationFactory.create(xref, textWidgetRef); expect(textWidgetAnnotation.data.textAlignment).toEqual(1); expect(textWidgetAnnotation.data.maxLen).toEqual(20); + expect(textWidgetAnnotation.data.readOnly).toEqual(true); + expect(textWidgetAnnotation.data.multiLine).toEqual(true); }); }); From dbea302a6e2245abd4e6dd4ac30043754b09056b Mon Sep 17 00:00:00 2001 From: Tim van der Meij Date: Wed, 14 Sep 2016 22:49:37 +0200 Subject: [PATCH 3/3] Text widget annotations: do not render on canvas as well If interactive forms are enabled, then the display layer takes care of rendering the form elements. There is no need to draw them on the canvas as well. This also leads to issues when values are prefilled, because the text fields are transparent, so the contents that have been rendered onto the canvas will be visible too. We address this issue by passing the `renderInteractiveForms` parameter to the render task and handling it when the page is rendered (i.e., when the canvas is rendered). --- src/core/annotation.js | 17 ++++++++++++++--- src/core/document.js | 8 ++++++-- src/core/worker.js | 3 ++- src/display/api.js | 8 +++++++- web/pdf_page_view.js | 1 + 5 files changed, 30 insertions(+), 7 deletions(-) diff --git a/src/core/annotation.js b/src/core/annotation.js index 7abd2213f..42f49c2ed 100644 --- a/src/core/annotation.js +++ b/src/core/annotation.js @@ -68,10 +68,12 @@ AnnotationFactory.prototype = /** @lends AnnotationFactory.prototype */ { * @param {Object} ref * @param {string} uniquePrefix * @param {Object} idCounters + * @param {boolean} renderInteractiveForms * @returns {Annotation} */ create: function AnnotationFactory_create(xref, ref, - uniquePrefix, idCounters) { + uniquePrefix, idCounters, + renderInteractiveForms) { var dict = xref.fetchIfRef(ref); if (!isDict(dict)) { return; @@ -90,6 +92,7 @@ AnnotationFactory.prototype = /** @lends AnnotationFactory.prototype */ { ref: isRef(ref) ? ref : null, subtype: subtype, id: id, + renderInteractiveForms: renderInteractiveForms, }; switch (subtype) { @@ -693,6 +696,8 @@ var TextWidgetAnnotation = (function TextWidgetAnnotationClosure() { function TextWidgetAnnotation(params) { WidgetAnnotation.call(this, params); + this.renderInteractiveForms = params.renderInteractiveForms; + // Determine the alignment of text in the field. var alignment = Util.getInheritableProperty(params.dict, 'Q'); if (!isInt(alignment) || alignment < 0 || alignment > 2) { @@ -715,12 +720,18 @@ var TextWidgetAnnotation = (function TextWidgetAnnotationClosure() { Util.inherit(TextWidgetAnnotation, WidgetAnnotation, { getOperatorList: function TextWidgetAnnotation_getOperatorList(evaluator, task) { + var operatorList = new OperatorList(); + + // Do not render form elements on the canvas when interactive forms are + // enabled. The display layer is responsible for rendering them instead. + if (this.renderInteractiveForms) { + return Promise.resolve(operatorList); + } + if (this.appearance) { return Annotation.prototype.getOperatorList.call(this, evaluator, task); } - var operatorList = new OperatorList(); - // Even if there is an appearance stream, ignore it. This is the // behaviour used by Adobe Reader. if (!this.data.defaultAppearance) { diff --git a/src/core/document.js b/src/core/document.js index 9e414dc90..0d5535385 100644 --- a/src/core/document.js +++ b/src/core/document.js @@ -205,7 +205,8 @@ var Page = (function PageClosure() { }.bind(this)); }, - getOperatorList: function Page_getOperatorList(handler, task, intent) { + getOperatorList: function Page_getOperatorList(handler, task, intent, + renderInteractiveForms) { var self = this; var pdfManager = this.pdfManager; @@ -245,6 +246,8 @@ var Page = (function PageClosure() { }); }); + this.renderInteractiveForms = renderInteractiveForms; + var annotationsPromise = pdfManager.ensure(this, 'annotations'); return Promise.all([pageListPromise, annotationsPromise]).then( function(datas) { @@ -328,7 +331,8 @@ var Page = (function PageClosure() { var annotationRef = annotationRefs[i]; var annotation = annotationFactory.create(this.xref, annotationRef, this.uniquePrefix, - this.idCounters); + this.idCounters, + this.renderInteractiveForms); if (annotation) { annotations.push(annotation); } diff --git a/src/core/worker.js b/src/core/worker.js index 40e5a5a0f..33959e7bd 100644 --- a/src/core/worker.js +++ b/src/core/worker.js @@ -839,7 +839,8 @@ var WorkerMessageHandler = { var pageNum = pageIndex + 1; var start = Date.now(); // Pre compile the pdf page and fetch the fonts/images. - page.getOperatorList(handler, task, data.intent).then( + page.getOperatorList(handler, task, data.intent, + data.renderInteractiveForms).then( function(operatorList) { finishWorkerTask(task); diff --git a/src/display/api.js b/src/display/api.js index 22cabc63c..6ac9e8da5 100644 --- a/src/display/api.js +++ b/src/display/api.js @@ -656,6 +656,9 @@ var PDFDocumentProxy = (function PDFDocumentProxyClosure() { * calling of PDFPage.getViewport method. * @property {string} intent - Rendering intent, can be 'display' or 'print' * (default value is 'display'). + * @property {boolean} renderInteractiveForms - (optional) Whether or not + * interactive form elements are rendered in the display + * layer. If so, we do not render them on canvas as well. * @property {Array} transform - (optional) Additional transform, applied * just before viewport transform. * @property {Object} imageLayer - (optional) An object that has beginLayout, @@ -764,6 +767,8 @@ var PDFPageProxy = (function PDFPageProxyClosure() { this.pendingCleanup = false; var renderingIntent = (params.intent === 'print' ? 'print' : 'display'); + var renderInteractiveForms = (params.renderInteractiveForms === true ? + true : /* Default */ false); if (!this.intentStates[renderingIntent]) { this.intentStates[renderingIntent] = Object.create(null); @@ -784,7 +789,8 @@ var PDFPageProxy = (function PDFPageProxyClosure() { this.stats.time('Page Request'); this.transport.messageHandler.send('RenderPageRequest', { pageIndex: this.pageNumber - 1, - intent: renderingIntent + intent: renderingIntent, + renderInteractiveForms: renderInteractiveForms, }); } diff --git a/web/pdf_page_view.js b/web/pdf_page_view.js index 46ee7495c..bebe9e537 100644 --- a/web/pdf_page_view.js +++ b/web/pdf_page_view.js @@ -498,6 +498,7 @@ var PDFPageView = (function PDFPageViewClosure() { canvasContext: ctx, transform: transform, viewport: this.viewport, + renderInteractiveForms: pdfjsLib.PDFJS.renderInteractiveForms, // intent: 'default', // === 'display' }; var renderTask = this.renderTask = this.pdfPage.render(renderContext);