diff --git a/bower.json b/bower.json index 4d247b05a..2a207d9cd 100644 --- a/bower.json +++ b/bower.json @@ -1,6 +1,6 @@ { "name": "pdfjs-dist", - "version": "1.1.341", + "version": "1.1.343", "main": [ "build/pdf.js", "build/pdf.worker.js" diff --git a/build/pdf.combined.js b/build/pdf.combined.js index 86217d995..c5ebb5d52 100644 --- a/build/pdf.combined.js +++ b/build/pdf.combined.js @@ -22,8 +22,8 @@ if (typeof PDFJS === 'undefined') { (typeof window !== 'undefined' ? window : this).PDFJS = {}; } -PDFJS.version = '1.1.341'; -PDFJS.build = 'd08895d'; +PDFJS.version = '1.1.343'; +PDFJS.build = 'e876dd8'; (function pdfjsWrapper() { // Use strict in our context only - users might not want it @@ -9221,10 +9221,12 @@ var Page = (function PageClosure() { get annotations() { var annotations = []; var annotationRefs = this.getInheritedPageProp('Annots') || []; + var annotationFactory = new AnnotationFactory(); for (var i = 0, n = annotationRefs.length; i < n; ++i) { var annotationRef = annotationRefs[i]; - var annotation = Annotation.fromRef(this.xref, annotationRef); - if (annotation) { + var annotation = annotationFactory.create(this.xref, annotationRef); + if (annotation && + (annotation.isViewable() || annotation.isPrintable())) { annotations.push(annotation); } } @@ -11303,7 +11305,54 @@ var ExpertSubsetCharset = [ var DEFAULT_ICON_SIZE = 22; // px -var SUPPORTED_TYPES = ['Link', 'Text', 'Widget']; + +/** + * @constructor + */ +function AnnotationFactory() {} +AnnotationFactory.prototype = { + /** + * @param {XRef} xref + * @param {Object} ref + * @returns {Annotation} + */ + create: function AnnotationFactory_create(xref, ref) { + var dict = xref.fetchIfRef(ref); + if (!isDict(dict)) { + return; + } + + // Determine the annotation's subtype. + var subtype = dict.get('Subtype'); + subtype = isName(subtype) ? subtype.name : ''; + + // Return the right annotation object based on the subtype and field type. + var parameters = { + dict: dict, + ref: ref + }; + + switch (subtype) { + case 'Link': + return new LinkAnnotation(parameters); + + case 'Text': + return new TextAnnotation(parameters); + + case 'Widget': + var fieldType = Util.getInheritableProperty(dict, 'FT'); + if (isName(fieldType) && fieldType.name === 'Tx') { + return new TextWidgetAnnotation(parameters); + } + return new WidgetAnnotation(parameters); + + default: + warn('Unimplemented annotation type "' + subtype + '", ' + + 'falling back to base annotation'); + return new Annotation(parameters); + } + } +}; var Annotation = (function AnnotationClosure() { // 12.5.5: Algorithm: Appearance streams @@ -11474,13 +11523,9 @@ var Annotation = (function AnnotationClosure() { isInvisible: function Annotation_isInvisible() { var data = this.data; - if (data && SUPPORTED_TYPES.indexOf(data.subtype) !== -1) { - return false; - } else { - return !!(data && - data.annotationFlags && // Default: not invisible - data.annotationFlags & 0x1); // Invisible - } + return !!(data && + data.annotationFlags && // Default: not invisible + data.annotationFlags & 0x1); // Invisible }, isViewable: function Annotation_isViewable() { @@ -11556,70 +11601,6 @@ var Annotation = (function AnnotationClosure() { } }; - Annotation.getConstructor = - function Annotation_getConstructor(subtype, fieldType) { - - if (!subtype) { - return; - } - - // TODO(mack): Implement FreeText annotations - if (subtype === 'Link') { - return LinkAnnotation; - } else if (subtype === 'Text') { - return TextAnnotation; - } else if (subtype === 'Widget') { - if (!fieldType) { - return; - } - - if (fieldType === 'Tx') { - return TextWidgetAnnotation; - } else { - return WidgetAnnotation; - } - } else { - return Annotation; - } - }; - - Annotation.fromRef = function Annotation_fromRef(xref, ref) { - - var dict = xref.fetchIfRef(ref); - if (!isDict(dict)) { - return; - } - - var subtype = dict.get('Subtype'); - subtype = isName(subtype) ? subtype.name : ''; - if (!subtype) { - return; - } - - var fieldType = Util.getInheritableProperty(dict, 'FT'); - fieldType = isName(fieldType) ? fieldType.name : ''; - - var Constructor = Annotation.getConstructor(subtype, fieldType); - if (!Constructor) { - return; - } - - var params = { - dict: dict, - ref: ref, - }; - - var annotation = new Constructor(params); - - if (annotation.isViewable() || annotation.isPrintable()) { - return annotation; - } else { - if (SUPPORTED_TYPES.indexOf(subtype) === -1) { - warn('unimplemented annotation type: ' + subtype); - } - } - }; - Annotation.appendToOperatorList = function Annotation_appendToOperatorList( annotations, opList, pdfManager, partialEvaluator, intent) { diff --git a/build/pdf.js b/build/pdf.js index ee6d38f84..15ac448e1 100644 --- a/build/pdf.js +++ b/build/pdf.js @@ -22,8 +22,8 @@ if (typeof PDFJS === 'undefined') { (typeof window !== 'undefined' ? window : this).PDFJS = {}; } -PDFJS.version = '1.1.341'; -PDFJS.build = 'd08895d'; +PDFJS.version = '1.1.343'; +PDFJS.build = 'e876dd8'; (function pdfjsWrapper() { // Use strict in our context only - users might not want it diff --git a/build/pdf.worker.js b/build/pdf.worker.js index b39ec3666..48e861c9f 100644 --- a/build/pdf.worker.js +++ b/build/pdf.worker.js @@ -22,8 +22,8 @@ if (typeof PDFJS === 'undefined') { (typeof window !== 'undefined' ? window : this).PDFJS = {}; } -PDFJS.version = '1.1.341'; -PDFJS.build = 'd08895d'; +PDFJS.version = '1.1.343'; +PDFJS.build = 'e876dd8'; (function pdfjsWrapper() { // Use strict in our context only - users might not want it @@ -2820,10 +2820,12 @@ var Page = (function PageClosure() { get annotations() { var annotations = []; var annotationRefs = this.getInheritedPageProp('Annots') || []; + var annotationFactory = new AnnotationFactory(); for (var i = 0, n = annotationRefs.length; i < n; ++i) { var annotationRef = annotationRefs[i]; - var annotation = Annotation.fromRef(this.xref, annotationRef); - if (annotation) { + var annotation = annotationFactory.create(this.xref, annotationRef); + if (annotation && + (annotation.isViewable() || annotation.isPrintable())) { annotations.push(annotation); } } @@ -4902,7 +4904,54 @@ var ExpertSubsetCharset = [ var DEFAULT_ICON_SIZE = 22; // px -var SUPPORTED_TYPES = ['Link', 'Text', 'Widget']; + +/** + * @constructor + */ +function AnnotationFactory() {} +AnnotationFactory.prototype = { + /** + * @param {XRef} xref + * @param {Object} ref + * @returns {Annotation} + */ + create: function AnnotationFactory_create(xref, ref) { + var dict = xref.fetchIfRef(ref); + if (!isDict(dict)) { + return; + } + + // Determine the annotation's subtype. + var subtype = dict.get('Subtype'); + subtype = isName(subtype) ? subtype.name : ''; + + // Return the right annotation object based on the subtype and field type. + var parameters = { + dict: dict, + ref: ref + }; + + switch (subtype) { + case 'Link': + return new LinkAnnotation(parameters); + + case 'Text': + return new TextAnnotation(parameters); + + case 'Widget': + var fieldType = Util.getInheritableProperty(dict, 'FT'); + if (isName(fieldType) && fieldType.name === 'Tx') { + return new TextWidgetAnnotation(parameters); + } + return new WidgetAnnotation(parameters); + + default: + warn('Unimplemented annotation type "' + subtype + '", ' + + 'falling back to base annotation'); + return new Annotation(parameters); + } + } +}; var Annotation = (function AnnotationClosure() { // 12.5.5: Algorithm: Appearance streams @@ -5073,13 +5122,9 @@ var Annotation = (function AnnotationClosure() { isInvisible: function Annotation_isInvisible() { var data = this.data; - if (data && SUPPORTED_TYPES.indexOf(data.subtype) !== -1) { - return false; - } else { - return !!(data && - data.annotationFlags && // Default: not invisible - data.annotationFlags & 0x1); // Invisible - } + return !!(data && + data.annotationFlags && // Default: not invisible + data.annotationFlags & 0x1); // Invisible }, isViewable: function Annotation_isViewable() { @@ -5155,70 +5200,6 @@ var Annotation = (function AnnotationClosure() { } }; - Annotation.getConstructor = - function Annotation_getConstructor(subtype, fieldType) { - - if (!subtype) { - return; - } - - // TODO(mack): Implement FreeText annotations - if (subtype === 'Link') { - return LinkAnnotation; - } else if (subtype === 'Text') { - return TextAnnotation; - } else if (subtype === 'Widget') { - if (!fieldType) { - return; - } - - if (fieldType === 'Tx') { - return TextWidgetAnnotation; - } else { - return WidgetAnnotation; - } - } else { - return Annotation; - } - }; - - Annotation.fromRef = function Annotation_fromRef(xref, ref) { - - var dict = xref.fetchIfRef(ref); - if (!isDict(dict)) { - return; - } - - var subtype = dict.get('Subtype'); - subtype = isName(subtype) ? subtype.name : ''; - if (!subtype) { - return; - } - - var fieldType = Util.getInheritableProperty(dict, 'FT'); - fieldType = isName(fieldType) ? fieldType.name : ''; - - var Constructor = Annotation.getConstructor(subtype, fieldType); - if (!Constructor) { - return; - } - - var params = { - dict: dict, - ref: ref, - }; - - var annotation = new Constructor(params); - - if (annotation.isViewable() || annotation.isPrintable()) { - return annotation; - } else { - if (SUPPORTED_TYPES.indexOf(subtype) === -1) { - warn('unimplemented annotation type: ' + subtype); - } - } - }; - Annotation.appendToOperatorList = function Annotation_appendToOperatorList( annotations, opList, pdfManager, partialEvaluator, intent) { diff --git a/package.json b/package.json index 8ed7a6e4d..9c6ab1c6d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "pdfjs-dist", - "version": "1.1.341", + "version": "1.1.343", "description": "Generic build of Mozilla's PDF.js library.", "keywords": [ "Mozilla",