diff --git a/bower.json b/bower.json index 36ef89872..1598e3774 100644 --- a/bower.json +++ b/bower.json @@ -1,6 +1,6 @@ { "name": "pdfjs-dist", - "version": "1.5.272", + "version": "1.5.274", "main": [ "build/pdf.js", "build/pdf.worker.js" diff --git a/build/pdf.combined.js b/build/pdf.combined.js index c4c0acc65..985ade58f 100644 --- a/build/pdf.combined.js +++ b/build/pdf.combined.js @@ -28,8 +28,8 @@ factory((root.pdfjsDistBuildPdfCombined = {})); // Use strict in our context only - users might not want it 'use strict'; -var pdfjsVersion = '1.5.272'; -var pdfjsBuild = '47b929b'; +var pdfjsVersion = '1.5.274'; +var pdfjsBuild = 'c55541f'; var pdfjsFilePath = typeof document !== 'undefined' && document.currentScript ? @@ -48513,28 +48513,49 @@ var Annotation = (function AnnotationClosure() { } Annotation.prototype = { + /** + * @private + */ + _hasFlag: function Annotation_hasFlag(flags, flag) { + return !!(flags & flag); + }, + + /** + * @private + */ + _isViewable: function Annotation_isViewable(flags) { + return !this._hasFlag(flags, AnnotationFlag.INVISIBLE) && + !this._hasFlag(flags, AnnotationFlag.HIDDEN) && + !this._hasFlag(flags, AnnotationFlag.NOVIEW); + }, + + /** + * @private + */ + _isPrintable: function AnnotationFlag_isPrintable(flags) { + return this._hasFlag(flags, AnnotationFlag.PRINT) && + !this._hasFlag(flags, AnnotationFlag.INVISIBLE) && + !this._hasFlag(flags, AnnotationFlag.HIDDEN); + }, + /** * @return {boolean} */ get viewable() { - if (this.flags) { - return !this.hasFlag(AnnotationFlag.INVISIBLE) && - !this.hasFlag(AnnotationFlag.HIDDEN) && - !this.hasFlag(AnnotationFlag.NOVIEW); + if (this.flags === 0) { + return true; } - return true; + return this._isViewable(this.flags); }, /** * @return {boolean} */ get printable() { - if (this.flags) { - return this.hasFlag(AnnotationFlag.PRINT) && - !this.hasFlag(AnnotationFlag.INVISIBLE) && - !this.hasFlag(AnnotationFlag.HIDDEN); + if (this.flags === 0) { + return false; } - return false; + return this._isPrintable(this.flags); }, /** @@ -48547,11 +48568,7 @@ var Annotation = (function AnnotationClosure() { * @see {@link shared/util.js} */ setFlags: function Annotation_setFlags(flags) { - if (isInt(flags)) { - this.flags = flags; - } else { - this.flags = 0; - } + this.flags = (isInt(flags) && flags > 0) ? flags : 0; }, /** @@ -48565,10 +48582,7 @@ var Annotation = (function AnnotationClosure() { * @see {@link shared/util.js} */ hasFlag: function Annotation_hasFlag(flag) { - if (this.flags) { - return (this.flags & flag) > 0; - } - return false; + return this._hasFlag(this.flags, flag); }, /** @@ -49146,6 +49160,16 @@ var PopupAnnotation = (function PopupAnnotationClosure() { this.setColor(parentItem.getArray('C')); this.data.color = this.color; } + + // If the Popup annotation is not viewable, but the parent annotation is, + // that is most likely a bug. Fallback to inherit the flags from the parent + // annotation (this is consistent with the behaviour in Adobe Reader). + if (!this.viewable) { + var parentFlags = parentItem.get('F'); + if (this._isViewable(parentFlags)) { + this.setFlags(parentFlags); + } + } } Util.inherit(PopupAnnotation, Annotation, {}); diff --git a/build/pdf.js b/build/pdf.js index 9f0fa31de..4230b2276 100644 --- a/build/pdf.js +++ b/build/pdf.js @@ -28,8 +28,8 @@ factory((root.pdfjsDistBuildPdf = {})); // Use strict in our context only - users might not want it 'use strict'; -var pdfjsVersion = '1.5.272'; -var pdfjsBuild = '47b929b'; +var pdfjsVersion = '1.5.274'; +var pdfjsBuild = 'c55541f'; var pdfjsFilePath = typeof document !== 'undefined' && document.currentScript ? diff --git a/build/pdf.worker.js b/build/pdf.worker.js index f45433b58..587d8c303 100644 --- a/build/pdf.worker.js +++ b/build/pdf.worker.js @@ -28,8 +28,8 @@ factory((root.pdfjsDistBuildPdfWorker = {})); // Use strict in our context only - users might not want it 'use strict'; -var pdfjsVersion = '1.5.272'; -var pdfjsBuild = '47b929b'; +var pdfjsVersion = '1.5.274'; +var pdfjsBuild = 'c55541f'; var pdfjsFilePath = typeof document !== 'undefined' && document.currentScript ? @@ -40172,28 +40172,49 @@ var Annotation = (function AnnotationClosure() { } Annotation.prototype = { + /** + * @private + */ + _hasFlag: function Annotation_hasFlag(flags, flag) { + return !!(flags & flag); + }, + + /** + * @private + */ + _isViewable: function Annotation_isViewable(flags) { + return !this._hasFlag(flags, AnnotationFlag.INVISIBLE) && + !this._hasFlag(flags, AnnotationFlag.HIDDEN) && + !this._hasFlag(flags, AnnotationFlag.NOVIEW); + }, + + /** + * @private + */ + _isPrintable: function AnnotationFlag_isPrintable(flags) { + return this._hasFlag(flags, AnnotationFlag.PRINT) && + !this._hasFlag(flags, AnnotationFlag.INVISIBLE) && + !this._hasFlag(flags, AnnotationFlag.HIDDEN); + }, + /** * @return {boolean} */ get viewable() { - if (this.flags) { - return !this.hasFlag(AnnotationFlag.INVISIBLE) && - !this.hasFlag(AnnotationFlag.HIDDEN) && - !this.hasFlag(AnnotationFlag.NOVIEW); + if (this.flags === 0) { + return true; } - return true; + return this._isViewable(this.flags); }, /** * @return {boolean} */ get printable() { - if (this.flags) { - return this.hasFlag(AnnotationFlag.PRINT) && - !this.hasFlag(AnnotationFlag.INVISIBLE) && - !this.hasFlag(AnnotationFlag.HIDDEN); + if (this.flags === 0) { + return false; } - return false; + return this._isPrintable(this.flags); }, /** @@ -40206,11 +40227,7 @@ var Annotation = (function AnnotationClosure() { * @see {@link shared/util.js} */ setFlags: function Annotation_setFlags(flags) { - if (isInt(flags)) { - this.flags = flags; - } else { - this.flags = 0; - } + this.flags = (isInt(flags) && flags > 0) ? flags : 0; }, /** @@ -40224,10 +40241,7 @@ var Annotation = (function AnnotationClosure() { * @see {@link shared/util.js} */ hasFlag: function Annotation_hasFlag(flag) { - if (this.flags) { - return (this.flags & flag) > 0; - } - return false; + return this._hasFlag(this.flags, flag); }, /** @@ -40805,6 +40819,16 @@ var PopupAnnotation = (function PopupAnnotationClosure() { this.setColor(parentItem.getArray('C')); this.data.color = this.color; } + + // If the Popup annotation is not viewable, but the parent annotation is, + // that is most likely a bug. Fallback to inherit the flags from the parent + // annotation (this is consistent with the behaviour in Adobe Reader). + if (!this.viewable) { + var parentFlags = parentItem.get('F'); + if (this._isViewable(parentFlags)) { + this.setFlags(parentFlags); + } + } } Util.inherit(PopupAnnotation, Annotation, {}); diff --git a/package.json b/package.json index 39a8032aa..134ab0f5e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "pdfjs-dist", - "version": "1.5.272", + "version": "1.5.274", "main": "build/pdf.js", "description": "Generic build of Mozilla's PDF.js library.", "keywords": [