diff --git a/bower.json b/bower.json index 21f45d2e5..bd86de084 100644 --- a/bower.json +++ b/bower.json @@ -1,6 +1,6 @@ { "name": "pdfjs-dist", - "version": "1.8.213", + "version": "1.8.233", "main": [ "build/pdf.js", "build/pdf.worker.js" diff --git a/build/pdf.combined.js b/build/pdf.combined.js index 38ca6221d..7de3b1dbd 100644 --- a/build/pdf.combined.js +++ b/build/pdf.combined.js @@ -3113,19 +3113,18 @@ exports.LZWStream = LZWStream; "use strict"; -var sharedUtil = __w_pdfjs_require__(0); -var assert = sharedUtil.assert; -var removeNullCharacters = sharedUtil.removeNullCharacters; -var warn = sharedUtil.warn; -var deprecated = sharedUtil.deprecated; -var createValidAbsoluteUrl = sharedUtil.createValidAbsoluteUrl; -var stringToBytes = sharedUtil.stringToBytes; -var CMapCompressionType = sharedUtil.CMapCompressionType; +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.DOMCMapReaderFactory = exports.DOMCanvasFactory = exports.DEFAULT_LINK_REL = exports.getDefaultSetting = exports.LinkTarget = exports.getFilenameFromUrl = exports.isValidUrl = exports.isExternalLinkTargetSet = exports.addLinkAttributes = exports.RenderingCancelledException = exports.CustomStyle = undefined; + +var _util = __w_pdfjs_require__(0); + var DEFAULT_LINK_REL = 'noopener noreferrer nofollow'; function DOMCanvasFactory() {} DOMCanvasFactory.prototype = { create: function DOMCanvasFactory_create(width, height) { - assert(width > 0 && height > 0, 'invalid canvas size'); + (0, _util.assert)(width > 0 && height > 0, 'invalid canvas size'); var canvas = document.createElement('canvas'); var context = canvas.getContext('2d'); canvas.width = width; @@ -3136,13 +3135,13 @@ DOMCanvasFactory.prototype = { }; }, reset: function DOMCanvasFactory_reset(canvasAndContextPair, width, height) { - assert(canvasAndContextPair.canvas, 'canvas is not specified'); - assert(width > 0 && height > 0, 'invalid canvas size'); + (0, _util.assert)(canvasAndContextPair.canvas, 'canvas is not specified'); + (0, _util.assert)(width > 0 && height > 0, 'invalid canvas size'); canvasAndContextPair.canvas.width = width; canvasAndContextPair.canvas.height = height; }, destroy: function DOMCanvasFactory_destroy(canvasAndContextPair) { - assert(canvasAndContextPair.canvas, 'canvas is not specified'); + (0, _util.assert)(canvasAndContextPair.canvas, 'canvas is not specified'); canvasAndContextPair.canvas.width = 0; canvasAndContextPair.canvas.height = 0; canvasAndContextPair.canvas = null; @@ -3176,12 +3175,12 @@ var DOMCMapReaderFactory = function DOMCMapReaderFactoryClosure() { if (this.isCompressed && request.response) { data = new Uint8Array(request.response); } else if (!this.isCompressed && request.responseText) { - data = stringToBytes(request.responseText); + data = (0, _util.stringToBytes)(request.responseText); } if (data) { resolve({ cMapData: data, - compressionType: this.isCompressed ? CMapCompressionType.BINARY : CMapCompressionType.NONE + compressionType: this.isCompressed ? _util.CMapCompressionType.BINARY : _util.CMapCompressionType.NONE }); return; } @@ -3246,7 +3245,7 @@ var LinkTarget = { var LinkTargetStringMap = ['', '_self', '_blank', '_parent', '_top']; function addLinkAttributes(link, params) { var url = params && params.url; - link.href = link.title = url ? removeNullCharacters(url) : ''; + link.href = link.title = url ? (0, _util.removeNullCharacters)(url) : ''; if (url) { var target = params.target; if (typeof target === 'undefined') { @@ -3267,7 +3266,7 @@ function getFilenameFromUrl(url) { return url.substring(url.lastIndexOf('/', end) + 1, end); } function getDefaultSetting(id) { - var globalSettings = sharedUtil.globalScope.PDFJS; + var globalSettings = _util.globalScope.PDFJS; switch (id) { case 'pdfBug': return globalSettings ? globalSettings.pdfBug : false; @@ -3313,7 +3312,7 @@ function getDefaultSetting(id) { case LinkTarget.TOP: return globalSettings.externalLinkTarget; } - warn('PDFJS.externalLinkTarget is invalid: ' + globalSettings.externalLinkTarget); + (0, _util.warn)('PDFJS.externalLinkTarget is invalid: ' + globalSettings.externalLinkTarget); globalSettings.externalLinkTarget = LinkTarget.NONE; return LinkTarget.NONE; case 'externalLinkRel': @@ -3339,17 +3338,17 @@ function isExternalLinkTargetSet() { } } function isValidUrl(url, allowRelative) { - deprecated('isValidUrl(), please use createValidAbsoluteUrl() instead.'); + (0, _util.deprecated)('isValidUrl(), please use createValidAbsoluteUrl() instead.'); var baseUrl = allowRelative ? 'http://example.com' : null; - return createValidAbsoluteUrl(url, baseUrl) !== null; + return (0, _util.createValidAbsoluteUrl)(url, baseUrl) !== null; } exports.CustomStyle = CustomStyle; +exports.RenderingCancelledException = RenderingCancelledException; exports.addLinkAttributes = addLinkAttributes; exports.isExternalLinkTargetSet = isExternalLinkTargetSet; exports.isValidUrl = isValidUrl; exports.getFilenameFromUrl = getFilenameFromUrl; exports.LinkTarget = LinkTarget; -exports.RenderingCancelledException = RenderingCancelledException; exports.getDefaultSetting = getDefaultSetting; exports.DEFAULT_LINK_REL = DEFAULT_LINK_REL; exports.DOMCanvasFactory = DOMCanvasFactory; @@ -10828,28 +10827,25 @@ exports.getDingbatsGlyphsUnicode = getDingbatsGlyphsUnicode; "use strict"; -var sharedUtil = __w_pdfjs_require__(0); -var displayDOMUtils = __w_pdfjs_require__(3); -var AnnotationBorderStyleType = sharedUtil.AnnotationBorderStyleType; -var AnnotationType = sharedUtil.AnnotationType; -var stringToPDFString = sharedUtil.stringToPDFString; -var Util = sharedUtil.Util; -var addLinkAttributes = displayDOMUtils.addLinkAttributes; -var LinkTarget = displayDOMUtils.LinkTarget; -var getFilenameFromUrl = displayDOMUtils.getFilenameFromUrl; -var warn = sharedUtil.warn; -var CustomStyle = displayDOMUtils.CustomStyle; -var getDefaultSetting = displayDOMUtils.getDefaultSetting; +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.AnnotationLayer = undefined; + +var _dom_utils = __w_pdfjs_require__(3); + +var _util = __w_pdfjs_require__(0); + function AnnotationElementFactory() {} AnnotationElementFactory.prototype = { create: function AnnotationElementFactory_create(parameters) { var subtype = parameters.data.annotationType; switch (subtype) { - case AnnotationType.LINK: + case _util.AnnotationType.LINK: return new LinkAnnotationElement(parameters); - case AnnotationType.TEXT: + case _util.AnnotationType.TEXT: return new TextAnnotationElement(parameters); - case AnnotationType.WIDGET: + case _util.AnnotationType.WIDGET: var fieldType = parameters.data.fieldType; switch (fieldType) { case 'Tx': @@ -10860,25 +10856,25 @@ AnnotationElementFactory.prototype = { } else if (parameters.data.checkBox) { return new CheckboxWidgetAnnotationElement(parameters); } - warn('Unimplemented button widget annotation: pushbutton'); + (0, _util.warn)('Unimplemented button widget annotation: pushbutton'); break; case 'Ch': return new ChoiceWidgetAnnotationElement(parameters); } return new WidgetAnnotationElement(parameters); - case AnnotationType.POPUP: + case _util.AnnotationType.POPUP: return new PopupAnnotationElement(parameters); - case AnnotationType.LINE: + case _util.AnnotationType.LINE: return new LineAnnotationElement(parameters); - case AnnotationType.HIGHLIGHT: + case _util.AnnotationType.HIGHLIGHT: return new HighlightAnnotationElement(parameters); - case AnnotationType.UNDERLINE: + case _util.AnnotationType.UNDERLINE: return new UnderlineAnnotationElement(parameters); - case AnnotationType.SQUIGGLY: + case _util.AnnotationType.SQUIGGLY: return new SquigglyAnnotationElement(parameters); - case AnnotationType.STRIKEOUT: + case _util.AnnotationType.STRIKEOUT: return new StrikeOutAnnotationElement(parameters); - case AnnotationType.FILEATTACHMENT: + case _util.AnnotationType.FILEATTACHMENT: return new FileAttachmentAnnotationElement(parameters); default: return new AnnotationElement(parameters); @@ -10909,12 +10905,12 @@ var AnnotationElement = function AnnotationElementClosure() { var width = data.rect[2] - data.rect[0]; var height = data.rect[3] - data.rect[1]; container.setAttribute('data-annotation-id', data.id); - var rect = Util.normalizeRect([data.rect[0], page.view[3] - data.rect[1] + page.view[1], data.rect[2], page.view[3] - data.rect[3] + page.view[1]]); - CustomStyle.setProp('transform', container, 'matrix(' + viewport.transform.join(',') + ')'); - CustomStyle.setProp('transformOrigin', container, -rect[0] + 'px ' + -rect[1] + 'px'); + var rect = _util.Util.normalizeRect([data.rect[0], page.view[3] - data.rect[1] + page.view[1], data.rect[2], page.view[3] - data.rect[3] + page.view[1]]); + _dom_utils.CustomStyle.setProp('transform', container, 'matrix(' + viewport.transform.join(',') + ')'); + _dom_utils.CustomStyle.setProp('transformOrigin', container, -rect[0] + 'px ' + -rect[1] + 'px'); if (!ignoreBorder && data.borderStyle.width > 0) { container.style.borderWidth = data.borderStyle.width + 'px'; - if (data.borderStyle.style !== AnnotationBorderStyleType.UNDERLINE) { + if (data.borderStyle.style !== _util.AnnotationBorderStyleType.UNDERLINE) { width = width - 2 * data.borderStyle.width; height = height - 2 * data.borderStyle.width; } @@ -10922,29 +10918,29 @@ var AnnotationElement = function AnnotationElementClosure() { var verticalRadius = data.borderStyle.verticalCornerRadius; if (horizontalRadius > 0 || verticalRadius > 0) { var radius = horizontalRadius + 'px / ' + verticalRadius + 'px'; - CustomStyle.setProp('borderRadius', container, radius); + _dom_utils.CustomStyle.setProp('borderRadius', container, radius); } switch (data.borderStyle.style) { - case AnnotationBorderStyleType.SOLID: + case _util.AnnotationBorderStyleType.SOLID: container.style.borderStyle = 'solid'; break; - case AnnotationBorderStyleType.DASHED: + case _util.AnnotationBorderStyleType.DASHED: container.style.borderStyle = 'dashed'; break; - case AnnotationBorderStyleType.BEVELED: - warn('Unimplemented border style: beveled'); + case _util.AnnotationBorderStyleType.BEVELED: + (0, _util.warn)('Unimplemented border style: beveled'); break; - case AnnotationBorderStyleType.INSET: - warn('Unimplemented border style: inset'); + case _util.AnnotationBorderStyleType.INSET: + (0, _util.warn)('Unimplemented border style: inset'); break; - case AnnotationBorderStyleType.UNDERLINE: + case _util.AnnotationBorderStyleType.UNDERLINE: container.style.borderBottomStyle = 'solid'; break; default: break; } if (data.color) { - container.style.borderColor = Util.makeCssRgb(data.color[0] | 0, data.color[1] | 0, data.color[2] | 0); + container.style.borderColor = _util.Util.makeCssRgb(data.color[0] | 0, data.color[1] | 0, data.color[2] | 0); } else { container.style.borderWidth = 0; } @@ -10984,13 +10980,13 @@ var LinkAnnotationElement = function LinkAnnotationElementClosure() { function LinkAnnotationElement(parameters) { AnnotationElement.call(this, parameters, true); } - Util.inherit(LinkAnnotationElement, AnnotationElement, { + _util.Util.inherit(LinkAnnotationElement, AnnotationElement, { render: function LinkAnnotationElement_render() { this.container.className = 'linkAnnotation'; var link = document.createElement('a'); - addLinkAttributes(link, { + (0, _dom_utils.addLinkAttributes)(link, { url: this.data.url, - target: this.data.newWindow ? LinkTarget.BLANK : undefined + target: this.data.newWindow ? _dom_utils.LinkTarget.BLANK : undefined }); if (!this.data.url) { if (this.data.action) { @@ -11032,7 +11028,7 @@ var TextAnnotationElement = function TextAnnotationElementClosure() { var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents); AnnotationElement.call(this, parameters, isRenderable); } - Util.inherit(TextAnnotationElement, AnnotationElement, { + _util.Util.inherit(TextAnnotationElement, AnnotationElement, { render: function TextAnnotationElement_render() { this.container.className = 'textAnnotation'; var image = document.createElement('img'); @@ -11055,7 +11051,7 @@ var WidgetAnnotationElement = function WidgetAnnotationElementClosure() { function WidgetAnnotationElement(parameters, isRenderable) { AnnotationElement.call(this, parameters, isRenderable); } - Util.inherit(WidgetAnnotationElement, AnnotationElement, { + _util.Util.inherit(WidgetAnnotationElement, AnnotationElement, { render: function WidgetAnnotationElement_render() { return this.container; } @@ -11068,7 +11064,7 @@ var TextWidgetAnnotationElement = function TextWidgetAnnotationElementClosure() var isRenderable = parameters.renderInteractiveForms || !parameters.data.hasAppearance && !!parameters.data.fieldValue; WidgetAnnotationElement.call(this, parameters, isRenderable); } - Util.inherit(TextWidgetAnnotationElement, WidgetAnnotationElement, { + _util.Util.inherit(TextWidgetAnnotationElement, WidgetAnnotationElement, { render: function TextWidgetAnnotationElement_render() { this.container.className = 'textWidgetAnnotation'; var element = null; @@ -11128,7 +11124,7 @@ var CheckboxWidgetAnnotationElement = function CheckboxWidgetAnnotationElementCl function CheckboxWidgetAnnotationElement(parameters) { WidgetAnnotationElement.call(this, parameters, parameters.renderInteractiveForms); } - Util.inherit(CheckboxWidgetAnnotationElement, WidgetAnnotationElement, { + _util.Util.inherit(CheckboxWidgetAnnotationElement, WidgetAnnotationElement, { render: function CheckboxWidgetAnnotationElement_render() { this.container.className = 'buttonWidgetAnnotation checkBox'; var element = document.createElement('input'); @@ -11147,7 +11143,7 @@ var RadioButtonWidgetAnnotationElement = function RadioButtonWidgetAnnotationEle function RadioButtonWidgetAnnotationElement(parameters) { WidgetAnnotationElement.call(this, parameters, parameters.renderInteractiveForms); } - Util.inherit(RadioButtonWidgetAnnotationElement, WidgetAnnotationElement, { + _util.Util.inherit(RadioButtonWidgetAnnotationElement, WidgetAnnotationElement, { render: function RadioButtonWidgetAnnotationElement_render() { this.container.className = 'buttonWidgetAnnotation radioButton'; var element = document.createElement('input'); @@ -11167,7 +11163,7 @@ var ChoiceWidgetAnnotationElement = function ChoiceWidgetAnnotationElementClosur function ChoiceWidgetAnnotationElement(parameters) { WidgetAnnotationElement.call(this, parameters, parameters.renderInteractiveForms); } - Util.inherit(ChoiceWidgetAnnotationElement, WidgetAnnotationElement, { + _util.Util.inherit(ChoiceWidgetAnnotationElement, WidgetAnnotationElement, { render: function ChoiceWidgetAnnotationElement_render() { this.container.className = 'choiceWidgetAnnotation'; var selectElement = document.createElement('select'); @@ -11200,7 +11196,7 @@ var PopupAnnotationElement = function PopupAnnotationElementClosure() { var isRenderable = !!(parameters.data.title || parameters.data.contents); AnnotationElement.call(this, parameters, isRenderable); } - Util.inherit(PopupAnnotationElement, AnnotationElement, { + _util.Util.inherit(PopupAnnotationElement, AnnotationElement, { render: function PopupAnnotationElement_render() { this.container.className = 'popupAnnotation'; if (IGNORE_TYPES.indexOf(this.data.parentType) >= 0) { @@ -11220,7 +11216,7 @@ var PopupAnnotationElement = function PopupAnnotationElementClosure() { }); var parentLeft = parseFloat(parentElement.style.left); var parentWidth = parseFloat(parentElement.style.width); - CustomStyle.setProp('transformOrigin', this.container, -(parentLeft + parentWidth) + 'px -' + parentElement.style.top); + _dom_utils.CustomStyle.setProp('transformOrigin', this.container, -(parentLeft + parentWidth) + 'px -' + parentElement.style.top); this.container.style.left = parentLeft + parentWidth + 'px'; this.container.appendChild(popup.render()); return this.container; @@ -11252,7 +11248,7 @@ var PopupElement = function PopupElementClosure() { var r = BACKGROUND_ENLIGHT * (255 - color[0]) + color[0]; var g = BACKGROUND_ENLIGHT * (255 - color[1]) + color[1]; var b = BACKGROUND_ENLIGHT * (255 - color[2]) + color[2]; - popup.style.backgroundColor = Util.makeCssRgb(r | 0, g | 0, b | 0); + popup.style.backgroundColor = _util.Util.makeCssRgb(r | 0, g | 0, b | 0); } var contents = this._formatContents(this.contents); var title = document.createElement('h1'); @@ -11312,7 +11308,7 @@ var LineAnnotationElement = function LineAnnotationElementClosure() { var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents); AnnotationElement.call(this, parameters, isRenderable, true); } - Util.inherit(LineAnnotationElement, AnnotationElement, { + _util.Util.inherit(LineAnnotationElement, AnnotationElement, { render: function LineAnnotationElement_render() { this.container.className = 'lineAnnotation'; var data = this.data; @@ -11344,7 +11340,7 @@ var HighlightAnnotationElement = function HighlightAnnotationElementClosure() { var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents); AnnotationElement.call(this, parameters, isRenderable, true); } - Util.inherit(HighlightAnnotationElement, AnnotationElement, { + _util.Util.inherit(HighlightAnnotationElement, AnnotationElement, { render: function HighlightAnnotationElement_render() { this.container.className = 'highlightAnnotation'; if (!this.data.hasPopup) { @@ -11360,7 +11356,7 @@ var UnderlineAnnotationElement = function UnderlineAnnotationElementClosure() { var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents); AnnotationElement.call(this, parameters, isRenderable, true); } - Util.inherit(UnderlineAnnotationElement, AnnotationElement, { + _util.Util.inherit(UnderlineAnnotationElement, AnnotationElement, { render: function UnderlineAnnotationElement_render() { this.container.className = 'underlineAnnotation'; if (!this.data.hasPopup) { @@ -11376,7 +11372,7 @@ var SquigglyAnnotationElement = function SquigglyAnnotationElementClosure() { var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents); AnnotationElement.call(this, parameters, isRenderable, true); } - Util.inherit(SquigglyAnnotationElement, AnnotationElement, { + _util.Util.inherit(SquigglyAnnotationElement, AnnotationElement, { render: function SquigglyAnnotationElement_render() { this.container.className = 'squigglyAnnotation'; if (!this.data.hasPopup) { @@ -11392,7 +11388,7 @@ var StrikeOutAnnotationElement = function StrikeOutAnnotationElementClosure() { var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents); AnnotationElement.call(this, parameters, isRenderable, true); } - Util.inherit(StrikeOutAnnotationElement, AnnotationElement, { + _util.Util.inherit(StrikeOutAnnotationElement, AnnotationElement, { render: function StrikeOutAnnotationElement_render() { this.container.className = 'strikeoutAnnotation'; if (!this.data.hasPopup) { @@ -11407,15 +11403,15 @@ var FileAttachmentAnnotationElement = function FileAttachmentAnnotationElementCl function FileAttachmentAnnotationElement(parameters) { AnnotationElement.call(this, parameters, true); var file = this.data.file; - this.filename = getFilenameFromUrl(file.filename); + this.filename = (0, _dom_utils.getFilenameFromUrl)(file.filename); this.content = file.content; this.linkService.onFileAttachmentAnnotation({ - id: stringToPDFString(file.filename), + id: (0, _util.stringToPDFString)(file.filename), filename: file.filename, content: file.content }); } - Util.inherit(FileAttachmentAnnotationElement, AnnotationElement, { + _util.Util.inherit(FileAttachmentAnnotationElement, AnnotationElement, { render: function FileAttachmentAnnotationElement_render() { this.container.className = 'fileAttachmentAnnotation'; var trigger = document.createElement('div'); @@ -11430,7 +11426,7 @@ var FileAttachmentAnnotationElement = function FileAttachmentAnnotationElementCl }, _download: function FileAttachmentAnnotationElement_download() { if (!this.downloadManager) { - warn('Download cannot be started due to unavailable download manager'); + (0, _util.warn)('Download cannot be started due to unavailable download manager'); return; } this.downloadManager.downloadData(this.content, this.filename, ''); @@ -11454,7 +11450,7 @@ var AnnotationLayer = function AnnotationLayerClosure() { viewport: parameters.viewport, linkService: parameters.linkService, downloadManager: parameters.downloadManager, - imageResourcesPath: parameters.imageResourcesPath || getDefaultSetting('imageResourcesPath'), + imageResourcesPath: parameters.imageResourcesPath || (0, _dom_utils.getDefaultSetting)('imageResourcesPath'), renderInteractiveForms: parameters.renderInteractiveForms || false }); if (element.isRenderable) { @@ -11467,7 +11463,7 @@ var AnnotationLayer = function AnnotationLayerClosure() { var data = parameters.annotations[i]; var element = parameters.div.querySelector('[data-annotation-id="' + data.id + '"]'); if (element) { - CustomStyle.setProp('transform', element, 'matrix(' + parameters.viewport.transform.join(',') + ')'); + _dom_utils.CustomStyle.setProp('transform', element, 'matrix(' + parameters.viewport.transform.join(',') + ')'); } } parameters.div.removeAttribute('hidden'); @@ -11483,44 +11479,23 @@ exports.AnnotationLayer = AnnotationLayer; "use strict"; +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.build = exports.version = exports._UnsupportedManager = exports.PDFPageProxy = exports.PDFDocumentProxy = exports.PDFWorker = exports.PDFDataRangeTransport = exports.getDocument = undefined; + var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; -var sharedUtil = __w_pdfjs_require__(0); -var displayFontLoader = __w_pdfjs_require__(45); -var displayCanvas = __w_pdfjs_require__(44); -var displayMetadata = __w_pdfjs_require__(24); -var displayDOMUtils = __w_pdfjs_require__(3); -var amdRequire; -var InvalidPDFException = sharedUtil.InvalidPDFException; -var MessageHandler = sharedUtil.MessageHandler; -var MissingPDFException = sharedUtil.MissingPDFException; -var PageViewport = sharedUtil.PageViewport; -var PasswordException = sharedUtil.PasswordException; -var StatTimer = sharedUtil.StatTimer; -var UnexpectedResponseException = sharedUtil.UnexpectedResponseException; -var UnknownErrorException = sharedUtil.UnknownErrorException; -var Util = sharedUtil.Util; -var createPromiseCapability = sharedUtil.createPromiseCapability; -var error = sharedUtil.error; -var deprecated = sharedUtil.deprecated; -var getVerbosityLevel = sharedUtil.getVerbosityLevel; -var info = sharedUtil.info; -var isInt = sharedUtil.isInt; -var isArray = sharedUtil.isArray; -var isArrayBuffer = sharedUtil.isArrayBuffer; -var isSameOrigin = sharedUtil.isSameOrigin; -var loadJpegStream = sharedUtil.loadJpegStream; -var stringToBytes = sharedUtil.stringToBytes; -var globalScope = sharedUtil.globalScope; -var warn = sharedUtil.warn; -var FontFaceObject = displayFontLoader.FontFaceObject; -var FontLoader = displayFontLoader.FontLoader; -var CanvasGraphics = displayCanvas.CanvasGraphics; -var Metadata = displayMetadata.Metadata; -var RenderingCancelledException = displayDOMUtils.RenderingCancelledException; -var getDefaultSetting = displayDOMUtils.getDefaultSetting; -var DOMCanvasFactory = displayDOMUtils.DOMCanvasFactory; -var DOMCMapReaderFactory = displayDOMUtils.DOMCMapReaderFactory; +var _util = __w_pdfjs_require__(0); + +var _dom_utils = __w_pdfjs_require__(3); + +var _font_loader = __w_pdfjs_require__(45); + +var _canvas = __w_pdfjs_require__(44); + +var _metadata = __w_pdfjs_require__(24); + var DEFAULT_RANGE_CHUNK_SIZE = 65536; var isWorkerDisabled = false; var workerSrc; @@ -11528,10 +11503,11 @@ var isPostMessageTransfersDisabled = false; var pdfjsFilePath = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : null; var fakeWorkerFilesLoader = null; var useRequireEnsure = false; +; function getDocument(src, pdfDataRangeTransport, passwordCallback, progressCallback) { var task = new PDFDocumentLoadingTask(); if (arguments.length > 1) { - deprecated('getDocument is called with pdfDataRangeTransport, ' + 'passwordCallback or progressCallback argument'); + (0, _util.deprecated)('getDocument is called with pdfDataRangeTransport, ' + 'passwordCallback or progressCallback argument'); } if (pdfDataRangeTransport) { if (!(pdfDataRangeTransport instanceof PDFDataRangeTransport)) { @@ -11550,16 +11526,16 @@ function getDocument(src, pdfDataRangeTransport, passwordCallback, progressCallb var source; if (typeof src === 'string') { source = { url: src }; - } else if (isArrayBuffer(src)) { + } else if ((0, _util.isArrayBuffer)(src)) { source = { data: src }; } else if (src instanceof PDFDataRangeTransport) { source = { range: src }; } else { if ((typeof src === 'undefined' ? 'undefined' : _typeof(src)) !== 'object') { - error('Invalid parameter in getDocument, need either Uint8Array, ' + 'string or a parameter object'); + (0, _util.error)('Invalid parameter in getDocument, need either Uint8Array, ' + 'string or a parameter object'); } if (!src.url && !src.data && !src.range) { - error('Invalid parameter object: need either .data, .range or .url'); + (0, _util.error)('Invalid parameter object: need either .data, .range or .url'); } source = src; } @@ -11579,13 +11555,13 @@ function getDocument(src, pdfDataRangeTransport, passwordCallback, progressCallb } else if (key === 'data' && !(source[key] instanceof Uint8Array)) { var pdfBytes = source[key]; if (typeof pdfBytes === 'string') { - params[key] = stringToBytes(pdfBytes); + params[key] = (0, _util.stringToBytes)(pdfBytes); } else if ((typeof pdfBytes === 'undefined' ? 'undefined' : _typeof(pdfBytes)) === 'object' && pdfBytes !== null && !isNaN(pdfBytes.length)) { params[key] = new Uint8Array(pdfBytes); - } else if (isArrayBuffer(pdfBytes)) { + } else if ((0, _util.isArrayBuffer)(pdfBytes)) { params[key] = new Uint8Array(pdfBytes); } else { - error('Invalid PDF binary data: either typed array, string or ' + 'array-like object is expected in the data property.'); + (0, _util.error)('Invalid PDF binary data: either typed array, string or ' + 'array-like object is expected in the data property.'); } continue; } @@ -11594,9 +11570,9 @@ function getDocument(src, pdfDataRangeTransport, passwordCallback, progressCallb params.rangeChunkSize = params.rangeChunkSize || DEFAULT_RANGE_CHUNK_SIZE; params.disableNativeImageDecoder = params.disableNativeImageDecoder === true; params.ignoreErrors = params.stopAtErrors !== true; - var CMapReaderFactory = params.CMapReaderFactory || DOMCMapReaderFactory; + var CMapReaderFactory = params.CMapReaderFactory || _dom_utils.DOMCMapReaderFactory; if (!worker) { - var workerPort = getDefaultSetting('workerPort'); + var workerPort = (0, _dom_utils.getDefaultSetting)('workerPort'); worker = workerPort ? new PDFWorker(null, workerPort) : new PDFWorker(); task._worker = worker; } @@ -11609,7 +11585,7 @@ function getDocument(src, pdfDataRangeTransport, passwordCallback, progressCallb if (task.destroyed) { throw new Error('Loading aborted'); } - var messageHandler = new MessageHandler(docId, workerId, worker.port); + var messageHandler = new _util.MessageHandler(docId, workerId, worker.port); var transport = new WorkerTransport(messageHandler, task, rangeTransport, CMapReaderFactory); task._transport = transport; messageHandler.send('Ready', null); @@ -11621,8 +11597,8 @@ function _fetchDocument(worker, source, pdfDataRangeTransport, docId) { if (worker.destroyed) { return Promise.reject(new Error('Worker was destroyed')); } - source.disableAutoFetch = getDefaultSetting('disableAutoFetch'); - source.disableStream = getDefaultSetting('disableStream'); + source.disableAutoFetch = (0, _dom_utils.getDefaultSetting)('disableAutoFetch'); + source.disableStream = (0, _dom_utils.getDefaultSetting)('disableStream'); source.chunkedViewerLoading = !!pdfDataRangeTransport; if (pdfDataRangeTransport) { source.length = pdfDataRangeTransport.length; @@ -11631,11 +11607,11 @@ function _fetchDocument(worker, source, pdfDataRangeTransport, docId) { return worker.messageHandler.sendWithPromise('GetDocRequest', { docId: docId, source: source, - disableRange: getDefaultSetting('disableRange'), - maxImageSize: getDefaultSetting('maxImageSize'), - disableFontFace: getDefaultSetting('disableFontFace'), - disableCreateObjectURL: getDefaultSetting('disableCreateObjectURL'), - postMessageTransfers: getDefaultSetting('postMessageTransfers') && !isPostMessageTransfersDisabled, + disableRange: (0, _dom_utils.getDefaultSetting)('disableRange'), + maxImageSize: (0, _dom_utils.getDefaultSetting)('maxImageSize'), + disableFontFace: (0, _dom_utils.getDefaultSetting)('disableFontFace'), + disableCreateObjectURL: (0, _dom_utils.getDefaultSetting)('disableCreateObjectURL'), + postMessageTransfers: (0, _dom_utils.getDefaultSetting)('postMessageTransfers') && !isPostMessageTransfersDisabled, docBaseUrl: source.docBaseUrl, disableNativeImageDecoder: source.disableNativeImageDecoder, ignoreErrors: source.ignoreErrors @@ -11649,7 +11625,7 @@ function _fetchDocument(worker, source, pdfDataRangeTransport, docId) { var PDFDocumentLoadingTask = function PDFDocumentLoadingTaskClosure() { var nextDocumentId = 0; function PDFDocumentLoadingTask() { - this._capability = createPromiseCapability(); + this._capability = (0, _util.createPromiseCapability)(); this._transport = null; this._worker = null; this.docId = 'd' + nextDocumentId++; @@ -11686,7 +11662,7 @@ var PDFDataRangeTransport = function pdfDataRangeTransportClosure() { this._rangeListeners = []; this._progressListeners = []; this._progressiveReadListeners = []; - this._readyCapability = createPromiseCapability(); + this._readyCapability = (0, _util.createPromiseCapability)(); } PDFDataRangeTransport.prototype = { addRangeListener: function PDFDataRangeTransport_addRangeListener(listener) { @@ -11793,8 +11769,8 @@ var PDFPageProxy = function PDFPageProxyClosure() { this.pageIndex = pageIndex; this.pageInfo = pageInfo; this.transport = transport; - this.stats = new StatTimer(); - this.stats.enabled = getDefaultSetting('enableStats'); + this.stats = new _util.StatTimer(); + this.stats.enabled = (0, _dom_utils.getDefaultSetting)('enableStats'); this.commonObjs = transport.commonObjs; this.objs = new PDFObjects(); this.cleanupAfterRender = false; @@ -11822,7 +11798,7 @@ var PDFPageProxy = function PDFPageProxyClosure() { if (arguments.length < 2) { rotate = this.rotate; } - return new PageViewport(this.view, scale, rotate, 0, 0); + return new _util.PageViewport(this.view, scale, rotate, 0, 0); }, getAnnotations: function PDFPageProxy_getAnnotations(params) { var intent = params && params.intent || null; @@ -11837,14 +11813,14 @@ var PDFPageProxy = function PDFPageProxyClosure() { stats.time('Overall'); this.pendingCleanup = false; var renderingIntent = params.intent === 'print' ? 'print' : 'display'; - var canvasFactory = params.canvasFactory || new DOMCanvasFactory(); + var canvasFactory = params.canvasFactory || new _dom_utils.DOMCanvasFactory(); if (!this.intentStates[renderingIntent]) { this.intentStates[renderingIntent] = Object.create(null); } var intentState = this.intentStates[renderingIntent]; if (!intentState.displayReadyCapability) { intentState.receivingOperatorList = true; - intentState.displayReadyCapability = createPromiseCapability(); + intentState.displayReadyCapability = (0, _util.createPromiseCapability)(); intentState.operatorList = { fnArray: [], argsArray: [], @@ -11865,7 +11841,7 @@ var PDFPageProxy = function PDFPageProxyClosure() { intentState.renderTasks.push(internalRenderTask); var renderTask = internalRenderTask.task; if (params.continueCallback) { - deprecated('render is used with continueCallback parameter'); + (0, _util.deprecated)('render is used with continueCallback parameter'); renderTask.onContinue = params.continueCallback; } var self = this; @@ -11919,7 +11895,7 @@ var PDFPageProxy = function PDFPageProxyClosure() { opListTask = {}; opListTask.operatorListChanged = operatorListChanged; intentState.receivingOperatorList = true; - intentState.opListReadCapability = createPromiseCapability(); + intentState.opListReadCapability = (0, _util.createPromiseCapability)(); intentState.renderTasks = []; intentState.renderTasks.push(opListTask); intentState.operatorList = { @@ -11963,7 +11939,7 @@ var PDFPageProxy = function PDFPageProxyClosure() { return Promise.all(waitOn); }, destroy: function destroy() { - deprecated('page destroy method, use cleanup() instead'); + (0, _util.deprecated)('page destroy method, use cleanup() instead'); this.cleanup(); }, cleanup: function PDFPageProxy_cleanup() { @@ -12015,13 +11991,13 @@ var PDFWorker = function PDFWorkerClosure() { if (typeof workerSrc !== 'undefined') { return workerSrc; } - if (getDefaultSetting('workerSrc')) { - return getDefaultSetting('workerSrc'); + if ((0, _dom_utils.getDefaultSetting)('workerSrc')) { + return (0, _dom_utils.getDefaultSetting)('workerSrc'); } if (pdfjsFilePath) { return pdfjsFilePath.replace(/(\.(?:min\.)?js)$/i, '.worker$1'); } - error('No PDFJS.workerSrc specified'); + (0, _util.error)('No PDFJS.workerSrc specified'); } var fakeWorkerFilesLoadedCapability; function setupFakeWorkerGlobal() { @@ -12029,7 +12005,7 @@ var PDFWorker = function PDFWorkerClosure() { if (fakeWorkerFilesLoadedCapability) { return fakeWorkerFilesLoadedCapability.promise; } - fakeWorkerFilesLoadedCapability = createPromiseCapability(); + fakeWorkerFilesLoadedCapability = (0, _util.createPromiseCapability)(); var pdfjsCoreWorker = __w_pdfjs_require__(23); __w_pdfjs_require__(39); WorkerMessageHandler = pdfjsCoreWorker.WorkerMessageHandler; @@ -12052,7 +12028,7 @@ var PDFWorker = function PDFWorkerClosure() { } var result; var buffer; - if ((buffer = value.buffer) && isArrayBuffer(buffer)) { + if ((buffer = value.buffer) && (0, _util.isArrayBuffer)(buffer)) { var transferable = transfers && transfers.indexOf(buffer) >= 0; if (value === buffer) { result = value; @@ -12064,7 +12040,7 @@ var PDFWorker = function PDFWorkerClosure() { cloned.set(value, result); return result; } - result = isArray(value) ? [] : {}; + result = (0, _util.isArray)(value) ? [] : {}; cloned.set(value, result); for (var i in value) { var desc, @@ -12111,7 +12087,7 @@ var PDFWorker = function PDFWorkerClosure() { function PDFWorker(name, port) { this.name = name; this.destroyed = false; - this._readyCapability = createPromiseCapability(); + this._readyCapability = (0, _util.createPromiseCapability)(); this._port = null; this._webWorker = null; this._messageHandler = null; @@ -12133,7 +12109,7 @@ var PDFWorker = function PDFWorkerClosure() { }, _initializeFromPort: function PDFWorker_initializeFromPort(port) { this._port = port; - this._messageHandler = new MessageHandler('main', 'worker', port); + this._messageHandler = new _util.MessageHandler('main', 'worker', port); this._messageHandler.on('ready', function () {}); this._readyCapability.resolve(); }, @@ -12141,8 +12117,8 @@ var PDFWorker = function PDFWorkerClosure() { this._setupFakeWorker(); }, _setupFakeWorker: function PDFWorker_setupFakeWorker() { - if (!isWorkerDisabled && !getDefaultSetting('disableWorker')) { - warn('Setting up fake worker.'); + if (!isWorkerDisabled && !(0, _dom_utils.getDefaultSetting)('disableWorker')) { + (0, _util.warn)('Setting up fake worker.'); isWorkerDisabled = true; } setupFakeWorkerGlobal().then(function (WorkerMessageHandler) { @@ -12154,9 +12130,9 @@ var PDFWorker = function PDFWorkerClosure() { var port = new FakeWorkerPort(isTypedArraysPresent); this._port = port; var id = 'fake' + nextFakeWorkerId++; - var workerHandler = new MessageHandler(id + '_worker', id, port); + var workerHandler = new _util.MessageHandler(id + '_worker', id, port); WorkerMessageHandler.setup(workerHandler, port); - var messageHandler = new MessageHandler(id, id + '_worker', port); + var messageHandler = new _util.MessageHandler(id, id + '_worker', port); this._messageHandler = messageHandler; this._readyCapability.resolve(); }.bind(this)); @@ -12182,17 +12158,17 @@ var WorkerTransport = function WorkerTransportClosure() { this.loadingTask = loadingTask; this.pdfDataRangeTransport = pdfDataRangeTransport; this.commonObjs = new PDFObjects(); - this.fontLoader = new FontLoader(loadingTask.docId); + this.fontLoader = new _font_loader.FontLoader(loadingTask.docId); this.CMapReaderFactory = new CMapReaderFactory({ - baseUrl: getDefaultSetting('cMapUrl'), - isCompressed: getDefaultSetting('cMapPacked') + baseUrl: (0, _dom_utils.getDefaultSetting)('cMapUrl'), + isCompressed: (0, _dom_utils.getDefaultSetting)('cMapPacked') }); this.destroyed = false; this.destroyCapability = null; this._passwordCapability = null; this.pageCache = []; this.pagePromises = []; - this.downloadInfoCapability = createPromiseCapability(); + this.downloadInfoCapability = (0, _util.createPromiseCapability)(); this.setupMessageHandler(); } WorkerTransport.prototype = { @@ -12201,7 +12177,7 @@ var WorkerTransport = function WorkerTransportClosure() { return this.destroyCapability.promise; } this.destroyed = true; - this.destroyCapability = createPromiseCapability(); + this.destroyCapability = (0, _util.createPromiseCapability)(); if (this._passwordCapability) { this._passwordCapability.reject(new Error('Worker was destroyed during onPassword callback')); } @@ -12260,31 +12236,31 @@ var WorkerTransport = function WorkerTransportClosure() { loadingTask._capability.resolve(pdfDocument); }, this); messageHandler.on('PasswordRequest', function transportPasswordRequest(exception) { - this._passwordCapability = createPromiseCapability(); + this._passwordCapability = (0, _util.createPromiseCapability)(); if (loadingTask.onPassword) { var updatePassword = function (password) { this._passwordCapability.resolve({ password: password }); }.bind(this); loadingTask.onPassword(updatePassword, exception.code); } else { - this._passwordCapability.reject(new PasswordException(exception.message, exception.code)); + this._passwordCapability.reject(new _util.PasswordException(exception.message, exception.code)); } return this._passwordCapability.promise; }, this); messageHandler.on('PasswordException', function transportPasswordException(exception) { - loadingTask._capability.reject(new PasswordException(exception.message, exception.code)); + loadingTask._capability.reject(new _util.PasswordException(exception.message, exception.code)); }, this); messageHandler.on('InvalidPDF', function transportInvalidPDF(exception) { - this.loadingTask._capability.reject(new InvalidPDFException(exception.message)); + this.loadingTask._capability.reject(new _util.InvalidPDFException(exception.message)); }, this); messageHandler.on('MissingPDF', function transportMissingPDF(exception) { - this.loadingTask._capability.reject(new MissingPDFException(exception.message)); + this.loadingTask._capability.reject(new _util.MissingPDFException(exception.message)); }, this); messageHandler.on('UnexpectedResponse', function transportUnexpectedResponse(exception) { - this.loadingTask._capability.reject(new UnexpectedResponseException(exception.message, exception.status)); + this.loadingTask._capability.reject(new _util.UnexpectedResponseException(exception.message, exception.status)); }, this); messageHandler.on('UnknownError', function transportUnknownError(exception) { - this.loadingTask._capability.reject(new UnknownErrorException(exception.message, exception.details)); + this.loadingTask._capability.reject(new _util.UnknownErrorException(exception.message, exception.details)); }, this); messageHandler.on('DataLoaded', function transportPage(data) { this.downloadInfoCapability.resolve(data); @@ -12323,21 +12299,21 @@ var WorkerTransport = function WorkerTransportClosure() { var exportedData = data[2]; if ('error' in exportedData) { var exportedError = exportedData.error; - warn('Error during font loading: ' + exportedError); + (0, _util.warn)('Error during font loading: ' + exportedError); this.commonObjs.resolve(id, exportedError); break; } var fontRegistry = null; - if (getDefaultSetting('pdfBug') && globalScope.FontInspector && globalScope['FontInspector'].enabled) { + if ((0, _dom_utils.getDefaultSetting)('pdfBug') && _util.globalScope.FontInspector && _util.globalScope['FontInspector'].enabled) { fontRegistry = { registerFont: function registerFont(font, url) { - globalScope['FontInspector'].fontAdded(font, url); + _util.globalScope['FontInspector'].fontAdded(font, url); } }; } - var font = new FontFaceObject(exportedData, { - isEvalSuported: getDefaultSetting('isEvalSupported'), - disableFontFace: getDefaultSetting('disableFontFace'), + var font = new _font_loader.FontFaceObject(exportedData, { + isEvalSuported: (0, _dom_utils.getDefaultSetting)('isEvalSupported'), + disableFontFace: (0, _dom_utils.getDefaultSetting)('disableFontFace'), fontRegistry: fontRegistry }); this.fontLoader.bind([font], function fontReady(fontObjs) { @@ -12348,7 +12324,7 @@ var WorkerTransport = function WorkerTransportClosure() { this.commonObjs.resolve(id, data[2]); break; default: - error('Got unknown common object type ' + type); + (0, _util.error)('Got unknown common object type ' + type); } }, this); messageHandler.on('obj', function transportObj(data) { @@ -12366,7 +12342,7 @@ var WorkerTransport = function WorkerTransportClosure() { switch (type) { case 'JpegStream': imageData = data[3]; - loadJpegStream(id, imageData, pageProxy.objs); + (0, _util.loadJpegStream)(id, imageData, pageProxy.objs); break; case 'Image': imageData = data[3]; @@ -12377,7 +12353,7 @@ var WorkerTransport = function WorkerTransportClosure() { } break; default: - error('Got unknown object type ' + type); + (0, _util.error)('Got unknown object type ' + type); } }, this); messageHandler.on('DocProgress', function transportDocProgress(data) { @@ -12401,7 +12377,7 @@ var WorkerTransport = function WorkerTransportClosure() { if (intentState.displayReadyCapability) { intentState.displayReadyCapability.reject(data.error); } else { - error(data.error); + (0, _util.error)(data.error); } if (intentState.operatorList) { intentState.operatorList.lastChunk = true; @@ -12482,7 +12458,7 @@ var WorkerTransport = function WorkerTransportClosure() { return this.messageHandler.sendWithPromise('GetData', null); }, getPage: function WorkerTransport_getPage(pageNumber, capability) { - if (!isInt(pageNumber) || pageNumber <= 0 || pageNumber > this.numPages) { + if (!(0, _util.isInt)(pageNumber) || pageNumber <= 0 || pageNumber > this.numPages) { return Promise.reject(new Error('Invalid page request')); } var pageIndex = pageNumber - 1; @@ -12533,7 +12509,7 @@ var WorkerTransport = function WorkerTransportClosure() { return this.messageHandler.sendWithPromise('GetMetadata', null).then(function transportMetadata(results) { return { info: results[0], - metadata: results[1] ? new Metadata(results[1]) : null + metadata: results[1] ? new _metadata.Metadata(results[1]) : null }; }); }, @@ -12565,7 +12541,7 @@ var PDFObjects = function PDFObjectsClosure() { return this.objs[objId]; } var obj = { - capability: createPromiseCapability(), + capability: (0, _util.createPromiseCapability)(), data: null, resolved: false }; @@ -12579,7 +12555,7 @@ var PDFObjects = function PDFObjectsClosure() { } var obj = this.objs[objId]; if (!obj || !obj.resolved) { - error('Requesting object that isn\'t resolved yet ' + objId); + (0, _util.error)('Requesting object that isn\'t resolved yet ' + objId); } return obj.data; }, @@ -12645,7 +12621,7 @@ var InternalRenderTask = function InternalRenderTaskClosure() { this.graphicsReady = false; this.useRequestAnimationFrame = false; this.cancelled = false; - this.capability = createPromiseCapability(); + this.capability = (0, _util.createPromiseCapability)(); this.task = new RenderTask(this); this._continueBound = this._continue.bind(this); this._scheduleNextBound = this._scheduleNext.bind(this); @@ -12656,13 +12632,13 @@ var InternalRenderTask = function InternalRenderTaskClosure() { if (this.cancelled) { return; } - if (getDefaultSetting('pdfBug') && globalScope.StepperManager && globalScope.StepperManager.enabled) { - this.stepper = globalScope.StepperManager.create(this.pageNumber - 1); + if ((0, _dom_utils.getDefaultSetting)('pdfBug') && _util.globalScope.StepperManager && _util.globalScope.StepperManager.enabled) { + this.stepper = _util.globalScope.StepperManager.create(this.pageNumber - 1); this.stepper.init(this.operatorList); this.stepper.nextBreakPoint = this.stepper.getNextBreakPoint(); } var params = this.params; - this.gfx = new CanvasGraphics(params.canvasContext, this.commonObjs, this.objs, this.canvasFactory, params.imageLayer); + this.gfx = new _canvas.CanvasGraphics(params.canvasContext, this.commonObjs, this.objs, this.canvasFactory, params.imageLayer); this.gfx.beginDrawing(params.transform, params.viewport, transparency); this.operatorListIdx = 0; this.graphicsReady = true; @@ -12673,8 +12649,8 @@ var InternalRenderTask = function InternalRenderTaskClosure() { cancel: function InternalRenderTask_cancel() { this.running = false; this.cancelled = true; - if (getDefaultSetting('pdfjsNext')) { - this.callback(new RenderingCancelledException('Rendering cancelled, page ' + this.pageNumber, 'canvas')); + if ((0, _dom_utils.getDefaultSetting)('pdfjsNext')) { + this.callback(new _dom_utils.RenderingCancelledException('Rendering cancelled, page ' + this.pageNumber, 'canvas')); } else { this.callback('cancelled'); } @@ -12732,7 +12708,7 @@ var _UnsupportedManager = function UnsupportedManagerClosure() { var listeners = []; return { listen: function listen(cb) { - deprecated('Global UnsupportedManager.listen is used: ' + ' use PDFDocumentLoadingTask.onUnsupportedFeature instead'); + (0, _util.deprecated)('Global UnsupportedManager.listen is used: ' + ' use PDFDocumentLoadingTask.onUnsupportedFeature instead'); listeners.push(cb); }, notify: function notify(featureId) { @@ -12742,14 +12718,19 @@ var _UnsupportedManager = function UnsupportedManagerClosure() { } }; }(); -exports.version = '1.8.213'; -exports.build = 'c6e8ca86'; +var version, build; +{ + exports.version = version = '1.8.233'; + exports.build = build = '19321937'; +} exports.getDocument = getDocument; exports.PDFDataRangeTransport = PDFDataRangeTransport; exports.PDFWorker = PDFWorker; exports.PDFDocumentProxy = PDFDocumentProxy; exports.PDFPageProxy = PDFPageProxy; exports._UnsupportedManager = _UnsupportedManager; +exports.version = version; +exports.build = build; /***/ }), /* 11 */ @@ -12758,960 +12739,962 @@ exports._UnsupportedManager = _UnsupportedManager; "use strict"; -var sharedUtil = __w_pdfjs_require__(0); -var FONT_IDENTITY_MATRIX = sharedUtil.FONT_IDENTITY_MATRIX; -var IDENTITY_MATRIX = sharedUtil.IDENTITY_MATRIX; -var ImageKind = sharedUtil.ImageKind; -var OPS = sharedUtil.OPS; -var Util = sharedUtil.Util; -var isNum = sharedUtil.isNum; -var isArray = sharedUtil.isArray; -var warn = sharedUtil.warn; -var createObjectURL = sharedUtil.createObjectURL; -var SVG_DEFAULTS = { - fontStyle: 'normal', - fontWeight: 'normal', - fillColor: '#000000' +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.SVGGraphics = undefined; + +var _util = __w_pdfjs_require__(0); + +var SVGGraphics = function SVGGraphics() { + throw new Error('Not implemented: SVGGraphics'); }; -var convertImgDataToPng = function convertImgDataToPngClosure() { - var PNG_HEADER = new Uint8Array([0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a]); - var CHUNK_WRAPPER_SIZE = 12; - var crcTable = new Int32Array(256); - for (var i = 0; i < 256; i++) { - var c = i; - for (var h = 0; h < 8; h++) { - if (c & 1) { - c = 0xedB88320 ^ c >> 1 & 0x7fffffff; - } else { - c = c >> 1 & 0x7fffffff; - } - } - crcTable[i] = c; - } - function crc32(data, start, end) { - var crc = -1; - for (var i = start; i < end; i++) { - var a = (crc ^ data[i]) & 0xff; - var b = crcTable[a]; - crc = crc >>> 8 ^ b; - } - return crc ^ -1; - } - function writePngChunk(type, body, data, offset) { - var p = offset; - var len = body.length; - data[p] = len >> 24 & 0xff; - data[p + 1] = len >> 16 & 0xff; - data[p + 2] = len >> 8 & 0xff; - data[p + 3] = len & 0xff; - p += 4; - data[p] = type.charCodeAt(0) & 0xff; - data[p + 1] = type.charCodeAt(1) & 0xff; - data[p + 2] = type.charCodeAt(2) & 0xff; - data[p + 3] = type.charCodeAt(3) & 0xff; - p += 4; - data.set(body, p); - p += body.length; - var crc = crc32(data, offset + 4, p); - data[p] = crc >> 24 & 0xff; - data[p + 1] = crc >> 16 & 0xff; - data[p + 2] = crc >> 8 & 0xff; - data[p + 3] = crc & 0xff; - } - function adler32(data, start, end) { - var a = 1; - var b = 0; - for (var i = start; i < end; ++i) { - a = (a + (data[i] & 0xff)) % 65521; - b = (b + a) % 65521; - } - return b << 16 | a; - } - function encode(imgData, kind, forceDataSchema) { - var width = imgData.width; - var height = imgData.height; - var bitDepth, colorType, lineSize; - var bytes = imgData.data; - switch (kind) { - case ImageKind.GRAYSCALE_1BPP: - colorType = 0; - bitDepth = 1; - lineSize = width + 7 >> 3; - break; - case ImageKind.RGB_24BPP: - colorType = 2; - bitDepth = 8; - lineSize = width * 3; - break; - case ImageKind.RGBA_32BPP: - colorType = 6; - bitDepth = 8; - lineSize = width * 4; - break; - default: - throw new Error('invalid format'); - } - var literals = new Uint8Array((1 + lineSize) * height); - var offsetLiterals = 0, - offsetBytes = 0; - var y, i; - for (y = 0; y < height; ++y) { - literals[offsetLiterals++] = 0; - literals.set(bytes.subarray(offsetBytes, offsetBytes + lineSize), offsetLiterals); - offsetBytes += lineSize; - offsetLiterals += lineSize; - } - if (kind === ImageKind.GRAYSCALE_1BPP) { - offsetLiterals = 0; - for (y = 0; y < height; y++) { - offsetLiterals++; - for (i = 0; i < lineSize; i++) { - literals[offsetLiterals++] ^= 0xFF; - } - } - } - var ihdr = new Uint8Array([width >> 24 & 0xff, width >> 16 & 0xff, width >> 8 & 0xff, width & 0xff, height >> 24 & 0xff, height >> 16 & 0xff, height >> 8 & 0xff, height & 0xff, bitDepth, colorType, 0x00, 0x00, 0x00]); - var len = literals.length; - var maxBlockLength = 0xFFFF; - var deflateBlocks = Math.ceil(len / maxBlockLength); - var idat = new Uint8Array(2 + len + deflateBlocks * 5 + 4); - var pi = 0; - idat[pi++] = 0x78; - idat[pi++] = 0x9c; - var pos = 0; - while (len > maxBlockLength) { - idat[pi++] = 0x00; - idat[pi++] = 0xff; - idat[pi++] = 0xff; - idat[pi++] = 0x00; - idat[pi++] = 0x00; - idat.set(literals.subarray(pos, pos + maxBlockLength), pi); - pi += maxBlockLength; - pos += maxBlockLength; - len -= maxBlockLength; - } - idat[pi++] = 0x01; - idat[pi++] = len & 0xff; - idat[pi++] = len >> 8 & 0xff; - idat[pi++] = ~len & 0xffff & 0xff; - idat[pi++] = (~len & 0xffff) >> 8 & 0xff; - idat.set(literals.subarray(pos), pi); - pi += literals.length - pos; - var adler = adler32(literals, 0, literals.length); - idat[pi++] = adler >> 24 & 0xff; - idat[pi++] = adler >> 16 & 0xff; - idat[pi++] = adler >> 8 & 0xff; - idat[pi++] = adler & 0xff; - var pngLength = PNG_HEADER.length + CHUNK_WRAPPER_SIZE * 3 + ihdr.length + idat.length; - var data = new Uint8Array(pngLength); - var offset = 0; - data.set(PNG_HEADER, offset); - offset += PNG_HEADER.length; - writePngChunk('IHDR', ihdr, data, offset); - offset += CHUNK_WRAPPER_SIZE + ihdr.length; - writePngChunk('IDATA', idat, data, offset); - offset += CHUNK_WRAPPER_SIZE + idat.length; - writePngChunk('IEND', new Uint8Array(0), data, offset); - return createObjectURL(data, 'image/png', forceDataSchema); - } - return function convertImgDataToPng(imgData, forceDataSchema) { - var kind = imgData.kind === undefined ? ImageKind.GRAYSCALE_1BPP : imgData.kind; - return encode(imgData, kind, forceDataSchema); - }; -}(); -var SVGExtraState = function SVGExtraStateClosure() { - function SVGExtraState() { - this.fontSizeScale = 1; - this.fontWeight = SVG_DEFAULTS.fontWeight; - this.fontSize = 0; - this.textMatrix = IDENTITY_MATRIX; - this.fontMatrix = FONT_IDENTITY_MATRIX; - this.leading = 0; - this.x = 0; - this.y = 0; - this.lineX = 0; - this.lineY = 0; - this.charSpacing = 0; - this.wordSpacing = 0; - this.textHScale = 1; - this.textRise = 0; - this.fillColor = SVG_DEFAULTS.fillColor; - this.strokeColor = '#000000'; - this.fillAlpha = 1; - this.strokeAlpha = 1; - this.lineWidth = 1; - this.lineJoin = ''; - this.lineCap = ''; - this.miterLimit = 0; - this.dashArray = []; - this.dashPhase = 0; - this.dependencies = []; - this.activeClipUrl = null; - this.clipGroup = null; - this.maskId = ''; - } - SVGExtraState.prototype = { - clone: function SVGExtraState_clone() { - return Object.create(this); - }, - setCurrentPoint: function SVGExtraState_setCurrentPoint(x, y) { - this.x = x; - this.y = y; - } +{ + var SVG_DEFAULTS = { + fontStyle: 'normal', + fontWeight: 'normal', + fillColor: '#000000' }; - return SVGExtraState; -}(); -var SVGGraphics = function SVGGraphicsClosure() { - function opListToTree(opList) { - var opTree = []; - var tmp = []; - var opListLen = opList.length; - for (var x = 0; x < opListLen; x++) { - if (opList[x].fn === 'save') { - opTree.push({ - 'fnId': 92, - 'fn': 'group', - 'items': [] - }); - tmp.push(opTree); - opTree = opTree[opTree.length - 1].items; - continue; + var convertImgDataToPng = function convertImgDataToPngClosure() { + var PNG_HEADER = new Uint8Array([0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a]); + var CHUNK_WRAPPER_SIZE = 12; + var crcTable = new Int32Array(256); + for (var i = 0; i < 256; i++) { + var c = i; + for (var h = 0; h < 8; h++) { + if (c & 1) { + c = 0xedB88320 ^ c >> 1 & 0x7fffffff; + } else { + c = c >> 1 & 0x7fffffff; + } + } + crcTable[i] = c; + } + function crc32(data, start, end) { + var crc = -1; + for (var i = start; i < end; i++) { + var a = (crc ^ data[i]) & 0xff; + var b = crcTable[a]; + crc = crc >>> 8 ^ b; + } + return crc ^ -1; + } + function writePngChunk(type, body, data, offset) { + var p = offset; + var len = body.length; + data[p] = len >> 24 & 0xff; + data[p + 1] = len >> 16 & 0xff; + data[p + 2] = len >> 8 & 0xff; + data[p + 3] = len & 0xff; + p += 4; + data[p] = type.charCodeAt(0) & 0xff; + data[p + 1] = type.charCodeAt(1) & 0xff; + data[p + 2] = type.charCodeAt(2) & 0xff; + data[p + 3] = type.charCodeAt(3) & 0xff; + p += 4; + data.set(body, p); + p += body.length; + var crc = crc32(data, offset + 4, p); + data[p] = crc >> 24 & 0xff; + data[p + 1] = crc >> 16 & 0xff; + data[p + 2] = crc >> 8 & 0xff; + data[p + 3] = crc & 0xff; + } + function adler32(data, start, end) { + var a = 1; + var b = 0; + for (var i = start; i < end; ++i) { + a = (a + (data[i] & 0xff)) % 65521; + b = (b + a) % 65521; + } + return b << 16 | a; + } + function encode(imgData, kind, forceDataSchema) { + var width = imgData.width; + var height = imgData.height; + var bitDepth, colorType, lineSize; + var bytes = imgData.data; + switch (kind) { + case _util.ImageKind.GRAYSCALE_1BPP: + colorType = 0; + bitDepth = 1; + lineSize = width + 7 >> 3; + break; + case _util.ImageKind.RGB_24BPP: + colorType = 2; + bitDepth = 8; + lineSize = width * 3; + break; + case _util.ImageKind.RGBA_32BPP: + colorType = 6; + bitDepth = 8; + lineSize = width * 4; + break; + default: + throw new Error('invalid format'); + } + var literals = new Uint8Array((1 + lineSize) * height); + var offsetLiterals = 0, + offsetBytes = 0; + var y, i; + for (y = 0; y < height; ++y) { + literals[offsetLiterals++] = 0; + literals.set(bytes.subarray(offsetBytes, offsetBytes + lineSize), offsetLiterals); + offsetBytes += lineSize; + offsetLiterals += lineSize; + } + if (kind === _util.ImageKind.GRAYSCALE_1BPP) { + offsetLiterals = 0; + for (y = 0; y < height; y++) { + offsetLiterals++; + for (i = 0; i < lineSize; i++) { + literals[offsetLiterals++] ^= 0xFF; + } + } } - if (opList[x].fn === 'restore') { - opTree = tmp.pop(); - } else { - opTree.push(opList[x]); + var ihdr = new Uint8Array([width >> 24 & 0xff, width >> 16 & 0xff, width >> 8 & 0xff, width & 0xff, height >> 24 & 0xff, height >> 16 & 0xff, height >> 8 & 0xff, height & 0xff, bitDepth, colorType, 0x00, 0x00, 0x00]); + var len = literals.length; + var maxBlockLength = 0xFFFF; + var deflateBlocks = Math.ceil(len / maxBlockLength); + var idat = new Uint8Array(2 + len + deflateBlocks * 5 + 4); + var pi = 0; + idat[pi++] = 0x78; + idat[pi++] = 0x9c; + var pos = 0; + while (len > maxBlockLength) { + idat[pi++] = 0x00; + idat[pi++] = 0xff; + idat[pi++] = 0xff; + idat[pi++] = 0x00; + idat[pi++] = 0x00; + idat.set(literals.subarray(pos, pos + maxBlockLength), pi); + pi += maxBlockLength; + pos += maxBlockLength; + len -= maxBlockLength; + } + idat[pi++] = 0x01; + idat[pi++] = len & 0xff; + idat[pi++] = len >> 8 & 0xff; + idat[pi++] = ~len & 0xffff & 0xff; + idat[pi++] = (~len & 0xffff) >> 8 & 0xff; + idat.set(literals.subarray(pos), pi); + pi += literals.length - pos; + var adler = adler32(literals, 0, literals.length); + idat[pi++] = adler >> 24 & 0xff; + idat[pi++] = adler >> 16 & 0xff; + idat[pi++] = adler >> 8 & 0xff; + idat[pi++] = adler & 0xff; + var pngLength = PNG_HEADER.length + CHUNK_WRAPPER_SIZE * 3 + ihdr.length + idat.length; + var data = new Uint8Array(pngLength); + var offset = 0; + data.set(PNG_HEADER, offset); + offset += PNG_HEADER.length; + writePngChunk('IHDR', ihdr, data, offset); + offset += CHUNK_WRAPPER_SIZE + ihdr.length; + writePngChunk('IDATA', idat, data, offset); + offset += CHUNK_WRAPPER_SIZE + idat.length; + writePngChunk('IEND', new Uint8Array(0), data, offset); + return (0, _util.createObjectURL)(data, 'image/png', forceDataSchema); + } + return function convertImgDataToPng(imgData, forceDataSchema) { + var kind = imgData.kind === undefined ? _util.ImageKind.GRAYSCALE_1BPP : imgData.kind; + return encode(imgData, kind, forceDataSchema); + }; + }(); + var SVGExtraState = function SVGExtraStateClosure() { + function SVGExtraState() { + this.fontSizeScale = 1; + this.fontWeight = SVG_DEFAULTS.fontWeight; + this.fontSize = 0; + this.textMatrix = _util.IDENTITY_MATRIX; + this.fontMatrix = _util.FONT_IDENTITY_MATRIX; + this.leading = 0; + this.x = 0; + this.y = 0; + this.lineX = 0; + this.lineY = 0; + this.charSpacing = 0; + this.wordSpacing = 0; + this.textHScale = 1; + this.textRise = 0; + this.fillColor = SVG_DEFAULTS.fillColor; + this.strokeColor = '#000000'; + this.fillAlpha = 1; + this.strokeAlpha = 1; + this.lineWidth = 1; + this.lineJoin = ''; + this.lineCap = ''; + this.miterLimit = 0; + this.dashArray = []; + this.dashPhase = 0; + this.dependencies = []; + this.activeClipUrl = null; + this.clipGroup = null; + this.maskId = ''; + } + SVGExtraState.prototype = { + clone: function SVGExtraState_clone() { + return Object.create(this); + }, + setCurrentPoint: function SVGExtraState_setCurrentPoint(x, y) { + this.x = x; + this.y = y; } - } - return opTree; - } - function pf(value) { - if (value === (value | 0)) { - return value.toString(); - } - var s = value.toFixed(10); - var i = s.length - 1; - if (s[i] !== '0') { - return s; - } - do { - i--; - } while (s[i] === '0'); - return s.substr(0, s[i] === '.' ? i : i + 1); - } - function pm(m) { - if (m[4] === 0 && m[5] === 0) { - if (m[1] === 0 && m[2] === 0) { - if (m[0] === 1 && m[3] === 1) { - return ''; + }; + return SVGExtraState; + }(); + exports.SVGGraphics = SVGGraphics = function SVGGraphicsClosure() { + function opListToTree(opList) { + var opTree = []; + var tmp = []; + var opListLen = opList.length; + for (var x = 0; x < opListLen; x++) { + if (opList[x].fn === 'save') { + opTree.push({ + 'fnId': 92, + 'fn': 'group', + 'items': [] + }); + tmp.push(opTree); + opTree = opTree[opTree.length - 1].items; + continue; + } + if (opList[x].fn === 'restore') { + opTree = tmp.pop(); + } else { + opTree.push(opList[x]); } - return 'scale(' + pf(m[0]) + ' ' + pf(m[3]) + ')'; } - if (m[0] === m[3] && m[1] === -m[2]) { - var a = Math.acos(m[0]) * 180 / Math.PI; - return 'rotate(' + pf(a) + ')'; + return opTree; + } + function pf(value) { + if (value === (value | 0)) { + return value.toString(); } - } else { - if (m[0] === 1 && m[1] === 0 && m[2] === 0 && m[3] === 1) { - return 'translate(' + pf(m[4]) + ' ' + pf(m[5]) + ')'; + var s = value.toFixed(10); + var i = s.length - 1; + if (s[i] !== '0') { + return s; } + do { + i--; + } while (s[i] === '0'); + return s.substr(0, s[i] === '.' ? i : i + 1); } - return 'matrix(' + pf(m[0]) + ' ' + pf(m[1]) + ' ' + pf(m[2]) + ' ' + pf(m[3]) + ' ' + pf(m[4]) + ' ' + pf(m[5]) + ')'; - } - function SVGGraphics(commonObjs, objs, forceDataSchema) { - this.current = new SVGExtraState(); - this.transformMatrix = IDENTITY_MATRIX; - this.transformStack = []; - this.extraStack = []; - this.commonObjs = commonObjs; - this.objs = objs; - this.pendingEOFill = false; - this.embedFonts = false; - this.embeddedFonts = Object.create(null); - this.cssStyle = null; - this.forceDataSchema = !!forceDataSchema; - } - var NS = 'http://www.w3.org/2000/svg'; - var XML_NS = 'http://www.w3.org/XML/1998/namespace'; - var XLINK_NS = 'http://www.w3.org/1999/xlink'; - var LINE_CAP_STYLES = ['butt', 'round', 'square']; - var LINE_JOIN_STYLES = ['miter', 'round', 'bevel']; - var clipCount = 0; - var maskCount = 0; - SVGGraphics.prototype = { - save: function SVGGraphics_save() { - this.transformStack.push(this.transformMatrix); - var old = this.current; - this.extraStack.push(old); - this.current = old.clone(); - }, - restore: function SVGGraphics_restore() { - this.transformMatrix = this.transformStack.pop(); - this.current = this.extraStack.pop(); - this.tgrp = null; - }, - group: function SVGGraphics_group(items) { - this.save(); - this.executeOpTree(items); - this.restore(); - }, - loadDependencies: function SVGGraphics_loadDependencies(operatorList) { - var fnArray = operatorList.fnArray; - var fnArrayLen = fnArray.length; - var argsArray = operatorList.argsArray; - var self = this; - for (var i = 0; i < fnArrayLen; i++) { - if (OPS.dependency === fnArray[i]) { - var deps = argsArray[i]; - for (var n = 0, nn = deps.length; n < nn; n++) { - var obj = deps[n]; - var common = obj.substring(0, 2) === 'g_'; - var promise; - if (common) { - promise = new Promise(function (resolve) { - self.commonObjs.get(obj, resolve); - }); - } else { - promise = new Promise(function (resolve) { - self.objs.get(obj, resolve); - }); + function pm(m) { + if (m[4] === 0 && m[5] === 0) { + if (m[1] === 0 && m[2] === 0) { + if (m[0] === 1 && m[3] === 1) { + return ''; + } + return 'scale(' + pf(m[0]) + ' ' + pf(m[3]) + ')'; + } + if (m[0] === m[3] && m[1] === -m[2]) { + var a = Math.acos(m[0]) * 180 / Math.PI; + return 'rotate(' + pf(a) + ')'; + } + } else { + if (m[0] === 1 && m[1] === 0 && m[2] === 0 && m[3] === 1) { + return 'translate(' + pf(m[4]) + ' ' + pf(m[5]) + ')'; + } + } + return 'matrix(' + pf(m[0]) + ' ' + pf(m[1]) + ' ' + pf(m[2]) + ' ' + pf(m[3]) + ' ' + pf(m[4]) + ' ' + pf(m[5]) + ')'; + } + function SVGGraphics(commonObjs, objs, forceDataSchema) { + this.current = new SVGExtraState(); + this.transformMatrix = _util.IDENTITY_MATRIX; + this.transformStack = []; + this.extraStack = []; + this.commonObjs = commonObjs; + this.objs = objs; + this.pendingEOFill = false; + this.embedFonts = false; + this.embeddedFonts = Object.create(null); + this.cssStyle = null; + this.forceDataSchema = !!forceDataSchema; + } + var NS = 'http://www.w3.org/2000/svg'; + var XML_NS = 'http://www.w3.org/XML/1998/namespace'; + var XLINK_NS = 'http://www.w3.org/1999/xlink'; + var LINE_CAP_STYLES = ['butt', 'round', 'square']; + var LINE_JOIN_STYLES = ['miter', 'round', 'bevel']; + var clipCount = 0; + var maskCount = 0; + SVGGraphics.prototype = { + save: function SVGGraphics_save() { + this.transformStack.push(this.transformMatrix); + var old = this.current; + this.extraStack.push(old); + this.current = old.clone(); + }, + restore: function SVGGraphics_restore() { + this.transformMatrix = this.transformStack.pop(); + this.current = this.extraStack.pop(); + this.tgrp = null; + }, + group: function SVGGraphics_group(items) { + this.save(); + this.executeOpTree(items); + this.restore(); + }, + loadDependencies: function SVGGraphics_loadDependencies(operatorList) { + var fnArray = operatorList.fnArray; + var fnArrayLen = fnArray.length; + var argsArray = operatorList.argsArray; + var self = this; + for (var i = 0; i < fnArrayLen; i++) { + if (_util.OPS.dependency === fnArray[i]) { + var deps = argsArray[i]; + for (var n = 0, nn = deps.length; n < nn; n++) { + var obj = deps[n]; + var common = obj.substring(0, 2) === 'g_'; + var promise; + if (common) { + promise = new Promise(function (resolve) { + self.commonObjs.get(obj, resolve); + }); + } else { + promise = new Promise(function (resolve) { + self.objs.get(obj, resolve); + }); + } + this.current.dependencies.push(promise); } - this.current.dependencies.push(promise); } } - } - return Promise.all(this.current.dependencies); - }, - transform: function SVGGraphics_transform(a, b, c, d, e, f) { - var transformMatrix = [a, b, c, d, e, f]; - this.transformMatrix = Util.transform(this.transformMatrix, transformMatrix); - this.tgrp = null; - }, - getSVG: function SVGGraphics_getSVG(operatorList, viewport) { - this.viewport = viewport; - var svgElement = this._initialize(viewport); - return this.loadDependencies(operatorList).then(function () { - this.transformMatrix = IDENTITY_MATRIX; - var opTree = this.convertOpList(operatorList); - this.executeOpTree(opTree); - return svgElement; - }.bind(this)); - }, - convertOpList: function SVGGraphics_convertOpList(operatorList) { - var argsArray = operatorList.argsArray; - var fnArray = operatorList.fnArray; - var fnArrayLen = fnArray.length; - var REVOPS = []; - var opList = []; - for (var op in OPS) { - REVOPS[OPS[op]] = op; - } - for (var x = 0; x < fnArrayLen; x++) { - var fnId = fnArray[x]; - opList.push({ - 'fnId': fnId, - 'fn': REVOPS[fnId], - 'args': argsArray[x] - }); - } - return opListToTree(opList); - }, - executeOpTree: function SVGGraphics_executeOpTree(opTree) { - var opTreeLen = opTree.length; - for (var x = 0; x < opTreeLen; x++) { - var fn = opTree[x].fn; - var fnId = opTree[x].fnId; - var args = opTree[x].args; - switch (fnId | 0) { - case OPS.beginText: - this.beginText(); - break; - case OPS.setLeading: - this.setLeading(args); - break; - case OPS.setLeadingMoveText: - this.setLeadingMoveText(args[0], args[1]); - break; - case OPS.setFont: - this.setFont(args); - break; - case OPS.showText: - this.showText(args[0]); - break; - case OPS.showSpacedText: - this.showText(args[0]); - break; - case OPS.endText: - this.endText(); - break; - case OPS.moveText: - this.moveText(args[0], args[1]); - break; - case OPS.setCharSpacing: - this.setCharSpacing(args[0]); - break; - case OPS.setWordSpacing: - this.setWordSpacing(args[0]); - break; - case OPS.setHScale: - this.setHScale(args[0]); - break; - case OPS.setTextMatrix: - this.setTextMatrix(args[0], args[1], args[2], args[3], args[4], args[5]); - break; - case OPS.setLineWidth: - this.setLineWidth(args[0]); - break; - case OPS.setLineJoin: - this.setLineJoin(args[0]); - break; - case OPS.setLineCap: - this.setLineCap(args[0]); - break; - case OPS.setMiterLimit: - this.setMiterLimit(args[0]); - break; - case OPS.setFillRGBColor: - this.setFillRGBColor(args[0], args[1], args[2]); - break; - case OPS.setStrokeRGBColor: - this.setStrokeRGBColor(args[0], args[1], args[2]); - break; - case OPS.setDash: - this.setDash(args[0], args[1]); - break; - case OPS.setGState: - this.setGState(args[0]); - break; - case OPS.fill: - this.fill(); - break; - case OPS.eoFill: - this.eoFill(); - break; - case OPS.stroke: - this.stroke(); - break; - case OPS.fillStroke: - this.fillStroke(); - break; - case OPS.eoFillStroke: - this.eoFillStroke(); - break; - case OPS.clip: - this.clip('nonzero'); - break; - case OPS.eoClip: - this.clip('evenodd'); - break; - case OPS.paintSolidColorImageMask: - this.paintSolidColorImageMask(); - break; - case OPS.paintJpegXObject: - this.paintJpegXObject(args[0], args[1], args[2]); - break; - case OPS.paintImageXObject: - this.paintImageXObject(args[0]); - break; - case OPS.paintInlineImageXObject: - this.paintInlineImageXObject(args[0]); - break; - case OPS.paintImageMaskXObject: - this.paintImageMaskXObject(args[0]); - break; - case OPS.paintFormXObjectBegin: - this.paintFormXObjectBegin(args[0], args[1]); - break; - case OPS.paintFormXObjectEnd: - this.paintFormXObjectEnd(); - break; - case OPS.closePath: - this.closePath(); - break; - case OPS.closeStroke: - this.closeStroke(); - break; - case OPS.closeFillStroke: - this.closeFillStroke(); - break; - case OPS.nextLine: - this.nextLine(); - break; - case OPS.transform: - this.transform(args[0], args[1], args[2], args[3], args[4], args[5]); - break; - case OPS.constructPath: - this.constructPath(args[0], args[1]); - break; - case OPS.endPath: - this.endPath(); - break; - case 92: - this.group(opTree[x].items); - break; - default: - warn('Unimplemented operator ' + fn); - break; + return Promise.all(this.current.dependencies); + }, + transform: function SVGGraphics_transform(a, b, c, d, e, f) { + var transformMatrix = [a, b, c, d, e, f]; + this.transformMatrix = _util.Util.transform(this.transformMatrix, transformMatrix); + this.tgrp = null; + }, + getSVG: function SVGGraphics_getSVG(operatorList, viewport) { + this.viewport = viewport; + var svgElement = this._initialize(viewport); + return this.loadDependencies(operatorList).then(function () { + this.transformMatrix = _util.IDENTITY_MATRIX; + var opTree = this.convertOpList(operatorList); + this.executeOpTree(opTree); + return svgElement; + }.bind(this)); + }, + convertOpList: function SVGGraphics_convertOpList(operatorList) { + var argsArray = operatorList.argsArray; + var fnArray = operatorList.fnArray; + var fnArrayLen = fnArray.length; + var REVOPS = []; + var opList = []; + for (var op in _util.OPS) { + REVOPS[_util.OPS[op]] = op; + } + for (var x = 0; x < fnArrayLen; x++) { + var fnId = fnArray[x]; + opList.push({ + 'fnId': fnId, + 'fn': REVOPS[fnId], + 'args': argsArray[x] + }); } - } - }, - setWordSpacing: function SVGGraphics_setWordSpacing(wordSpacing) { - this.current.wordSpacing = wordSpacing; - }, - setCharSpacing: function SVGGraphics_setCharSpacing(charSpacing) { - this.current.charSpacing = charSpacing; - }, - nextLine: function SVGGraphics_nextLine() { - this.moveText(0, this.current.leading); - }, - setTextMatrix: function SVGGraphics_setTextMatrix(a, b, c, d, e, f) { - var current = this.current; - this.current.textMatrix = this.current.lineMatrix = [a, b, c, d, e, f]; - this.current.x = this.current.lineX = 0; - this.current.y = this.current.lineY = 0; - current.xcoords = []; - current.tspan = document.createElementNS(NS, 'svg:tspan'); - current.tspan.setAttributeNS(null, 'font-family', current.fontFamily); - current.tspan.setAttributeNS(null, 'font-size', pf(current.fontSize) + 'px'); - current.tspan.setAttributeNS(null, 'y', pf(-current.y)); - current.txtElement = document.createElementNS(NS, 'svg:text'); - current.txtElement.appendChild(current.tspan); - }, - beginText: function SVGGraphics_beginText() { - this.current.x = this.current.lineX = 0; - this.current.y = this.current.lineY = 0; - this.current.textMatrix = IDENTITY_MATRIX; - this.current.lineMatrix = IDENTITY_MATRIX; - this.current.tspan = document.createElementNS(NS, 'svg:tspan'); - this.current.txtElement = document.createElementNS(NS, 'svg:text'); - this.current.txtgrp = document.createElementNS(NS, 'svg:g'); - this.current.xcoords = []; - }, - moveText: function SVGGraphics_moveText(x, y) { - var current = this.current; - this.current.x = this.current.lineX += x; - this.current.y = this.current.lineY += y; - current.xcoords = []; - current.tspan = document.createElementNS(NS, 'svg:tspan'); - current.tspan.setAttributeNS(null, 'font-family', current.fontFamily); - current.tspan.setAttributeNS(null, 'font-size', pf(current.fontSize) + 'px'); - current.tspan.setAttributeNS(null, 'y', pf(-current.y)); - }, - showText: function SVGGraphics_showText(glyphs) { - var current = this.current; - var font = current.font; - var fontSize = current.fontSize; - if (fontSize === 0) { - return; - } - var charSpacing = current.charSpacing; - var wordSpacing = current.wordSpacing; - var fontDirection = current.fontDirection; - var textHScale = current.textHScale * fontDirection; - var glyphsLength = glyphs.length; - var vertical = font.vertical; - var widthAdvanceScale = fontSize * current.fontMatrix[0]; - var x = 0, - i; - for (i = 0; i < glyphsLength; ++i) { - var glyph = glyphs[i]; - if (glyph === null) { - x += fontDirection * wordSpacing; - continue; - } else if (isNum(glyph)) { - x += -glyph * fontSize * 0.001; - continue; + return opListToTree(opList); + }, + executeOpTree: function SVGGraphics_executeOpTree(opTree) { + var opTreeLen = opTree.length; + for (var x = 0; x < opTreeLen; x++) { + var fn = opTree[x].fn; + var fnId = opTree[x].fnId; + var args = opTree[x].args; + switch (fnId | 0) { + case _util.OPS.beginText: + this.beginText(); + break; + case _util.OPS.setLeading: + this.setLeading(args); + break; + case _util.OPS.setLeadingMoveText: + this.setLeadingMoveText(args[0], args[1]); + break; + case _util.OPS.setFont: + this.setFont(args); + break; + case _util.OPS.showText: + this.showText(args[0]); + break; + case _util.OPS.showSpacedText: + this.showText(args[0]); + break; + case _util.OPS.endText: + this.endText(); + break; + case _util.OPS.moveText: + this.moveText(args[0], args[1]); + break; + case _util.OPS.setCharSpacing: + this.setCharSpacing(args[0]); + break; + case _util.OPS.setWordSpacing: + this.setWordSpacing(args[0]); + break; + case _util.OPS.setHScale: + this.setHScale(args[0]); + break; + case _util.OPS.setTextMatrix: + this.setTextMatrix(args[0], args[1], args[2], args[3], args[4], args[5]); + break; + case _util.OPS.setLineWidth: + this.setLineWidth(args[0]); + break; + case _util.OPS.setLineJoin: + this.setLineJoin(args[0]); + break; + case _util.OPS.setLineCap: + this.setLineCap(args[0]); + break; + case _util.OPS.setMiterLimit: + this.setMiterLimit(args[0]); + break; + case _util.OPS.setFillRGBColor: + this.setFillRGBColor(args[0], args[1], args[2]); + break; + case _util.OPS.setStrokeRGBColor: + this.setStrokeRGBColor(args[0], args[1], args[2]); + break; + case _util.OPS.setDash: + this.setDash(args[0], args[1]); + break; + case _util.OPS.setGState: + this.setGState(args[0]); + break; + case _util.OPS.fill: + this.fill(); + break; + case _util.OPS.eoFill: + this.eoFill(); + break; + case _util.OPS.stroke: + this.stroke(); + break; + case _util.OPS.fillStroke: + this.fillStroke(); + break; + case _util.OPS.eoFillStroke: + this.eoFillStroke(); + break; + case _util.OPS.clip: + this.clip('nonzero'); + break; + case _util.OPS.eoClip: + this.clip('evenodd'); + break; + case _util.OPS.paintSolidColorImageMask: + this.paintSolidColorImageMask(); + break; + case _util.OPS.paintJpegXObject: + this.paintJpegXObject(args[0], args[1], args[2]); + break; + case _util.OPS.paintImageXObject: + this.paintImageXObject(args[0]); + break; + case _util.OPS.paintInlineImageXObject: + this.paintInlineImageXObject(args[0]); + break; + case _util.OPS.paintImageMaskXObject: + this.paintImageMaskXObject(args[0]); + break; + case _util.OPS.paintFormXObjectBegin: + this.paintFormXObjectBegin(args[0], args[1]); + break; + case _util.OPS.paintFormXObjectEnd: + this.paintFormXObjectEnd(); + break; + case _util.OPS.closePath: + this.closePath(); + break; + case _util.OPS.closeStroke: + this.closeStroke(); + break; + case _util.OPS.closeFillStroke: + this.closeFillStroke(); + break; + case _util.OPS.nextLine: + this.nextLine(); + break; + case _util.OPS.transform: + this.transform(args[0], args[1], args[2], args[3], args[4], args[5]); + break; + case _util.OPS.constructPath: + this.constructPath(args[0], args[1]); + break; + case _util.OPS.endPath: + this.endPath(); + break; + case 92: + this.group(opTree[x].items); + break; + default: + (0, _util.warn)('Unimplemented operator ' + fn); + break; + } } - current.xcoords.push(current.x + x * textHScale); - var width = glyph.width; - var character = glyph.fontChar; - var charWidth = width * widthAdvanceScale + charSpacing * fontDirection; - x += charWidth; - current.tspan.textContent += character; - } - if (vertical) { - current.y -= x * textHScale; - } else { - current.x += x * textHScale; - } - current.tspan.setAttributeNS(null, 'x', current.xcoords.map(pf).join(' ')); - current.tspan.setAttributeNS(null, 'y', pf(-current.y)); - current.tspan.setAttributeNS(null, 'font-family', current.fontFamily); - current.tspan.setAttributeNS(null, 'font-size', pf(current.fontSize) + 'px'); - if (current.fontStyle !== SVG_DEFAULTS.fontStyle) { - current.tspan.setAttributeNS(null, 'font-style', current.fontStyle); - } - if (current.fontWeight !== SVG_DEFAULTS.fontWeight) { - current.tspan.setAttributeNS(null, 'font-weight', current.fontWeight); - } - if (current.fillColor !== SVG_DEFAULTS.fillColor) { - current.tspan.setAttributeNS(null, 'fill', current.fillColor); - } - current.txtElement.setAttributeNS(null, 'transform', pm(current.textMatrix) + ' scale(1, -1)'); - current.txtElement.setAttributeNS(XML_NS, 'xml:space', 'preserve'); - current.txtElement.appendChild(current.tspan); - current.txtgrp.appendChild(current.txtElement); - this._ensureTransformGroup().appendChild(current.txtElement); - }, - setLeadingMoveText: function SVGGraphics_setLeadingMoveText(x, y) { - this.setLeading(-y); - this.moveText(x, y); - }, - addFontStyle: function SVGGraphics_addFontStyle(fontObj) { - if (!this.cssStyle) { - this.cssStyle = document.createElementNS(NS, 'svg:style'); - this.cssStyle.setAttributeNS(null, 'type', 'text/css'); - this.defs.appendChild(this.cssStyle); - } - var url = createObjectURL(fontObj.data, fontObj.mimetype, this.forceDataSchema); - this.cssStyle.textContent += '@font-face { font-family: "' + fontObj.loadedName + '";' + ' src: url(' + url + '); }\n'; - }, - setFont: function SVGGraphics_setFont(details) { - var current = this.current; - var fontObj = this.commonObjs.get(details[0]); - var size = details[1]; - this.current.font = fontObj; - if (this.embedFonts && fontObj.data && !this.embeddedFonts[fontObj.loadedName]) { - this.addFontStyle(fontObj); - this.embeddedFonts[fontObj.loadedName] = fontObj; - } - current.fontMatrix = fontObj.fontMatrix ? fontObj.fontMatrix : FONT_IDENTITY_MATRIX; - var bold = fontObj.black ? fontObj.bold ? 'bolder' : 'bold' : fontObj.bold ? 'bold' : 'normal'; - var italic = fontObj.italic ? 'italic' : 'normal'; - if (size < 0) { - size = -size; - current.fontDirection = -1; - } else { - current.fontDirection = 1; - } - current.fontSize = size; - current.fontFamily = fontObj.loadedName; - current.fontWeight = bold; - current.fontStyle = italic; - current.tspan = document.createElementNS(NS, 'svg:tspan'); - current.tspan.setAttributeNS(null, 'y', pf(-current.y)); - current.xcoords = []; - }, - endText: function SVGGraphics_endText() {}, - setLineWidth: function SVGGraphics_setLineWidth(width) { - this.current.lineWidth = width; - }, - setLineCap: function SVGGraphics_setLineCap(style) { - this.current.lineCap = LINE_CAP_STYLES[style]; - }, - setLineJoin: function SVGGraphics_setLineJoin(style) { - this.current.lineJoin = LINE_JOIN_STYLES[style]; - }, - setMiterLimit: function SVGGraphics_setMiterLimit(limit) { - this.current.miterLimit = limit; - }, - setStrokeRGBColor: function SVGGraphics_setStrokeRGBColor(r, g, b) { - var color = Util.makeCssRgb(r, g, b); - this.current.strokeColor = color; - }, - setFillRGBColor: function SVGGraphics_setFillRGBColor(r, g, b) { - var color = Util.makeCssRgb(r, g, b); - this.current.fillColor = color; - this.current.tspan = document.createElementNS(NS, 'svg:tspan'); - this.current.xcoords = []; - }, - setDash: function SVGGraphics_setDash(dashArray, dashPhase) { - this.current.dashArray = dashArray; - this.current.dashPhase = dashPhase; - }, - constructPath: function SVGGraphics_constructPath(ops, args) { - var current = this.current; - var x = current.x, - y = current.y; - current.path = document.createElementNS(NS, 'svg:path'); - var d = []; - var opLength = ops.length; - for (var i = 0, j = 0; i < opLength; i++) { - switch (ops[i] | 0) { - case OPS.rectangle: - x = args[j++]; - y = args[j++]; - var width = args[j++]; - var height = args[j++]; - var xw = x + width; - var yh = y + height; - d.push('M', pf(x), pf(y), 'L', pf(xw), pf(y), 'L', pf(xw), pf(yh), 'L', pf(x), pf(yh), 'Z'); - break; - case OPS.moveTo: - x = args[j++]; - y = args[j++]; - d.push('M', pf(x), pf(y)); - break; - case OPS.lineTo: - x = args[j++]; - y = args[j++]; - d.push('L', pf(x), pf(y)); - break; - case OPS.curveTo: - x = args[j + 4]; - y = args[j + 5]; - d.push('C', pf(args[j]), pf(args[j + 1]), pf(args[j + 2]), pf(args[j + 3]), pf(x), pf(y)); - j += 6; - break; - case OPS.curveTo2: - x = args[j + 2]; - y = args[j + 3]; - d.push('C', pf(x), pf(y), pf(args[j]), pf(args[j + 1]), pf(args[j + 2]), pf(args[j + 3])); - j += 4; - break; - case OPS.curveTo3: - x = args[j + 2]; - y = args[j + 3]; - d.push('C', pf(args[j]), pf(args[j + 1]), pf(x), pf(y), pf(x), pf(y)); - j += 4; - break; - case OPS.closePath: - d.push('Z'); - break; + }, + setWordSpacing: function SVGGraphics_setWordSpacing(wordSpacing) { + this.current.wordSpacing = wordSpacing; + }, + setCharSpacing: function SVGGraphics_setCharSpacing(charSpacing) { + this.current.charSpacing = charSpacing; + }, + nextLine: function SVGGraphics_nextLine() { + this.moveText(0, this.current.leading); + }, + setTextMatrix: function SVGGraphics_setTextMatrix(a, b, c, d, e, f) { + var current = this.current; + this.current.textMatrix = this.current.lineMatrix = [a, b, c, d, e, f]; + this.current.x = this.current.lineX = 0; + this.current.y = this.current.lineY = 0; + current.xcoords = []; + current.tspan = document.createElementNS(NS, 'svg:tspan'); + current.tspan.setAttributeNS(null, 'font-family', current.fontFamily); + current.tspan.setAttributeNS(null, 'font-size', pf(current.fontSize) + 'px'); + current.tspan.setAttributeNS(null, 'y', pf(-current.y)); + current.txtElement = document.createElementNS(NS, 'svg:text'); + current.txtElement.appendChild(current.tspan); + }, + beginText: function SVGGraphics_beginText() { + this.current.x = this.current.lineX = 0; + this.current.y = this.current.lineY = 0; + this.current.textMatrix = _util.IDENTITY_MATRIX; + this.current.lineMatrix = _util.IDENTITY_MATRIX; + this.current.tspan = document.createElementNS(NS, 'svg:tspan'); + this.current.txtElement = document.createElementNS(NS, 'svg:text'); + this.current.txtgrp = document.createElementNS(NS, 'svg:g'); + this.current.xcoords = []; + }, + moveText: function SVGGraphics_moveText(x, y) { + var current = this.current; + this.current.x = this.current.lineX += x; + this.current.y = this.current.lineY += y; + current.xcoords = []; + current.tspan = document.createElementNS(NS, 'svg:tspan'); + current.tspan.setAttributeNS(null, 'font-family', current.fontFamily); + current.tspan.setAttributeNS(null, 'font-size', pf(current.fontSize) + 'px'); + current.tspan.setAttributeNS(null, 'y', pf(-current.y)); + }, + showText: function SVGGraphics_showText(glyphs) { + var current = this.current; + var font = current.font; + var fontSize = current.fontSize; + if (fontSize === 0) { + return; } - } - current.path.setAttributeNS(null, 'd', d.join(' ')); - current.path.setAttributeNS(null, 'stroke-miterlimit', pf(current.miterLimit)); - current.path.setAttributeNS(null, 'stroke-linecap', current.lineCap); - current.path.setAttributeNS(null, 'stroke-linejoin', current.lineJoin); - current.path.setAttributeNS(null, 'stroke-width', pf(current.lineWidth) + 'px'); - current.path.setAttributeNS(null, 'stroke-dasharray', current.dashArray.map(pf).join(' ')); - current.path.setAttributeNS(null, 'stroke-dashoffset', pf(current.dashPhase) + 'px'); - current.path.setAttributeNS(null, 'fill', 'none'); - this._ensureTransformGroup().appendChild(current.path); - current.element = current.path; - current.setCurrentPoint(x, y); - }, - endPath: function SVGGraphics_endPath() {}, - clip: function SVGGraphics_clip(type) { - var current = this.current; - var clipId = 'clippath' + clipCount; - clipCount++; - var clipPath = document.createElementNS(NS, 'svg:clipPath'); - clipPath.setAttributeNS(null, 'id', clipId); - clipPath.setAttributeNS(null, 'transform', pm(this.transformMatrix)); - var clipElement = current.element.cloneNode(); - if (type === 'evenodd') { - clipElement.setAttributeNS(null, 'clip-rule', 'evenodd'); - } else { - clipElement.setAttributeNS(null, 'clip-rule', 'nonzero'); - } - clipPath.appendChild(clipElement); - this.defs.appendChild(clipPath); - if (current.activeClipUrl) { - current.clipGroup = null; - this.extraStack.forEach(function (prev) { - prev.clipGroup = null; - }); - } - current.activeClipUrl = 'url(#' + clipId + ')'; - this.tgrp = null; - }, - closePath: function SVGGraphics_closePath() { - var current = this.current; - var d = current.path.getAttributeNS(null, 'd'); - d += 'Z'; - current.path.setAttributeNS(null, 'd', d); - }, - setLeading: function SVGGraphics_setLeading(leading) { - this.current.leading = -leading; - }, - setTextRise: function SVGGraphics_setTextRise(textRise) { - this.current.textRise = textRise; - }, - setHScale: function SVGGraphics_setHScale(scale) { - this.current.textHScale = scale / 100; - }, - setGState: function SVGGraphics_setGState(states) { - for (var i = 0, ii = states.length; i < ii; i++) { - var state = states[i]; - var key = state[0]; - var value = state[1]; - switch (key) { - case 'LW': - this.setLineWidth(value); - break; - case 'LC': - this.setLineCap(value); - break; - case 'LJ': - this.setLineJoin(value); - break; - case 'ML': - this.setMiterLimit(value); - break; - case 'D': - this.setDash(value[0], value[1]); - break; - case 'Font': - this.setFont(value); - break; - default: - warn('Unimplemented graphic state ' + key); - break; + var charSpacing = current.charSpacing; + var wordSpacing = current.wordSpacing; + var fontDirection = current.fontDirection; + var textHScale = current.textHScale * fontDirection; + var glyphsLength = glyphs.length; + var vertical = font.vertical; + var widthAdvanceScale = fontSize * current.fontMatrix[0]; + var x = 0, + i; + for (i = 0; i < glyphsLength; ++i) { + var glyph = glyphs[i]; + if (glyph === null) { + x += fontDirection * wordSpacing; + continue; + } else if ((0, _util.isNum)(glyph)) { + x += -glyph * fontSize * 0.001; + continue; + } + current.xcoords.push(current.x + x * textHScale); + var width = glyph.width; + var character = glyph.fontChar; + var charWidth = width * widthAdvanceScale + charSpacing * fontDirection; + x += charWidth; + current.tspan.textContent += character; } - } - }, - fill: function SVGGraphics_fill() { - var current = this.current; - current.element.setAttributeNS(null, 'fill', current.fillColor); - }, - stroke: function SVGGraphics_stroke() { - var current = this.current; - current.element.setAttributeNS(null, 'stroke', current.strokeColor); - current.element.setAttributeNS(null, 'fill', 'none'); - }, - eoFill: function SVGGraphics_eoFill() { - var current = this.current; - current.element.setAttributeNS(null, 'fill', current.fillColor); - current.element.setAttributeNS(null, 'fill-rule', 'evenodd'); - }, - fillStroke: function SVGGraphics_fillStroke() { - this.stroke(); - this.fill(); - }, - eoFillStroke: function SVGGraphics_eoFillStroke() { - this.current.element.setAttributeNS(null, 'fill-rule', 'evenodd'); - this.fillStroke(); - }, - closeStroke: function SVGGraphics_closeStroke() { - this.closePath(); - this.stroke(); - }, - closeFillStroke: function SVGGraphics_closeFillStroke() { - this.closePath(); - this.fillStroke(); - }, - paintSolidColorImageMask: function SVGGraphics_paintSolidColorImageMask() { - var current = this.current; - var rect = document.createElementNS(NS, 'svg:rect'); - rect.setAttributeNS(null, 'x', '0'); - rect.setAttributeNS(null, 'y', '0'); - rect.setAttributeNS(null, 'width', '1px'); - rect.setAttributeNS(null, 'height', '1px'); - rect.setAttributeNS(null, 'fill', current.fillColor); - this._ensureTransformGroup().appendChild(rect); - }, - paintJpegXObject: function SVGGraphics_paintJpegXObject(objId, w, h) { - var imgObj = this.objs.get(objId); - var imgEl = document.createElementNS(NS, 'svg:image'); - imgEl.setAttributeNS(XLINK_NS, 'xlink:href', imgObj.src); - imgEl.setAttributeNS(null, 'width', imgObj.width + 'px'); - imgEl.setAttributeNS(null, 'height', imgObj.height + 'px'); - imgEl.setAttributeNS(null, 'x', '0'); - imgEl.setAttributeNS(null, 'y', pf(-h)); - imgEl.setAttributeNS(null, 'transform', 'scale(' + pf(1 / w) + ' ' + pf(-1 / h) + ')'); - this._ensureTransformGroup().appendChild(imgEl); - }, - paintImageXObject: function SVGGraphics_paintImageXObject(objId) { - var imgData = this.objs.get(objId); - if (!imgData) { - warn('Dependent image isn\'t ready yet'); - return; - } - this.paintInlineImageXObject(imgData); - }, - paintInlineImageXObject: function SVGGraphics_paintInlineImageXObject(imgData, mask) { - var width = imgData.width; - var height = imgData.height; - var imgSrc = convertImgDataToPng(imgData, this.forceDataSchema); - var cliprect = document.createElementNS(NS, 'svg:rect'); - cliprect.setAttributeNS(null, 'x', '0'); - cliprect.setAttributeNS(null, 'y', '0'); - cliprect.setAttributeNS(null, 'width', pf(width)); - cliprect.setAttributeNS(null, 'height', pf(height)); - this.current.element = cliprect; - this.clip('nonzero'); - var imgEl = document.createElementNS(NS, 'svg:image'); - imgEl.setAttributeNS(XLINK_NS, 'xlink:href', imgSrc); - imgEl.setAttributeNS(null, 'x', '0'); - imgEl.setAttributeNS(null, 'y', pf(-height)); - imgEl.setAttributeNS(null, 'width', pf(width) + 'px'); - imgEl.setAttributeNS(null, 'height', pf(height) + 'px'); - imgEl.setAttributeNS(null, 'transform', 'scale(' + pf(1 / width) + ' ' + pf(-1 / height) + ')'); - if (mask) { - mask.appendChild(imgEl); - } else { + if (vertical) { + current.y -= x * textHScale; + } else { + current.x += x * textHScale; + } + current.tspan.setAttributeNS(null, 'x', current.xcoords.map(pf).join(' ')); + current.tspan.setAttributeNS(null, 'y', pf(-current.y)); + current.tspan.setAttributeNS(null, 'font-family', current.fontFamily); + current.tspan.setAttributeNS(null, 'font-size', pf(current.fontSize) + 'px'); + if (current.fontStyle !== SVG_DEFAULTS.fontStyle) { + current.tspan.setAttributeNS(null, 'font-style', current.fontStyle); + } + if (current.fontWeight !== SVG_DEFAULTS.fontWeight) { + current.tspan.setAttributeNS(null, 'font-weight', current.fontWeight); + } + if (current.fillColor !== SVG_DEFAULTS.fillColor) { + current.tspan.setAttributeNS(null, 'fill', current.fillColor); + } + current.txtElement.setAttributeNS(null, 'transform', pm(current.textMatrix) + ' scale(1, -1)'); + current.txtElement.setAttributeNS(XML_NS, 'xml:space', 'preserve'); + current.txtElement.appendChild(current.tspan); + current.txtgrp.appendChild(current.txtElement); + this._ensureTransformGroup().appendChild(current.txtElement); + }, + setLeadingMoveText: function SVGGraphics_setLeadingMoveText(x, y) { + this.setLeading(-y); + this.moveText(x, y); + }, + addFontStyle: function SVGGraphics_addFontStyle(fontObj) { + if (!this.cssStyle) { + this.cssStyle = document.createElementNS(NS, 'svg:style'); + this.cssStyle.setAttributeNS(null, 'type', 'text/css'); + this.defs.appendChild(this.cssStyle); + } + var url = (0, _util.createObjectURL)(fontObj.data, fontObj.mimetype, this.forceDataSchema); + this.cssStyle.textContent += '@font-face { font-family: "' + fontObj.loadedName + '";' + ' src: url(' + url + '); }\n'; + }, + setFont: function SVGGraphics_setFont(details) { + var current = this.current; + var fontObj = this.commonObjs.get(details[0]); + var size = details[1]; + this.current.font = fontObj; + if (this.embedFonts && fontObj.data && !this.embeddedFonts[fontObj.loadedName]) { + this.addFontStyle(fontObj); + this.embeddedFonts[fontObj.loadedName] = fontObj; + } + current.fontMatrix = fontObj.fontMatrix ? fontObj.fontMatrix : _util.FONT_IDENTITY_MATRIX; + var bold = fontObj.black ? fontObj.bold ? 'bolder' : 'bold' : fontObj.bold ? 'bold' : 'normal'; + var italic = fontObj.italic ? 'italic' : 'normal'; + if (size < 0) { + size = -size; + current.fontDirection = -1; + } else { + current.fontDirection = 1; + } + current.fontSize = size; + current.fontFamily = fontObj.loadedName; + current.fontWeight = bold; + current.fontStyle = italic; + current.tspan = document.createElementNS(NS, 'svg:tspan'); + current.tspan.setAttributeNS(null, 'y', pf(-current.y)); + current.xcoords = []; + }, + endText: function SVGGraphics_endText() {}, + setLineWidth: function SVGGraphics_setLineWidth(width) { + this.current.lineWidth = width; + }, + setLineCap: function SVGGraphics_setLineCap(style) { + this.current.lineCap = LINE_CAP_STYLES[style]; + }, + setLineJoin: function SVGGraphics_setLineJoin(style) { + this.current.lineJoin = LINE_JOIN_STYLES[style]; + }, + setMiterLimit: function SVGGraphics_setMiterLimit(limit) { + this.current.miterLimit = limit; + }, + setStrokeRGBColor: function SVGGraphics_setStrokeRGBColor(r, g, b) { + var color = _util.Util.makeCssRgb(r, g, b); + this.current.strokeColor = color; + }, + setFillRGBColor: function SVGGraphics_setFillRGBColor(r, g, b) { + var color = _util.Util.makeCssRgb(r, g, b); + this.current.fillColor = color; + this.current.tspan = document.createElementNS(NS, 'svg:tspan'); + this.current.xcoords = []; + }, + setDash: function SVGGraphics_setDash(dashArray, dashPhase) { + this.current.dashArray = dashArray; + this.current.dashPhase = dashPhase; + }, + constructPath: function SVGGraphics_constructPath(ops, args) { + var current = this.current; + var x = current.x, + y = current.y; + current.path = document.createElementNS(NS, 'svg:path'); + var d = []; + var opLength = ops.length; + for (var i = 0, j = 0; i < opLength; i++) { + switch (ops[i] | 0) { + case _util.OPS.rectangle: + x = args[j++]; + y = args[j++]; + var width = args[j++]; + var height = args[j++]; + var xw = x + width; + var yh = y + height; + d.push('M', pf(x), pf(y), 'L', pf(xw), pf(y), 'L', pf(xw), pf(yh), 'L', pf(x), pf(yh), 'Z'); + break; + case _util.OPS.moveTo: + x = args[j++]; + y = args[j++]; + d.push('M', pf(x), pf(y)); + break; + case _util.OPS.lineTo: + x = args[j++]; + y = args[j++]; + d.push('L', pf(x), pf(y)); + break; + case _util.OPS.curveTo: + x = args[j + 4]; + y = args[j + 5]; + d.push('C', pf(args[j]), pf(args[j + 1]), pf(args[j + 2]), pf(args[j + 3]), pf(x), pf(y)); + j += 6; + break; + case _util.OPS.curveTo2: + x = args[j + 2]; + y = args[j + 3]; + d.push('C', pf(x), pf(y), pf(args[j]), pf(args[j + 1]), pf(args[j + 2]), pf(args[j + 3])); + j += 4; + break; + case _util.OPS.curveTo3: + x = args[j + 2]; + y = args[j + 3]; + d.push('C', pf(args[j]), pf(args[j + 1]), pf(x), pf(y), pf(x), pf(y)); + j += 4; + break; + case _util.OPS.closePath: + d.push('Z'); + break; + } + } + current.path.setAttributeNS(null, 'd', d.join(' ')); + current.path.setAttributeNS(null, 'stroke-miterlimit', pf(current.miterLimit)); + current.path.setAttributeNS(null, 'stroke-linecap', current.lineCap); + current.path.setAttributeNS(null, 'stroke-linejoin', current.lineJoin); + current.path.setAttributeNS(null, 'stroke-width', pf(current.lineWidth) + 'px'); + current.path.setAttributeNS(null, 'stroke-dasharray', current.dashArray.map(pf).join(' ')); + current.path.setAttributeNS(null, 'stroke-dashoffset', pf(current.dashPhase) + 'px'); + current.path.setAttributeNS(null, 'fill', 'none'); + this._ensureTransformGroup().appendChild(current.path); + current.element = current.path; + current.setCurrentPoint(x, y); + }, + endPath: function SVGGraphics_endPath() {}, + clip: function SVGGraphics_clip(type) { + var current = this.current; + var clipId = 'clippath' + clipCount; + clipCount++; + var clipPath = document.createElementNS(NS, 'svg:clipPath'); + clipPath.setAttributeNS(null, 'id', clipId); + clipPath.setAttributeNS(null, 'transform', pm(this.transformMatrix)); + var clipElement = current.element.cloneNode(); + if (type === 'evenodd') { + clipElement.setAttributeNS(null, 'clip-rule', 'evenodd'); + } else { + clipElement.setAttributeNS(null, 'clip-rule', 'nonzero'); + } + clipPath.appendChild(clipElement); + this.defs.appendChild(clipPath); + if (current.activeClipUrl) { + current.clipGroup = null; + this.extraStack.forEach(function (prev) { + prev.clipGroup = null; + }); + } + current.activeClipUrl = 'url(#' + clipId + ')'; + this.tgrp = null; + }, + closePath: function SVGGraphics_closePath() { + var current = this.current; + var d = current.path.getAttributeNS(null, 'd'); + d += 'Z'; + current.path.setAttributeNS(null, 'd', d); + }, + setLeading: function SVGGraphics_setLeading(leading) { + this.current.leading = -leading; + }, + setTextRise: function SVGGraphics_setTextRise(textRise) { + this.current.textRise = textRise; + }, + setHScale: function SVGGraphics_setHScale(scale) { + this.current.textHScale = scale / 100; + }, + setGState: function SVGGraphics_setGState(states) { + for (var i = 0, ii = states.length; i < ii; i++) { + var state = states[i]; + var key = state[0]; + var value = state[1]; + switch (key) { + case 'LW': + this.setLineWidth(value); + break; + case 'LC': + this.setLineCap(value); + break; + case 'LJ': + this.setLineJoin(value); + break; + case 'ML': + this.setMiterLimit(value); + break; + case 'D': + this.setDash(value[0], value[1]); + break; + case 'Font': + this.setFont(value); + break; + default: + (0, _util.warn)('Unimplemented graphic state ' + key); + break; + } + } + }, + fill: function SVGGraphics_fill() { + var current = this.current; + current.element.setAttributeNS(null, 'fill', current.fillColor); + }, + stroke: function SVGGraphics_stroke() { + var current = this.current; + current.element.setAttributeNS(null, 'stroke', current.strokeColor); + current.element.setAttributeNS(null, 'fill', 'none'); + }, + eoFill: function SVGGraphics_eoFill() { + var current = this.current; + current.element.setAttributeNS(null, 'fill', current.fillColor); + current.element.setAttributeNS(null, 'fill-rule', 'evenodd'); + }, + fillStroke: function SVGGraphics_fillStroke() { + this.stroke(); + this.fill(); + }, + eoFillStroke: function SVGGraphics_eoFillStroke() { + this.current.element.setAttributeNS(null, 'fill-rule', 'evenodd'); + this.fillStroke(); + }, + closeStroke: function SVGGraphics_closeStroke() { + this.closePath(); + this.stroke(); + }, + closeFillStroke: function SVGGraphics_closeFillStroke() { + this.closePath(); + this.fillStroke(); + }, + paintSolidColorImageMask: function SVGGraphics_paintSolidColorImageMask() { + var current = this.current; + var rect = document.createElementNS(NS, 'svg:rect'); + rect.setAttributeNS(null, 'x', '0'); + rect.setAttributeNS(null, 'y', '0'); + rect.setAttributeNS(null, 'width', '1px'); + rect.setAttributeNS(null, 'height', '1px'); + rect.setAttributeNS(null, 'fill', current.fillColor); + this._ensureTransformGroup().appendChild(rect); + }, + paintJpegXObject: function SVGGraphics_paintJpegXObject(objId, w, h) { + var imgObj = this.objs.get(objId); + var imgEl = document.createElementNS(NS, 'svg:image'); + imgEl.setAttributeNS(XLINK_NS, 'xlink:href', imgObj.src); + imgEl.setAttributeNS(null, 'width', imgObj.width + 'px'); + imgEl.setAttributeNS(null, 'height', imgObj.height + 'px'); + imgEl.setAttributeNS(null, 'x', '0'); + imgEl.setAttributeNS(null, 'y', pf(-h)); + imgEl.setAttributeNS(null, 'transform', 'scale(' + pf(1 / w) + ' ' + pf(-1 / h) + ')'); this._ensureTransformGroup().appendChild(imgEl); - } - }, - paintImageMaskXObject: function SVGGraphics_paintImageMaskXObject(imgData) { - var current = this.current; - var width = imgData.width; - var height = imgData.height; - var fillColor = current.fillColor; - current.maskId = 'mask' + maskCount++; - var mask = document.createElementNS(NS, 'svg:mask'); - mask.setAttributeNS(null, 'id', current.maskId); - var rect = document.createElementNS(NS, 'svg:rect'); - rect.setAttributeNS(null, 'x', '0'); - rect.setAttributeNS(null, 'y', '0'); - rect.setAttributeNS(null, 'width', pf(width)); - rect.setAttributeNS(null, 'height', pf(height)); - rect.setAttributeNS(null, 'fill', fillColor); - rect.setAttributeNS(null, 'mask', 'url(#' + current.maskId + ')'); - this.defs.appendChild(mask); - this._ensureTransformGroup().appendChild(rect); - this.paintInlineImageXObject(imgData, mask); - }, - paintFormXObjectBegin: function SVGGraphics_paintFormXObjectBegin(matrix, bbox) { - if (isArray(matrix) && matrix.length === 6) { - this.transform(matrix[0], matrix[1], matrix[2], matrix[3], matrix[4], matrix[5]); - } - if (isArray(bbox) && bbox.length === 4) { - var width = bbox[2] - bbox[0]; - var height = bbox[3] - bbox[1]; + }, + paintImageXObject: function SVGGraphics_paintImageXObject(objId) { + var imgData = this.objs.get(objId); + if (!imgData) { + (0, _util.warn)('Dependent image isn\'t ready yet'); + return; + } + this.paintInlineImageXObject(imgData); + }, + paintInlineImageXObject: function SVGGraphics_paintInlineImageXObject(imgData, mask) { + var width = imgData.width; + var height = imgData.height; + var imgSrc = convertImgDataToPng(imgData, this.forceDataSchema); var cliprect = document.createElementNS(NS, 'svg:rect'); - cliprect.setAttributeNS(null, 'x', bbox[0]); - cliprect.setAttributeNS(null, 'y', bbox[1]); + cliprect.setAttributeNS(null, 'x', '0'); + cliprect.setAttributeNS(null, 'y', '0'); cliprect.setAttributeNS(null, 'width', pf(width)); cliprect.setAttributeNS(null, 'height', pf(height)); this.current.element = cliprect; this.clip('nonzero'); - this.endPath(); - } - }, - paintFormXObjectEnd: function SVGGraphics_paintFormXObjectEnd() {}, - _initialize: function SVGGraphics_initialize(viewport) { - var svg = document.createElementNS(NS, 'svg:svg'); - svg.setAttributeNS(null, 'version', '1.1'); - svg.setAttributeNS(null, 'width', viewport.width + 'px'); - svg.setAttributeNS(null, 'height', viewport.height + 'px'); - svg.setAttributeNS(null, 'preserveAspectRatio', 'none'); - svg.setAttributeNS(null, 'viewBox', '0 0 ' + viewport.width + ' ' + viewport.height); - var definitions = document.createElementNS(NS, 'svg:defs'); - svg.appendChild(definitions); - this.defs = definitions; - var rootGroup = document.createElementNS(NS, 'svg:g'); - rootGroup.setAttributeNS(null, 'transform', pm(viewport.transform)); - svg.appendChild(rootGroup); - this.svg = rootGroup; - return svg; - }, - _ensureClipGroup: function SVGGraphics_ensureClipGroup() { - if (!this.current.clipGroup) { - var clipGroup = document.createElementNS(NS, 'svg:g'); - clipGroup.setAttributeNS(null, 'clip-path', this.current.activeClipUrl); - this.svg.appendChild(clipGroup); - this.current.clipGroup = clipGroup; - } - return this.current.clipGroup; - }, - _ensureTransformGroup: function SVGGraphics_ensureTransformGroup() { - if (!this.tgrp) { - this.tgrp = document.createElementNS(NS, 'svg:g'); - this.tgrp.setAttributeNS(null, 'transform', pm(this.transformMatrix)); - if (this.current.activeClipUrl) { - this._ensureClipGroup().appendChild(this.tgrp); + var imgEl = document.createElementNS(NS, 'svg:image'); + imgEl.setAttributeNS(XLINK_NS, 'xlink:href', imgSrc); + imgEl.setAttributeNS(null, 'x', '0'); + imgEl.setAttributeNS(null, 'y', pf(-height)); + imgEl.setAttributeNS(null, 'width', pf(width) + 'px'); + imgEl.setAttributeNS(null, 'height', pf(height) + 'px'); + imgEl.setAttributeNS(null, 'transform', 'scale(' + pf(1 / width) + ' ' + pf(-1 / height) + ')'); + if (mask) { + mask.appendChild(imgEl); } else { - this.svg.appendChild(this.tgrp); + this._ensureTransformGroup().appendChild(imgEl); + } + }, + paintImageMaskXObject: function SVGGraphics_paintImageMaskXObject(imgData) { + var current = this.current; + var width = imgData.width; + var height = imgData.height; + var fillColor = current.fillColor; + current.maskId = 'mask' + maskCount++; + var mask = document.createElementNS(NS, 'svg:mask'); + mask.setAttributeNS(null, 'id', current.maskId); + var rect = document.createElementNS(NS, 'svg:rect'); + rect.setAttributeNS(null, 'x', '0'); + rect.setAttributeNS(null, 'y', '0'); + rect.setAttributeNS(null, 'width', pf(width)); + rect.setAttributeNS(null, 'height', pf(height)); + rect.setAttributeNS(null, 'fill', fillColor); + rect.setAttributeNS(null, 'mask', 'url(#' + current.maskId + ')'); + this.defs.appendChild(mask); + this._ensureTransformGroup().appendChild(rect); + this.paintInlineImageXObject(imgData, mask); + }, + paintFormXObjectBegin: function SVGGraphics_paintFormXObjectBegin(matrix, bbox) { + if ((0, _util.isArray)(matrix) && matrix.length === 6) { + this.transform(matrix[0], matrix[1], matrix[2], matrix[3], matrix[4], matrix[5]); + } + if ((0, _util.isArray)(bbox) && bbox.length === 4) { + var width = bbox[2] - bbox[0]; + var height = bbox[3] - bbox[1]; + var cliprect = document.createElementNS(NS, 'svg:rect'); + cliprect.setAttributeNS(null, 'x', bbox[0]); + cliprect.setAttributeNS(null, 'y', bbox[1]); + cliprect.setAttributeNS(null, 'width', pf(width)); + cliprect.setAttributeNS(null, 'height', pf(height)); + this.current.element = cliprect; + this.clip('nonzero'); + this.endPath(); + } + }, + paintFormXObjectEnd: function SVGGraphics_paintFormXObjectEnd() {}, + _initialize: function SVGGraphics_initialize(viewport) { + var svg = document.createElementNS(NS, 'svg:svg'); + svg.setAttributeNS(null, 'version', '1.1'); + svg.setAttributeNS(null, 'width', viewport.width + 'px'); + svg.setAttributeNS(null, 'height', viewport.height + 'px'); + svg.setAttributeNS(null, 'preserveAspectRatio', 'none'); + svg.setAttributeNS(null, 'viewBox', '0 0 ' + viewport.width + ' ' + viewport.height); + var definitions = document.createElementNS(NS, 'svg:defs'); + svg.appendChild(definitions); + this.defs = definitions; + var rootGroup = document.createElementNS(NS, 'svg:g'); + rootGroup.setAttributeNS(null, 'transform', pm(viewport.transform)); + svg.appendChild(rootGroup); + this.svg = rootGroup; + return svg; + }, + _ensureClipGroup: function SVGGraphics_ensureClipGroup() { + if (!this.current.clipGroup) { + var clipGroup = document.createElementNS(NS, 'svg:g'); + clipGroup.setAttributeNS(null, 'clip-path', this.current.activeClipUrl); + this.svg.appendChild(clipGroup); + this.current.clipGroup = clipGroup; + } + return this.current.clipGroup; + }, + _ensureTransformGroup: function SVGGraphics_ensureTransformGroup() { + if (!this.tgrp) { + this.tgrp = document.createElementNS(NS, 'svg:g'); + this.tgrp.setAttributeNS(null, 'transform', pm(this.transformMatrix)); + if (this.current.activeClipUrl) { + this._ensureClipGroup().appendChild(this.tgrp); + } else { + this.svg.appendChild(this.tgrp); + } } + return this.tgrp; } - return this.tgrp; - } - }; - return SVGGraphics; -}(); + }; + return SVGGraphics; + }(); +} exports.SVGGraphics = SVGGraphics; /***/ }), @@ -13721,12 +13704,15 @@ exports.SVGGraphics = SVGGraphics; "use strict"; -var sharedUtil = __w_pdfjs_require__(0); -var displayDOMUtils = __w_pdfjs_require__(3); -var Util = sharedUtil.Util; -var createPromiseCapability = sharedUtil.createPromiseCapability; -var CustomStyle = displayDOMUtils.CustomStyle; -var getDefaultSetting = displayDOMUtils.getDefaultSetting; +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.renderTextLayer = undefined; + +var _util = __w_pdfjs_require__(0); + +var _dom_utils = __w_pdfjs_require__(3); + var renderTextLayer = function renderTextLayerClosure() { var MAX_TEXT_DIVS_TO_RENDER = 100000; var NonWhitespaceRegexp = /\S/; @@ -13754,7 +13740,7 @@ var renderTextLayer = function renderTextLayerClosure() { task._textDivProperties.set(textDiv, textDivProperties); return; } - var tx = Util.transform(task._viewport.transform, geom.transform); + var tx = _util.Util.transform(task._viewport.transform, geom.transform); var angle = Math.atan2(tx[1], tx[0]); var style = styles[geom.fontName]; if (style.vertical) { @@ -13783,7 +13769,7 @@ var renderTextLayer = function renderTextLayerClosure() { textDivProperties.style = styleBuf.join(''); textDiv.setAttribute('style', textDivProperties.style); textDiv.textContent = geom.str; - if (getDefaultSetting('pdfBug')) { + if ((0, _dom_utils.getDefaultSetting)('pdfBug')) { textDiv.dataset.fontName = geom.fontName; } if (angle !== 0) { @@ -13809,7 +13795,7 @@ var renderTextLayer = function renderTextLayerClosure() { var m, b; if (angle !== 0) { m = [angleCos, angleSin, -angleSin, angleCos, left, top]; - b = Util.getAxialAlignedBoundingBox([0, 0, divWidth, divHeight], m); + b = _util.Util.getAxialAlignedBoundingBox([0, 0, divWidth, divHeight], m); } else { b = [left, top, left + divWidth, top + divHeight]; } @@ -13866,7 +13852,7 @@ var renderTextLayer = function renderTextLayerClosure() { } if (transform !== '') { textDivProperties.originalTransform = transform; - CustomStyle.setProp('transform', textDiv, transform); + _dom_utils.CustomStyle.setProp('transform', textDiv, transform); } task._textDivProperties.set(textDiv, textDivProperties); } @@ -13896,7 +13882,7 @@ var renderTextLayer = function renderTextLayerClosure() { var points = [[0, 0], [0, b.size[1]], [b.size[0], 0], b.size]; var ts = new Float64Array(64); points.forEach(function (p, i) { - var t = Util.applyTransform(p, m); + var t = _util.Util.applyTransform(p, m); ts[i + 0] = c && (e.left - t[0]) / c; ts[i + 4] = s && (e.top - t[1]) / s; ts[i + 8] = c && (e.right - t[0]) / c; @@ -14106,7 +14092,7 @@ var renderTextLayer = function renderTextLayerClosure() { this._textDivProperties = new WeakMap(); this._renderingDone = false; this._canceled = false; - this._capability = createPromiseCapability(); + this._capability = (0, _util.createPromiseCapability)(); this._renderTimer = null; this._bounds = []; this._enhanceTextSelection = !!enhanceTextSelection; @@ -14180,11 +14166,11 @@ var renderTextLayer = function renderTextLayerClosure() { div.setAttribute('style', divProperties.style + padding); } if (transform !== '') { - CustomStyle.setProp('transform', div, transform); + _dom_utils.CustomStyle.setProp('transform', div, transform); } } else { div.style.padding = 0; - CustomStyle.setProp('transform', div, divProperties.originalTransform || ''); + _dom_utils.CustomStyle.setProp('transform', div, divProperties.originalTransform || ''); } } } @@ -27552,8 +27538,13 @@ exports.WorkerMessageHandler = WorkerMessageHandler; "use strict"; -var sharedUtil = __w_pdfjs_require__(0); -var error = sharedUtil.error; +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Metadata = undefined; + +var _util = __w_pdfjs_require__(0); + function fixMetadata(meta) { return meta.replace(/>\\376\\377([^<]+)/g, function (all, codes) { var bytes = codes.replace(/\\([0-3])([0-7])([0-7])/g, function (code, d1, d2, d3) { @@ -27573,7 +27564,7 @@ function Metadata(meta) { var parser = new DOMParser(); meta = parser.parseFromString(meta, 'application/xml'); } else if (!(meta instanceof Document)) { - error('Metadata: Invalid metadata object'); + (0, _util.error)('Metadata: Invalid metadata object'); } this.metaDocument = meta; this.metadata = Object.create(null); @@ -27631,10 +27622,15 @@ exports.Metadata = Metadata; "use strict"; -var sharedUtil = __w_pdfjs_require__(0); -var displayDOMUtils = __w_pdfjs_require__(3); -var shadow = sharedUtil.shadow; -var getDefaultSetting = displayDOMUtils.getDefaultSetting; +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.WebGLUtils = undefined; + +var _dom_utils = __w_pdfjs_require__(3); + +var _util = __w_pdfjs_require__(0); + var WebGLUtils = function WebGLUtilsClosure() { function loadShader(gl, code, shaderType) { var shader = gl.createShader(shaderType); @@ -27969,7 +27965,7 @@ var WebGLUtils = function WebGLUtilsClosure() { } return { get isEnabled() { - if (getDefaultSetting('disableWebGL')) { + if ((0, _dom_utils.getDefaultSetting)('disableWebGL')) { return false; } var enabled = false; @@ -27977,7 +27973,7 @@ var WebGLUtils = function WebGLUtilsClosure() { generateGL(); enabled = !!currentGL; } catch (e) {} - return shadow(this, 'isEnabled', enabled); + return (0, _util.shadow)(this, 'isEnabled', enabled); }, composeSMask: composeSMask, drawFigures: drawFigures, @@ -27993,66 +27989,74 @@ exports.WebGLUtils = WebGLUtils; "use strict"; -var sharedUtil = __w_pdfjs_require__(0); -var displayDOMUtils = __w_pdfjs_require__(3); -var displayAPI = __w_pdfjs_require__(10); -var displayAnnotationLayer = __w_pdfjs_require__(9); -var displayTextLayer = __w_pdfjs_require__(12); -var displayMetadata = __w_pdfjs_require__(24); -var displaySVG = __w_pdfjs_require__(11); -var globalScope = sharedUtil.globalScope; -var deprecated = sharedUtil.deprecated; -var warn = sharedUtil.warn; -var LinkTarget = displayDOMUtils.LinkTarget; -var DEFAULT_LINK_REL = displayDOMUtils.DEFAULT_LINK_REL; +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.PDFJS = exports.isWorker = exports.globalScope = undefined; + +var _api = __w_pdfjs_require__(10); + +var _dom_utils = __w_pdfjs_require__(3); + +var _util = __w_pdfjs_require__(0); + +var _annotation_layer = __w_pdfjs_require__(9); + +var _metadata = __w_pdfjs_require__(24); + +var _text_layer = __w_pdfjs_require__(12); + +var _svg = __w_pdfjs_require__(11); + var isWorker = typeof window === 'undefined'; -if (!globalScope.PDFJS) { - globalScope.PDFJS = {}; +if (!_util.globalScope.PDFJS) { + _util.globalScope.PDFJS = {}; +} +var PDFJS = _util.globalScope.PDFJS; +{ + PDFJS.version = '1.8.233'; + PDFJS.build = '19321937'; } -var PDFJS = globalScope.PDFJS; -PDFJS.version = '1.8.213'; -PDFJS.build = 'c6e8ca86'; PDFJS.pdfBug = false; if (PDFJS.verbosity !== undefined) { - sharedUtil.setVerbosityLevel(PDFJS.verbosity); + (0, _util.setVerbosityLevel)(PDFJS.verbosity); } delete PDFJS.verbosity; Object.defineProperty(PDFJS, 'verbosity', { get: function get() { - return sharedUtil.getVerbosityLevel(); + return (0, _util.getVerbosityLevel)(); }, set: function set(level) { - sharedUtil.setVerbosityLevel(level); + (0, _util.setVerbosityLevel)(level); }, enumerable: true, configurable: true }); -PDFJS.VERBOSITY_LEVELS = sharedUtil.VERBOSITY_LEVELS; -PDFJS.OPS = sharedUtil.OPS; -PDFJS.UNSUPPORTED_FEATURES = sharedUtil.UNSUPPORTED_FEATURES; -PDFJS.isValidUrl = displayDOMUtils.isValidUrl; -PDFJS.shadow = sharedUtil.shadow; -PDFJS.createBlob = sharedUtil.createBlob; +PDFJS.VERBOSITY_LEVELS = _util.VERBOSITY_LEVELS; +PDFJS.OPS = _util.OPS; +PDFJS.UNSUPPORTED_FEATURES = _util.UNSUPPORTED_FEATURES; +PDFJS.isValidUrl = _dom_utils.isValidUrl; +PDFJS.shadow = _util.shadow; +PDFJS.createBlob = _util.createBlob; PDFJS.createObjectURL = function PDFJS_createObjectURL(data, contentType) { - return sharedUtil.createObjectURL(data, contentType, PDFJS.disableCreateObjectURL); + return (0, _util.createObjectURL)(data, contentType, PDFJS.disableCreateObjectURL); }; Object.defineProperty(PDFJS, 'isLittleEndian', { configurable: true, get: function PDFJS_isLittleEndian() { - var value = sharedUtil.isLittleEndian(); - return sharedUtil.shadow(PDFJS, 'isLittleEndian', value); + return (0, _util.shadow)(PDFJS, 'isLittleEndian', (0, _util.isLittleEndian)()); } }); -PDFJS.removeNullCharacters = sharedUtil.removeNullCharacters; -PDFJS.PasswordResponses = sharedUtil.PasswordResponses; -PDFJS.PasswordException = sharedUtil.PasswordException; -PDFJS.UnknownErrorException = sharedUtil.UnknownErrorException; -PDFJS.InvalidPDFException = sharedUtil.InvalidPDFException; -PDFJS.MissingPDFException = sharedUtil.MissingPDFException; -PDFJS.UnexpectedResponseException = sharedUtil.UnexpectedResponseException; -PDFJS.Util = sharedUtil.Util; -PDFJS.PageViewport = sharedUtil.PageViewport; -PDFJS.createPromiseCapability = sharedUtil.createPromiseCapability; +PDFJS.removeNullCharacters = _util.removeNullCharacters; +PDFJS.PasswordResponses = _util.PasswordResponses; +PDFJS.PasswordException = _util.PasswordException; +PDFJS.UnknownErrorException = _util.UnknownErrorException; +PDFJS.InvalidPDFException = _util.InvalidPDFException; +PDFJS.MissingPDFException = _util.MissingPDFException; +PDFJS.UnexpectedResponseException = _util.UnexpectedResponseException; +PDFJS.Util = _util.Util; +PDFJS.PageViewport = _util.PageViewport; +PDFJS.createPromiseCapability = _util.createPromiseCapability; PDFJS.maxImageSize = PDFJS.maxImageSize === undefined ? -1 : PDFJS.maxImageSize; PDFJS.cMapUrl = PDFJS.cMapUrl === undefined ? null : PDFJS.cMapUrl; PDFJS.cMapPacked = PDFJS.cMapPacked === undefined ? false : PDFJS.cMapPacked; @@ -28068,49 +28072,51 @@ PDFJS.pdfBug = PDFJS.pdfBug === undefined ? false : PDFJS.pdfBug; PDFJS.postMessageTransfers = PDFJS.postMessageTransfers === undefined ? true : PDFJS.postMessageTransfers; PDFJS.disableCreateObjectURL = PDFJS.disableCreateObjectURL === undefined ? false : PDFJS.disableCreateObjectURL; PDFJS.disableWebGL = PDFJS.disableWebGL === undefined ? true : PDFJS.disableWebGL; -PDFJS.externalLinkTarget = PDFJS.externalLinkTarget === undefined ? LinkTarget.NONE : PDFJS.externalLinkTarget; -PDFJS.externalLinkRel = PDFJS.externalLinkRel === undefined ? DEFAULT_LINK_REL : PDFJS.externalLinkRel; +PDFJS.externalLinkTarget = PDFJS.externalLinkTarget === undefined ? _dom_utils.LinkTarget.NONE : PDFJS.externalLinkTarget; +PDFJS.externalLinkRel = PDFJS.externalLinkRel === undefined ? _dom_utils.DEFAULT_LINK_REL : PDFJS.externalLinkRel; PDFJS.isEvalSupported = PDFJS.isEvalSupported === undefined ? true : PDFJS.isEvalSupported; PDFJS.pdfjsNext = PDFJS.pdfjsNext === undefined ? false : PDFJS.pdfjsNext; -var savedOpenExternalLinksInNewWindow = PDFJS.openExternalLinksInNewWindow; -delete PDFJS.openExternalLinksInNewWindow; -Object.defineProperty(PDFJS, 'openExternalLinksInNewWindow', { - get: function get() { - return PDFJS.externalLinkTarget === LinkTarget.BLANK; - }, - set: function set(value) { - if (value) { - deprecated('PDFJS.openExternalLinksInNewWindow, please use ' + '"PDFJS.externalLinkTarget = PDFJS.LinkTarget.BLANK" instead.'); - } - if (PDFJS.externalLinkTarget !== LinkTarget.NONE) { - warn('PDFJS.externalLinkTarget is already initialized'); - return; - } - PDFJS.externalLinkTarget = value ? LinkTarget.BLANK : LinkTarget.NONE; - }, - enumerable: true, - configurable: true -}); -if (savedOpenExternalLinksInNewWindow) { - PDFJS.openExternalLinksInNewWindow = savedOpenExternalLinksInNewWindow; +{ + var savedOpenExternalLinksInNewWindow = PDFJS.openExternalLinksInNewWindow; + delete PDFJS.openExternalLinksInNewWindow; + Object.defineProperty(PDFJS, 'openExternalLinksInNewWindow', { + get: function get() { + return PDFJS.externalLinkTarget === _dom_utils.LinkTarget.BLANK; + }, + set: function set(value) { + if (value) { + (0, _util.deprecated)('PDFJS.openExternalLinksInNewWindow, please use ' + '"PDFJS.externalLinkTarget = PDFJS.LinkTarget.BLANK" instead.'); + } + if (PDFJS.externalLinkTarget !== _dom_utils.LinkTarget.NONE) { + (0, _util.warn)('PDFJS.externalLinkTarget is already initialized'); + return; + } + PDFJS.externalLinkTarget = value ? _dom_utils.LinkTarget.BLANK : _dom_utils.LinkTarget.NONE; + }, + enumerable: true, + configurable: true + }); + if (savedOpenExternalLinksInNewWindow) { + PDFJS.openExternalLinksInNewWindow = savedOpenExternalLinksInNewWindow; + } } -PDFJS.getDocument = displayAPI.getDocument; -PDFJS.PDFDataRangeTransport = displayAPI.PDFDataRangeTransport; -PDFJS.PDFWorker = displayAPI.PDFWorker; +PDFJS.getDocument = _api.getDocument; +PDFJS.PDFDataRangeTransport = _api.PDFDataRangeTransport; +PDFJS.PDFWorker = _api.PDFWorker; PDFJS.hasCanvasTypedArrays = true; -PDFJS.CustomStyle = displayDOMUtils.CustomStyle; -PDFJS.LinkTarget = LinkTarget; -PDFJS.addLinkAttributes = displayDOMUtils.addLinkAttributes; -PDFJS.getFilenameFromUrl = displayDOMUtils.getFilenameFromUrl; -PDFJS.isExternalLinkTargetSet = displayDOMUtils.isExternalLinkTargetSet; -PDFJS.AnnotationLayer = displayAnnotationLayer.AnnotationLayer; -PDFJS.renderTextLayer = displayTextLayer.renderTextLayer; -PDFJS.Metadata = displayMetadata.Metadata; -PDFJS.SVGGraphics = displaySVG.SVGGraphics; -PDFJS.UnsupportedManager = displayAPI._UnsupportedManager; -exports.globalScope = globalScope; +PDFJS.CustomStyle = _dom_utils.CustomStyle; +PDFJS.LinkTarget = _dom_utils.LinkTarget; +PDFJS.addLinkAttributes = _dom_utils.addLinkAttributes; +PDFJS.getFilenameFromUrl = _dom_utils.getFilenameFromUrl; +PDFJS.isExternalLinkTargetSet = _dom_utils.isExternalLinkTargetSet; +PDFJS.AnnotationLayer = _annotation_layer.AnnotationLayer; +PDFJS.renderTextLayer = _text_layer.renderTextLayer; +PDFJS.Metadata = _metadata.Metadata; +PDFJS.SVGGraphics = _svg.SVGGraphics; +PDFJS.UnsupportedManager = _api._UnsupportedManager; +exports.globalScope = _util.globalScope; exports.isWorker = isWorker; -exports.PDFJS = globalScope.PDFJS; +exports.PDFJS = PDFJS; /***/ }), /* 27 */ @@ -41147,27 +41153,17 @@ exports.Type1Parser = Type1Parser; "use strict"; -var sharedUtil = __w_pdfjs_require__(0); -var displayDOMUtils = __w_pdfjs_require__(3); -var displayPatternHelper = __w_pdfjs_require__(46); -var displayWebGL = __w_pdfjs_require__(25); -var FONT_IDENTITY_MATRIX = sharedUtil.FONT_IDENTITY_MATRIX; -var IDENTITY_MATRIX = sharedUtil.IDENTITY_MATRIX; -var ImageKind = sharedUtil.ImageKind; -var OPS = sharedUtil.OPS; -var TextRenderingMode = sharedUtil.TextRenderingMode; -var Util = sharedUtil.Util; -var assert = sharedUtil.assert; -var info = sharedUtil.info; -var isNum = sharedUtil.isNum; -var isArray = sharedUtil.isArray; -var isLittleEndian = sharedUtil.isLittleEndian; -var error = sharedUtil.error; -var shadow = sharedUtil.shadow; -var warn = sharedUtil.warn; -var TilingPattern = displayPatternHelper.TilingPattern; -var getShadingPatternFromIR = displayPatternHelper.getShadingPatternFromIR; -var WebGLUtils = displayWebGL.WebGLUtils; +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.CanvasGraphics = undefined; + +var _util = __w_pdfjs_require__(0); + +var _pattern_helper = __w_pdfjs_require__(46); + +var _webgl = __w_pdfjs_require__(25); + var MIN_FONT_SIZE = 16; var MAX_FONT_SIZE = 100; var MAX_GROUP_SIZE = 4096; @@ -41177,7 +41173,7 @@ var MAX_SIZE_TO_COMPILE = 1000; var FULL_CHUNK_HEIGHT = 16; var IsLittleEndianCached = { get value() { - return shadow(IsLittleEndianCached, 'value', isLittleEndian()); + return (0, _util.shadow)(IsLittleEndianCached, 'value', (0, _util.isLittleEndian)()); } }; function addContextCurrentTransform(ctx) { @@ -41428,9 +41424,9 @@ var CanvasExtraState = function CanvasExtraStateClosure() { this.alphaIsShape = false; this.fontSize = 0; this.fontSizeScale = 1; - this.textMatrix = IDENTITY_MATRIX; + this.textMatrix = _util.IDENTITY_MATRIX; this.textMatrixScale = 1; - this.fontMatrix = FONT_IDENTITY_MATRIX; + this.fontMatrix = _util.FONT_IDENTITY_MATRIX; this.leading = 0; this.x = 0; this.y = 0; @@ -41439,7 +41435,7 @@ var CanvasExtraState = function CanvasExtraStateClosure() { this.charSpacing = 0; this.wordSpacing = 0; this.textHScale = 1; - this.textRenderingMode = TextRenderingMode.FILL; + this.textRenderingMode = _util.TextRenderingMode.FILL; this.textRise = 0; this.fillColor = '#000000'; this.strokeColor = '#000000'; @@ -41507,7 +41503,7 @@ var CanvasGraphics = function CanvasGraphicsClosure() { var src = imgData.data; var dest = chunkImgData.data; var i, j, thisChunkHeight, elemsInThisChunk; - if (imgData.kind === ImageKind.GRAYSCALE_1BPP) { + if (imgData.kind === _util.ImageKind.GRAYSCALE_1BPP) { var srcLength = src.byteLength; var dest32 = new Uint32Array(dest.buffer, 0, dest.byteLength >> 2); var dest32DataLength = dest32.length; @@ -41549,7 +41545,7 @@ var CanvasGraphics = function CanvasGraphicsClosure() { } ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT); } - } else if (imgData.kind === ImageKind.RGBA_32BPP) { + } else if (imgData.kind === _util.ImageKind.RGBA_32BPP) { j = 0; elemsInThisChunk = width * FULL_CHUNK_HEIGHT * 4; for (i = 0; i < fullChunks; i++) { @@ -41563,7 +41559,7 @@ var CanvasGraphics = function CanvasGraphicsClosure() { dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk)); ctx.putImageData(chunkImgData, 0, j); } - } else if (imgData.kind === ImageKind.RGB_24BPP) { + } else if (imgData.kind === _util.ImageKind.RGB_24BPP) { thisChunkHeight = FULL_CHUNK_HEIGHT; elemsInThisChunk = width * thisChunkHeight; for (i = 0; i < totalChunks; i++) { @@ -41581,7 +41577,7 @@ var CanvasGraphics = function CanvasGraphicsClosure() { ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT); } } else { - error('bad image kind: ' + imgData.kind); + (0, _util.error)('bad image kind: ' + imgData.kind); } } function putBinaryImageMask(ctx, imgData) { @@ -41685,8 +41681,8 @@ var CanvasGraphics = function CanvasGraphicsClosure() { var maskCtx = smask.context; ctx.setTransform(smask.scaleX, 0, 0, smask.scaleY, smask.offsetX, smask.offsetY); var backdrop = smask.backdrop || null; - if (!smask.transferMap && WebGLUtils.isEnabled) { - var composed = WebGLUtils.composeSMask(layerCtx.canvas, mask, { + if (!smask.transferMap && _webgl.WebGLUtils.isEnabled) { + var composed = _webgl.WebGLUtils.composeSMask(layerCtx.canvas, mask, { subtype: smask.subtype, backdrop: backdrop }); @@ -41747,7 +41743,7 @@ var CanvasGraphics = function CanvasGraphicsClosure() { return i; } fnId = fnArray[i]; - if (fnId !== OPS.dependency) { + if (fnId !== _util.OPS.dependency) { this[fnId].apply(this, argsArray[i]); } else { var deps = argsArray[i]; @@ -41788,7 +41784,7 @@ var CanvasGraphics = function CanvasGraphicsClosure() { this.transparentCanvas = null; } this.cachedCanvases.clear(); - WebGLUtils.clear(); + _webgl.WebGLUtils.clear(); if (this.imageLayer) { this.imageLayer.endLayout(); } @@ -41901,7 +41897,7 @@ var CanvasGraphics = function CanvasGraphicsClosure() { this.ctx.save(); copyCtxState(groupCtx, this.ctx); this.current.resumeSMaskCtx = groupCtx; - var deltaTransform = Util.transform(this.current.activeSMask.startTransformInverse, groupCtx.mozCurrentTransform); + var deltaTransform = _util.Util.transform(this.current.activeSMask.startTransformInverse, groupCtx.mozCurrentTransform); this.ctx.transform.apply(this.ctx, deltaTransform); groupCtx.save(); groupCtx.setTransform(1, 0, 0, 1, 0, 0); @@ -41922,7 +41918,7 @@ var CanvasGraphics = function CanvasGraphicsClosure() { composeSMask(this.ctx, this.current.activeSMask, groupCtx); this.ctx.restore(); copyCtxState(groupCtx, this.ctx); - var deltaTransform = Util.transform(this.current.activeSMask.startTransformInverse, groupCtx.mozCurrentTransform); + var deltaTransform = _util.Util.transform(this.current.activeSMask.startTransformInverse, groupCtx.mozCurrentTransform); this.ctx.transform.apply(this.ctx, deltaTransform); }, save: function CanvasGraphics_save() { @@ -41957,7 +41953,7 @@ var CanvasGraphics = function CanvasGraphicsClosure() { y = current.y; for (var i = 0, j = 0, ii = ops.length; i < ii; i++) { switch (ops[i] | 0) { - case OPS.rectangle: + case _util.OPS.rectangle: x = args[j++]; y = args[j++]; var width = args[j++]; @@ -41977,35 +41973,35 @@ var CanvasGraphics = function CanvasGraphicsClosure() { this.ctx.lineTo(x, y); this.ctx.closePath(); break; - case OPS.moveTo: + case _util.OPS.moveTo: x = args[j++]; y = args[j++]; ctx.moveTo(x, y); break; - case OPS.lineTo: + case _util.OPS.lineTo: x = args[j++]; y = args[j++]; ctx.lineTo(x, y); break; - case OPS.curveTo: + case _util.OPS.curveTo: x = args[j + 4]; y = args[j + 5]; ctx.bezierCurveTo(args[j], args[j + 1], args[j + 2], args[j + 3], x, y); j += 6; break; - case OPS.curveTo2: + case _util.OPS.curveTo2: ctx.bezierCurveTo(x, y, args[j], args[j + 1], args[j + 2], args[j + 3]); x = args[j + 2]; y = args[j + 3]; j += 4; break; - case OPS.curveTo3: + case _util.OPS.curveTo3: x = args[j + 2]; y = args[j + 3]; ctx.bezierCurveTo(args[j], args[j + 1], x, y, x, y); j += 4; break; - case OPS.closePath: + case _util.OPS.closePath: ctx.closePath(); break; } @@ -42097,7 +42093,7 @@ var CanvasGraphics = function CanvasGraphicsClosure() { this.pendingClip = EO_CLIP; }, beginText: function CanvasGraphics_beginText() { - this.current.textMatrix = IDENTITY_MATRIX; + this.current.textMatrix = _util.IDENTITY_MATRIX; this.current.textMatrixScale = 1; this.current.x = this.current.lineX = 0; this.current.y = this.current.lineY = 0; @@ -42138,11 +42134,11 @@ var CanvasGraphics = function CanvasGraphicsClosure() { var fontObj = this.commonObjs.get(fontRefName); var current = this.current; if (!fontObj) { - error('Can\'t find font for ' + fontRefName); + (0, _util.error)('Can\'t find font for ' + fontRefName); } - current.fontMatrix = fontObj.fontMatrix ? fontObj.fontMatrix : FONT_IDENTITY_MATRIX; + current.fontMatrix = fontObj.fontMatrix ? fontObj.fontMatrix : _util.FONT_IDENTITY_MATRIX; if (current.fontMatrix[0] === 0 || current.fontMatrix[3] === 0) { - warn('Invalid font matrix for font ' + fontRefName); + (0, _util.warn)('Invalid font matrix for font ' + fontRefName); } if (size < 0) { size = -size; @@ -42193,8 +42189,8 @@ var CanvasGraphics = function CanvasGraphicsClosure() { var font = current.font; var textRenderingMode = current.textRenderingMode; var fontSize = current.fontSize / current.fontSizeScale; - var fillStrokeMode = textRenderingMode & TextRenderingMode.FILL_STROKE_MASK; - var isAddToPathSet = !!(textRenderingMode & TextRenderingMode.ADD_TO_PATH_FLAG); + var fillStrokeMode = textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK; + var isAddToPathSet = !!(textRenderingMode & _util.TextRenderingMode.ADD_TO_PATH_FLAG); var addToPath; if (font.disableFontFace || isAddToPathSet) { addToPath = font.getPathGenerator(this.commonObjs, character); @@ -42204,18 +42200,18 @@ var CanvasGraphics = function CanvasGraphicsClosure() { ctx.translate(x, y); ctx.beginPath(); addToPath(ctx, fontSize); - if (fillStrokeMode === TextRenderingMode.FILL || fillStrokeMode === TextRenderingMode.FILL_STROKE) { + if (fillStrokeMode === _util.TextRenderingMode.FILL || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) { ctx.fill(); } - if (fillStrokeMode === TextRenderingMode.STROKE || fillStrokeMode === TextRenderingMode.FILL_STROKE) { + if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) { ctx.stroke(); } ctx.restore(); } else { - if (fillStrokeMode === TextRenderingMode.FILL || fillStrokeMode === TextRenderingMode.FILL_STROKE) { + if (fillStrokeMode === _util.TextRenderingMode.FILL || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) { ctx.fillText(character, x, y); } - if (fillStrokeMode === TextRenderingMode.STROKE || fillStrokeMode === TextRenderingMode.FILL_STROKE) { + if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) { ctx.strokeText(character, x, y); } } @@ -42242,7 +42238,7 @@ var CanvasGraphics = function CanvasGraphicsClosure() { break; } } - return shadow(this, 'isFontSubpixelAAEnabled', enabled); + return (0, _util.shadow)(this, 'isFontSubpixelAAEnabled', enabled); }, showText: function CanvasGraphics_showText(glyphs) { var current = this.current; @@ -42265,7 +42261,7 @@ var CanvasGraphics = function CanvasGraphicsClosure() { var spacingDir = vertical ? 1 : -1; var defaultVMetrics = font.defaultVMetrics; var widthAdvanceScale = fontSize * current.fontMatrix[0]; - var simpleFillText = current.textRenderingMode === TextRenderingMode.FILL && !font.disableFontFace; + var simpleFillText = current.textRenderingMode === _util.TextRenderingMode.FILL && !font.disableFontFace; ctx.save(); ctx.transform.apply(ctx, current.textMatrix); ctx.translate(current.x, current.y + current.textRise); @@ -42280,8 +42276,8 @@ var CanvasGraphics = function CanvasGraphicsClosure() { var lineWidth = current.lineWidth; var scale = current.textMatrixScale; if (scale === 0 || lineWidth === 0) { - var fillStrokeMode = current.textRenderingMode & TextRenderingMode.FILL_STROKE_MASK; - if (fillStrokeMode === TextRenderingMode.STROKE || fillStrokeMode === TextRenderingMode.FILL_STROKE) { + var fillStrokeMode = current.textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK; + if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) { this.cachedGetSinglePixelWidth = null; lineWidth = this.getSinglePixelWidth() * MIN_WIDTH_FACTOR; } @@ -42297,7 +42293,7 @@ var CanvasGraphics = function CanvasGraphicsClosure() { i; for (i = 0; i < glyphsLength; ++i) { var glyph = glyphs[i]; - if (isNum(glyph)) { + if ((0, _util.isNum)(glyph)) { x += spacingDir * glyph * fontSize / 1000; continue; } @@ -42367,9 +42363,9 @@ var CanvasGraphics = function CanvasGraphicsClosure() { var charSpacing = current.charSpacing; var wordSpacing = current.wordSpacing; var textHScale = current.textHScale * fontDirection; - var fontMatrix = current.fontMatrix || FONT_IDENTITY_MATRIX; + var fontMatrix = current.fontMatrix || _util.FONT_IDENTITY_MATRIX; var glyphsLength = glyphs.length; - var isTextInvisible = current.textRenderingMode === TextRenderingMode.INVISIBLE; + var isTextInvisible = current.textRenderingMode === _util.TextRenderingMode.INVISIBLE; var i, glyph, width, spacingLength; if (isTextInvisible || fontSize === 0) { return; @@ -42381,7 +42377,7 @@ var CanvasGraphics = function CanvasGraphicsClosure() { ctx.scale(textHScale, fontDirection); for (i = 0; i < glyphsLength; ++i) { glyph = glyphs[i]; - if (isNum(glyph)) { + if ((0, _util.isNum)(glyph)) { spacingLength = spacingDir * glyph * fontSize / 1000; this.ctx.translate(spacingLength, 0); current.x += spacingLength * textHScale; @@ -42390,7 +42386,7 @@ var CanvasGraphics = function CanvasGraphicsClosure() { var spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing; var operatorList = font.charProcOperatorList[glyph.operatorListId]; if (!operatorList) { - warn('Type3 character \"' + glyph.operatorListId + '\" is not available'); + (0, _util.warn)('Type3 character \"' + glyph.operatorListId + '\" is not available'); continue; } this.processingType3 = glyph; @@ -42399,7 +42395,7 @@ var CanvasGraphics = function CanvasGraphicsClosure() { ctx.transform.apply(ctx, fontMatrix); this.executeOperatorList(operatorList); this.restore(); - var transformed = Util.applyTransform([glyph.width, 0], fontMatrix); + var transformed = _util.Util.applyTransform([glyph.width, 0], fontMatrix); width = transformed[0] * fontSize + spacing; ctx.translate(width, 0); current.x += width * textHScale; @@ -42424,9 +42420,9 @@ var CanvasGraphics = function CanvasGraphicsClosure() { return new CanvasGraphics(ctx, self.commonObjs, self.objs, self.canvasFactory); } }; - pattern = new TilingPattern(IR, color, this.ctx, canvasGraphicsFactory, baseTransform); + pattern = new _pattern_helper.TilingPattern(IR, color, this.ctx, canvasGraphicsFactory, baseTransform); } else { - pattern = getShadingPatternFromIR(IR); + pattern = (0, _pattern_helper.getShadingPatternFromIR)(IR); } return pattern; }, @@ -42438,12 +42434,12 @@ var CanvasGraphics = function CanvasGraphicsClosure() { this.current.patternFill = true; }, setStrokeRGBColor: function CanvasGraphics_setStrokeRGBColor(r, g, b) { - var color = Util.makeCssRgb(r, g, b); + var color = _util.Util.makeCssRgb(r, g, b); this.ctx.strokeStyle = color; this.current.strokeColor = color; }, setFillRGBColor: function CanvasGraphics_setFillRGBColor(r, g, b) { - var color = Util.makeCssRgb(r, g, b); + var color = _util.Util.makeCssRgb(r, g, b); this.ctx.fillStyle = color; this.current.fillColor = color; this.current.patternFill = false; @@ -42451,17 +42447,17 @@ var CanvasGraphics = function CanvasGraphicsClosure() { shadingFill: function CanvasGraphics_shadingFill(patternIR) { var ctx = this.ctx; this.save(); - var pattern = getShadingPatternFromIR(patternIR); + var pattern = (0, _pattern_helper.getShadingPatternFromIR)(patternIR); ctx.fillStyle = pattern.getPattern(ctx, this, true); var inv = ctx.mozCurrentTransformInverse; if (inv) { var canvas = ctx.canvas; var width = canvas.width; var height = canvas.height; - var bl = Util.applyTransform([0, 0], inv); - var br = Util.applyTransform([0, height], inv); - var ul = Util.applyTransform([width, 0], inv); - var ur = Util.applyTransform([width, height], inv); + var bl = _util.Util.applyTransform([0, 0], inv); + var br = _util.Util.applyTransform([0, height], inv); + var ul = _util.Util.applyTransform([width, 0], inv); + var ur = _util.Util.applyTransform([width, height], inv); var x0 = Math.min(bl[0], br[0], ul[0], ur[0]); var y0 = Math.min(bl[1], br[1], ul[1], ur[1]); var x1 = Math.max(bl[0], br[0], ul[0], ur[0]); @@ -42473,19 +42469,19 @@ var CanvasGraphics = function CanvasGraphicsClosure() { this.restore(); }, beginInlineImage: function CanvasGraphics_beginInlineImage() { - error('Should not call beginInlineImage'); + (0, _util.error)('Should not call beginInlineImage'); }, beginImageData: function CanvasGraphics_beginImageData() { - error('Should not call beginImageData'); + (0, _util.error)('Should not call beginImageData'); }, paintFormXObjectBegin: function CanvasGraphics_paintFormXObjectBegin(matrix, bbox) { this.save(); this.baseTransformStack.push(this.baseTransform); - if (isArray(matrix) && matrix.length === 6) { + if ((0, _util.isArray)(matrix) && matrix.length === 6) { this.transform.apply(this, matrix); } this.baseTransform = this.ctx.mozCurrentTransform; - if (isArray(bbox) && bbox.length === 4) { + if ((0, _util.isArray)(bbox) && bbox.length === 4) { var width = bbox[2] - bbox[0]; var height = bbox[3] - bbox[1]; this.ctx.rect(bbox[0], bbox[1], width, height); @@ -42501,19 +42497,19 @@ var CanvasGraphics = function CanvasGraphicsClosure() { this.save(); var currentCtx = this.ctx; if (!group.isolated) { - info('TODO: Support non-isolated groups.'); + (0, _util.info)('TODO: Support non-isolated groups.'); } if (group.knockout) { - warn('Knockout groups not supported.'); + (0, _util.warn)('Knockout groups not supported.'); } var currentTransform = currentCtx.mozCurrentTransform; if (group.matrix) { currentCtx.transform.apply(currentCtx, group.matrix); } - assert(group.bbox, 'Bounding box is required.'); - var bounds = Util.getAxialAlignedBoundingBox(group.bbox, currentCtx.mozCurrentTransform); + (0, _util.assert)(group.bbox, 'Bounding box is required.'); + var bounds = _util.Util.getAxialAlignedBoundingBox(group.bbox, currentCtx.mozCurrentTransform); var canvasBounds = [0, 0, currentCtx.canvas.width, currentCtx.canvas.height]; - bounds = Util.intersect(bounds, canvasBounds) || [0, 0, 0, 0]; + bounds = _util.Util.intersect(bounds, canvasBounds) || [0, 0, 0, 0]; var offsetX = Math.floor(bounds[0]); var offsetY = Math.floor(bounds[1]); var drawnWidth = Math.max(Math.ceil(bounds[2]) - offsetX, 1); @@ -42590,7 +42586,7 @@ var CanvasGraphics = function CanvasGraphicsClosure() { }, beginAnnotation: function CanvasGraphics_beginAnnotation(rect, transform, matrix) { this.save(); - if (isArray(rect) && rect.length === 4) { + if ((0, _util.isArray)(rect) && rect.length === 4) { var width = rect[2] - rect[0]; var height = rect[3] - rect[1]; this.ctx.rect(rect[0], rect[1], width, height); @@ -42606,7 +42602,7 @@ var CanvasGraphics = function CanvasGraphicsClosure() { paintJpegXObject: function CanvasGraphics_paintJpegXObject(objId, w, h) { var domImage = this.objs.get(objId); if (!domImage) { - warn('Dependent image isn\'t ready yet'); + (0, _util.warn)('Dependent image isn\'t ready yet'); return; } this.save(); @@ -42706,7 +42702,7 @@ var CanvasGraphics = function CanvasGraphicsClosure() { paintImageXObject: function CanvasGraphics_paintImageXObject(objId) { var imgData = this.objs.get(objId); if (!imgData) { - warn('Dependent image isn\'t ready yet'); + (0, _util.warn)('Dependent image isn\'t ready yet'); return; } this.paintInlineImageXObject(imgData); @@ -42714,7 +42710,7 @@ var CanvasGraphics = function CanvasGraphicsClosure() { paintImageXObjectRepeat: function CanvasGraphics_paintImageXObjectRepeat(objId, scaleX, scaleY, positions) { var imgData = this.objs.get(objId); if (!imgData) { - warn('Dependent image isn\'t ready yet'); + (0, _util.warn)('Dependent image isn\'t ready yet'); return; } var width = imgData.width; @@ -42819,7 +42815,7 @@ var CanvasGraphics = function CanvasGraphicsClosure() { this.ctx.fillRect(0, 0, 1, 1); }, paintXObject: function CanvasGraphics_paintXObject() { - warn('Unsupported \'paintXObject\' command.'); + (0, _util.warn)('Unsupported \'paintXObject\' command.'); }, markPoint: function CanvasGraphics_markPoint(tag) {}, markPointProps: function CanvasGraphics_markPointProps(tag, properties) {}, @@ -42854,8 +42850,8 @@ var CanvasGraphics = function CanvasGraphicsClosure() { return [transform[0] * x + transform[2] * y + transform[4], transform[1] * x + transform[3] * y + transform[5]]; } }; - for (var op in OPS) { - CanvasGraphics.prototype[OPS[op]] = CanvasGraphics.prototype[op]; + for (var op in _util.OPS) { + CanvasGraphics.prototype[_util.OPS[op]] = CanvasGraphics.prototype[op]; } return CanvasGraphics; }(); @@ -42868,12 +42864,13 @@ exports.CanvasGraphics = CanvasGraphics; "use strict"; -var sharedUtil = __w_pdfjs_require__(0); -var assert = sharedUtil.assert; -var bytesToString = sharedUtil.bytesToString; -var string32 = sharedUtil.string32; -var shadow = sharedUtil.shadow; -var warn = sharedUtil.warn; +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.FontLoader = exports.FontFaceObject = undefined; + +var _util = __w_pdfjs_require__(0); + function FontLoader(docId) { this.docId = docId; this.styleElement = null; @@ -42906,170 +42903,176 @@ FontLoader.prototype = { this.nativeFontFaces.length = 0; } }; -var getLoadTestFont = function getLoadTestFont() { - return atob('T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQAFQ' + 'AABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAAALwA' + 'AAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgAAAAGbm' + 'FtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1AAsD6AAA' + 'AADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD6AAAAAAD6A' + 'ABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACMAooCvAAAAeAA' + 'MQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4DIP84AFoDIQAAAA' + 'AAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAAAAEAAQAAAAEAAAAA' + 'AAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUAAQAAAAEAAAAAAAYAAQ' + 'AAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgABAAMAAQQJAAMAAgABAAMA' + 'AQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABYAAAAAAAAAwAAAAMAAAAcAA' + 'EAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAAAC7////TAAEAAAAAAAABBgAA' + 'AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAA' + 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' + 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' + 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' + 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAA' + 'AAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAAAAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgc' + 'A/gXBIwMAYuL+nz5tQXkD5j3CBLnEQACAQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWF' + 'hYWFhYWFhYAAABAQAADwACAQEEE/t3Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQA' + 'AAAAAAABAAAAAMmJbzEAAAAAzgTjFQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAg' + 'ABAAAAAAAAAAAD6AAAAAAAAA=='); -}; -Object.defineProperty(FontLoader.prototype, 'loadTestFont', { - get: function get() { - return shadow(this, 'loadTestFont', getLoadTestFont()); - }, - configurable: true -}); -FontLoader.prototype.addNativeFontFace = function fontLoader_addNativeFontFace(nativeFontFace) { - this.nativeFontFaces.push(nativeFontFace); - document.fonts.add(nativeFontFace); -}; -FontLoader.prototype.bind = function fontLoaderBind(fonts, callback) { - var rules = []; - var fontsToLoad = []; - var fontLoadPromises = []; - var getNativeFontPromise = function getNativeFontPromise(nativeFontFace) { - return nativeFontFace.loaded.catch(function (e) { - warn('Failed to load font "' + nativeFontFace.family + '": ' + e); - }); +{ + var getLoadTestFont = function getLoadTestFont() { + return atob('T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQAFQ' + 'AABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAAALwA' + 'AAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgAAAAGbm' + 'FtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1AAsD6AAA' + 'AADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD6AAAAAAD6A' + 'ABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACMAooCvAAAAeAA' + 'MQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4DIP84AFoDIQAAAA' + 'AAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAAAAEAAQAAAAEAAAAA' + 'AAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUAAQAAAAEAAAAAAAYAAQ' + 'AAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgABAAMAAQQJAAMAAgABAAMA' + 'AQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABYAAAAAAAAAwAAAAMAAAAcAA' + 'EAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAAAC7////TAAEAAAAAAAABBgAA' + 'AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAA' + 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' + 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' + 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' + 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAA' + 'AAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAAAAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgc' + 'A/gXBIwMAYuL+nz5tQXkD5j3CBLnEQACAQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWF' + 'hYWFhYWFhYAAABAQAADwACAQEEE/t3Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQA' + 'AAAAAAABAAAAAMmJbzEAAAAAzgTjFQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAg' + 'ABAAAAAAAAAAAD6AAAAAAAAA=='); }; - var isFontLoadingAPISupported = FontLoader.isFontLoadingAPISupported && !FontLoader.isSyncFontLoadingSupported; - for (var i = 0, ii = fonts.length; i < ii; i++) { - var font = fonts[i]; - if (font.attached || font.loading === false) { - continue; + Object.defineProperty(FontLoader.prototype, 'loadTestFont', { + get: function get() { + return (0, _util.shadow)(this, 'loadTestFont', getLoadTestFont()); + }, + configurable: true + }); + FontLoader.prototype.addNativeFontFace = function fontLoader_addNativeFontFace(nativeFontFace) { + this.nativeFontFaces.push(nativeFontFace); + document.fonts.add(nativeFontFace); + }; + FontLoader.prototype.bind = function fontLoaderBind(fonts, callback) { + var rules = []; + var fontsToLoad = []; + var fontLoadPromises = []; + var getNativeFontPromise = function getNativeFontPromise(nativeFontFace) { + return nativeFontFace.loaded.catch(function (e) { + (0, _util.warn)('Failed to load font "' + nativeFontFace.family + '": ' + e); + }); + }; + var isFontLoadingAPISupported = FontLoader.isFontLoadingAPISupported && !FontLoader.isSyncFontLoadingSupported; + for (var i = 0, ii = fonts.length; i < ii; i++) { + var font = fonts[i]; + if (font.attached || font.loading === false) { + continue; + } + font.attached = true; + if (isFontLoadingAPISupported) { + var nativeFontFace = font.createNativeFontFace(); + if (nativeFontFace) { + this.addNativeFontFace(nativeFontFace); + fontLoadPromises.push(getNativeFontPromise(nativeFontFace)); + } + } else { + var rule = font.createFontFaceRule(); + if (rule) { + this.insertRule(rule); + rules.push(rule); + fontsToLoad.push(font); + } + } } - font.attached = true; + var request = this.queueLoadingCallback(callback); if (isFontLoadingAPISupported) { - var nativeFontFace = font.createNativeFontFace(); - if (nativeFontFace) { - this.addNativeFontFace(nativeFontFace); - fontLoadPromises.push(getNativeFontPromise(nativeFontFace)); - } + Promise.all(fontLoadPromises).then(function () { + request.complete(); + }); + } else if (rules.length > 0 && !FontLoader.isSyncFontLoadingSupported) { + this.prepareFontLoadEvent(rules, fontsToLoad, request); } else { - var rule = font.createFontFaceRule(); - if (rule) { - this.insertRule(rule); - rules.push(rule); - fontsToLoad.push(font); - } + request.complete(); } - } - var request = this.queueLoadingCallback(callback); - if (isFontLoadingAPISupported) { - Promise.all(fontLoadPromises).then(function () { + }; + FontLoader.prototype.queueLoadingCallback = function FontLoader_queueLoadingCallback(callback) { + function LoadLoader_completeRequest() { + (0, _util.assert)(!request.end, 'completeRequest() cannot be called twice'); + request.end = Date.now(); + while (context.requests.length > 0 && context.requests[0].end) { + var otherRequest = context.requests.shift(); + setTimeout(otherRequest.callback, 0); + } + } + var context = this.loadingContext; + var requestId = 'pdfjs-font-loading-' + context.nextRequestId++; + var request = { + id: requestId, + complete: LoadLoader_completeRequest, + callback: callback, + started: Date.now() + }; + context.requests.push(request); + return request; + }; + FontLoader.prototype.prepareFontLoadEvent = function fontLoaderPrepareFontLoadEvent(rules, fonts, request) { + function int32(data, offset) { + return data.charCodeAt(offset) << 24 | data.charCodeAt(offset + 1) << 16 | data.charCodeAt(offset + 2) << 8 | data.charCodeAt(offset + 3) & 0xff; + } + function spliceString(s, offset, remove, insert) { + var chunk1 = s.substr(0, offset); + var chunk2 = s.substr(offset + remove); + return chunk1 + insert + chunk2; + } + var i, ii; + var canvas = document.createElement('canvas'); + canvas.width = 1; + canvas.height = 1; + var ctx = canvas.getContext('2d'); + var called = 0; + function isFontReady(name, callback) { + called++; + if (called > 30) { + (0, _util.warn)('Load test font never loaded.'); + callback(); + return; + } + ctx.font = '30px ' + name; + ctx.fillText('.', 0, 20); + var imageData = ctx.getImageData(0, 0, 1, 1); + if (imageData.data[3] > 0) { + callback(); + return; + } + setTimeout(isFontReady.bind(null, name, callback)); + } + var loadTestFontId = 'lt' + Date.now() + this.loadTestFontId++; + var data = this.loadTestFont; + var COMMENT_OFFSET = 976; + data = spliceString(data, COMMENT_OFFSET, loadTestFontId.length, loadTestFontId); + var CFF_CHECKSUM_OFFSET = 16; + var XXXX_VALUE = 0x58585858; + var checksum = int32(data, CFF_CHECKSUM_OFFSET); + for (i = 0, ii = loadTestFontId.length - 3; i < ii; i += 4) { + checksum = checksum - XXXX_VALUE + int32(loadTestFontId, i) | 0; + } + if (i < loadTestFontId.length) { + checksum = checksum - XXXX_VALUE + int32(loadTestFontId + 'XXX', i) | 0; + } + data = spliceString(data, CFF_CHECKSUM_OFFSET, 4, (0, _util.string32)(checksum)); + var url = 'url(data:font/opentype;base64,' + btoa(data) + ');'; + var rule = '@font-face { font-family:"' + loadTestFontId + '";src:' + url + '}'; + this.insertRule(rule); + var names = []; + for (i = 0, ii = fonts.length; i < ii; i++) { + names.push(fonts[i].loadedName); + } + names.push(loadTestFontId); + var div = document.createElement('div'); + div.setAttribute('style', 'visibility: hidden;' + 'width: 10px; height: 10px;' + 'position: absolute; top: 0px; left: 0px;'); + for (i = 0, ii = names.length; i < ii; ++i) { + var span = document.createElement('span'); + span.textContent = 'Hi'; + span.style.fontFamily = names[i]; + div.appendChild(span); + } + document.body.appendChild(div); + isFontReady(loadTestFontId, function () { + document.body.removeChild(div); request.complete(); }); - } else if (rules.length > 0 && !FontLoader.isSyncFontLoadingSupported) { - this.prepareFontLoadEvent(rules, fontsToLoad, request); - } else { - request.complete(); - } -}; -FontLoader.prototype.queueLoadingCallback = function FontLoader_queueLoadingCallback(callback) { - function LoadLoader_completeRequest() { - assert(!request.end, 'completeRequest() cannot be called twice'); - request.end = Date.now(); - while (context.requests.length > 0 && context.requests[0].end) { - var otherRequest = context.requests.shift(); - setTimeout(otherRequest.callback, 0); - } - } - var context = this.loadingContext; - var requestId = 'pdfjs-font-loading-' + context.nextRequestId++; - var request = { - id: requestId, - complete: LoadLoader_completeRequest, - callback: callback, - started: Date.now() }; - context.requests.push(request); - return request; -}; -FontLoader.prototype.prepareFontLoadEvent = function fontLoaderPrepareFontLoadEvent(rules, fonts, request) { - function int32(data, offset) { - return data.charCodeAt(offset) << 24 | data.charCodeAt(offset + 1) << 16 | data.charCodeAt(offset + 2) << 8 | data.charCodeAt(offset + 3) & 0xff; - } - function spliceString(s, offset, remove, insert) { - var chunk1 = s.substr(0, offset); - var chunk2 = s.substr(offset + remove); - return chunk1 + insert + chunk2; - } - var i, ii; - var canvas = document.createElement('canvas'); - canvas.width = 1; - canvas.height = 1; - var ctx = canvas.getContext('2d'); - var called = 0; - function isFontReady(name, callback) { - called++; - if (called > 30) { - warn('Load test font never loaded.'); - callback(); - return; +} +{ + FontLoader.isFontLoadingAPISupported = typeof document !== 'undefined' && !!document.fonts; +} +{ + var isSyncFontLoadingSupported = function isSyncFontLoadingSupported() { + if (typeof navigator === 'undefined') { + return true; } - ctx.font = '30px ' + name; - ctx.fillText('.', 0, 20); - var imageData = ctx.getImageData(0, 0, 1, 1); - if (imageData.data[3] > 0) { - callback(); - return; + var supported = false; + var m = /Mozilla\/5.0.*?rv:(\d+).*? Gecko/.exec(navigator.userAgent); + if (m && m[1] >= 14) { + supported = true; } - setTimeout(isFontReady.bind(null, name, callback)); - } - var loadTestFontId = 'lt' + Date.now() + this.loadTestFontId++; - var data = this.loadTestFont; - var COMMENT_OFFSET = 976; - data = spliceString(data, COMMENT_OFFSET, loadTestFontId.length, loadTestFontId); - var CFF_CHECKSUM_OFFSET = 16; - var XXXX_VALUE = 0x58585858; - var checksum = int32(data, CFF_CHECKSUM_OFFSET); - for (i = 0, ii = loadTestFontId.length - 3; i < ii; i += 4) { - checksum = checksum - XXXX_VALUE + int32(loadTestFontId, i) | 0; - } - if (i < loadTestFontId.length) { - checksum = checksum - XXXX_VALUE + int32(loadTestFontId + 'XXX', i) | 0; - } - data = spliceString(data, CFF_CHECKSUM_OFFSET, 4, string32(checksum)); - var url = 'url(data:font/opentype;base64,' + btoa(data) + ');'; - var rule = '@font-face { font-family:"' + loadTestFontId + '";src:' + url + '}'; - this.insertRule(rule); - var names = []; - for (i = 0, ii = fonts.length; i < ii; i++) { - names.push(fonts[i].loadedName); - } - names.push(loadTestFontId); - var div = document.createElement('div'); - div.setAttribute('style', 'visibility: hidden;' + 'width: 10px; height: 10px;' + 'position: absolute; top: 0px; left: 0px;'); - for (i = 0, ii = names.length; i < ii; ++i) { - var span = document.createElement('span'); - span.textContent = 'Hi'; - span.style.fontFamily = names[i]; - div.appendChild(span); - } - document.body.appendChild(div); - isFontReady(loadTestFontId, function () { - document.body.removeChild(div); - request.complete(); + return supported; + }; + Object.defineProperty(FontLoader, 'isSyncFontLoadingSupported', { + get: function get() { + return (0, _util.shadow)(FontLoader, 'isSyncFontLoadingSupported', isSyncFontLoadingSupported()); + }, + enumerable: true, + configurable: true }); -}; -FontLoader.isFontLoadingAPISupported = typeof document !== 'undefined' && !!document.fonts; -var isSyncFontLoadingSupported = function isSyncFontLoadingSupported() { - if (typeof navigator === 'undefined') { - return true; - } - var supported = false; - var m = /Mozilla\/5.0.*?rv:(\d+).*? Gecko/.exec(navigator.userAgent); - if (m && m[1] >= 14) { - supported = true; - } - return supported; -}; -Object.defineProperty(FontLoader, 'isSyncFontLoadingSupported', { - get: function get() { - return shadow(FontLoader, 'isSyncFontLoadingSupported', isSyncFontLoadingSupported()); - }, - enumerable: true, - configurable: true -}); +} var IsEvalSupportedCached = { get value() { - return shadow(this, 'value', sharedUtil.isEvalSupported()); + return (0, _util.shadow)(this, 'value', (0, _util.isEvalSupported)()); } }; var FontFaceObject = function FontFaceObjectClosure() { @@ -43103,7 +43106,7 @@ var FontFaceObject = function FontFaceObjectClosure() { this.disableFontFace = true; return null; } - var data = bytesToString(new Uint8Array(this.data)); + var data = (0, _util.bytesToString)(new Uint8Array(this.data)); var fontName = this.loadedName; var url = 'url(data:' + this.mimetype + ';base64,' + btoa(data) + ');'; var rule = '@font-face { font-family:"' + fontName + '";src:' + url + '}'; @@ -43156,13 +43159,15 @@ exports.FontLoader = FontLoader; "use strict"; -var sharedUtil = __w_pdfjs_require__(0); -var displayWebGL = __w_pdfjs_require__(25); -var Util = sharedUtil.Util; -var info = sharedUtil.info; -var isArray = sharedUtil.isArray; -var error = sharedUtil.error; -var WebGLUtils = displayWebGL.WebGLUtils; +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.TilingPattern = exports.getShadingPatternFromIR = undefined; + +var _util = __w_pdfjs_require__(0); + +var _webgl = __w_pdfjs_require__(25); + var ShadingIRs = {}; ShadingIRs.RadialAxial = { fromIR: function RadialAxial_fromIR(raw) { @@ -43299,7 +43304,7 @@ var createMeshCanvas = function createMeshCanvasClosure() { } break; default: - error('illigal figure'); + (0, _util.error)('illigal figure'); break; } } @@ -43326,8 +43331,8 @@ var createMeshCanvas = function createMeshCanvasClosure() { var paddedWidth = width + BORDER_SIZE * 2; var paddedHeight = height + BORDER_SIZE * 2; var canvas, tmpCanvas, i, ii; - if (WebGLUtils.isEnabled) { - canvas = WebGLUtils.drawFigures(width, height, backgroundColor, figures, context); + if (_webgl.WebGLUtils.isEnabled) { + canvas = _webgl.WebGLUtils.drawFigures(width, height, backgroundColor, figures, context); tmpCanvas = cachedCanvases.getCanvas('mesh', paddedWidth, paddedHeight, false); tmpCanvas.context.drawImage(canvas, BORDER_SIZE, BORDER_SIZE); canvas = tmpCanvas.canvas; @@ -43373,11 +43378,11 @@ ShadingIRs.Mesh = { getPattern: function Mesh_getPattern(ctx, owner, shadingFill) { var scale; if (shadingFill) { - scale = Util.singularValueDecompose2dScale(ctx.mozCurrentTransform); + scale = _util.Util.singularValueDecompose2dScale(ctx.mozCurrentTransform); } else { - scale = Util.singularValueDecompose2dScale(owner.baseTransform); + scale = _util.Util.singularValueDecompose2dScale(owner.baseTransform); if (matrix) { - var matrixScale = Util.singularValueDecompose2dScale(matrix); + var matrixScale = _util.Util.singularValueDecompose2dScale(matrix); scale = [scale[0] * matrixScale[0], scale[1] * matrixScale[1]]; } } @@ -43408,7 +43413,7 @@ ShadingIRs.Dummy = { function getShadingPatternFromIR(raw) { var shadingIR = ShadingIRs[raw[0]]; if (!shadingIR) { - error('Unknown IR type: ' + raw[0]); + (0, _util.error)('Unknown IR type: ' + raw[0]); } return shadingIR.fromIR(raw); } @@ -43421,7 +43426,7 @@ var TilingPattern = function TilingPatternClosure() { function TilingPattern(IR, color, ctx, canvasGraphicsFactory, baseTransform) { this.operatorList = IR[2]; this.matrix = IR[3] || [1, 0, 0, 1, 0, 0]; - this.bbox = Util.normalizeRect(IR[4]); + this.bbox = _util.Util.normalizeRect(IR[4]); this.xstep = IR[5]; this.ystep = IR[6]; this.paintType = IR[7]; @@ -43442,7 +43447,7 @@ var TilingPattern = function TilingPatternClosure() { var tilingType = this.tilingType; var color = this.color; var canvasGraphicsFactory = this.canvasGraphicsFactory; - info('TilingType: ' + tilingType); + (0, _util.info)('TilingType: ' + tilingType); var x0 = bbox[0], y0 = bbox[1], x1 = bbox[2], @@ -43451,8 +43456,8 @@ var TilingPattern = function TilingPatternClosure() { var botRight = [x0 + xstep, y0 + ystep]; var width = botRight[0] - topLeft[0]; var height = botRight[1] - topLeft[1]; - var matrixScale = Util.singularValueDecompose2dScale(this.matrix); - var curMatrixScale = Util.singularValueDecompose2dScale(this.baseTransform); + var matrixScale = _util.Util.singularValueDecompose2dScale(this.matrix); + var curMatrixScale = _util.Util.singularValueDecompose2dScale(this.baseTransform); var combinedScale = [matrixScale[0] * curMatrixScale[0], matrixScale[1] * curMatrixScale[1]]; width = Math.min(Math.ceil(Math.abs(width * combinedScale[0])), MAX_PATTERN_SIZE); height = Math.min(Math.ceil(Math.abs(height * combinedScale[1])), MAX_PATTERN_SIZE); @@ -43482,7 +43487,7 @@ var TilingPattern = function TilingPatternClosure() { this.ctx.scale(1 / scale[0], 1 / scale[1]); }, clipBbox: function clipBbox(graphics, bbox, x0, y0, x1, y1) { - if (isArray(bbox) && bbox.length === 4) { + if ((0, _util.isArray)(bbox) && bbox.length === 4) { var bboxWidth = x1 - x0; var bboxHeight = y1 - y0; graphics.ctx.rect(x0, y0, bboxWidth, bboxHeight); @@ -43498,12 +43503,12 @@ var TilingPattern = function TilingPatternClosure() { context.strokeStyle = ctx.strokeStyle; break; case PaintType.UNCOLORED: - var cssColor = Util.makeCssRgb(color[0], color[1], color[2]); + var cssColor = _util.Util.makeCssRgb(color[0], color[1], color[2]); context.fillStyle = cssColor; context.strokeStyle = cssColor; break; default: - error('Unsupported paint type: ' + paintType); + (0, _util.error)('Unsupported paint type: ' + paintType); } }, getPattern: function TilingPattern_getPattern(ctx, owner) { @@ -43527,8 +43532,8 @@ exports.TilingPattern = TilingPattern; "use strict"; -var pdfjsVersion = '1.8.213'; -var pdfjsBuild = 'c6e8ca86'; +var pdfjsVersion = '1.8.233'; +var pdfjsBuild = '19321937'; var pdfjsSharedUtil = __w_pdfjs_require__(0); var pdfjsDisplayGlobal = __w_pdfjs_require__(26); var pdfjsDisplayAPI = __w_pdfjs_require__(10); diff --git a/build/pdf.js b/build/pdf.js index 1bb193ee0..5e53a0445 100644 --- a/build/pdf.js +++ b/build/pdf.js @@ -1181,19 +1181,18 @@ exports.warn = warn; "use strict"; -var sharedUtil = __w_pdfjs_require__(0); -var assert = sharedUtil.assert; -var removeNullCharacters = sharedUtil.removeNullCharacters; -var warn = sharedUtil.warn; -var deprecated = sharedUtil.deprecated; -var createValidAbsoluteUrl = sharedUtil.createValidAbsoluteUrl; -var stringToBytes = sharedUtil.stringToBytes; -var CMapCompressionType = sharedUtil.CMapCompressionType; +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.DOMCMapReaderFactory = exports.DOMCanvasFactory = exports.DEFAULT_LINK_REL = exports.getDefaultSetting = exports.LinkTarget = exports.getFilenameFromUrl = exports.isValidUrl = exports.isExternalLinkTargetSet = exports.addLinkAttributes = exports.RenderingCancelledException = exports.CustomStyle = undefined; + +var _util = __w_pdfjs_require__(0); + var DEFAULT_LINK_REL = 'noopener noreferrer nofollow'; function DOMCanvasFactory() {} DOMCanvasFactory.prototype = { create: function DOMCanvasFactory_create(width, height) { - assert(width > 0 && height > 0, 'invalid canvas size'); + (0, _util.assert)(width > 0 && height > 0, 'invalid canvas size'); var canvas = document.createElement('canvas'); var context = canvas.getContext('2d'); canvas.width = width; @@ -1204,13 +1203,13 @@ DOMCanvasFactory.prototype = { }; }, reset: function DOMCanvasFactory_reset(canvasAndContextPair, width, height) { - assert(canvasAndContextPair.canvas, 'canvas is not specified'); - assert(width > 0 && height > 0, 'invalid canvas size'); + (0, _util.assert)(canvasAndContextPair.canvas, 'canvas is not specified'); + (0, _util.assert)(width > 0 && height > 0, 'invalid canvas size'); canvasAndContextPair.canvas.width = width; canvasAndContextPair.canvas.height = height; }, destroy: function DOMCanvasFactory_destroy(canvasAndContextPair) { - assert(canvasAndContextPair.canvas, 'canvas is not specified'); + (0, _util.assert)(canvasAndContextPair.canvas, 'canvas is not specified'); canvasAndContextPair.canvas.width = 0; canvasAndContextPair.canvas.height = 0; canvasAndContextPair.canvas = null; @@ -1244,12 +1243,12 @@ var DOMCMapReaderFactory = function DOMCMapReaderFactoryClosure() { if (this.isCompressed && request.response) { data = new Uint8Array(request.response); } else if (!this.isCompressed && request.responseText) { - data = stringToBytes(request.responseText); + data = (0, _util.stringToBytes)(request.responseText); } if (data) { resolve({ cMapData: data, - compressionType: this.isCompressed ? CMapCompressionType.BINARY : CMapCompressionType.NONE + compressionType: this.isCompressed ? _util.CMapCompressionType.BINARY : _util.CMapCompressionType.NONE }); return; } @@ -1314,7 +1313,7 @@ var LinkTarget = { var LinkTargetStringMap = ['', '_self', '_blank', '_parent', '_top']; function addLinkAttributes(link, params) { var url = params && params.url; - link.href = link.title = url ? removeNullCharacters(url) : ''; + link.href = link.title = url ? (0, _util.removeNullCharacters)(url) : ''; if (url) { var target = params.target; if (typeof target === 'undefined') { @@ -1335,7 +1334,7 @@ function getFilenameFromUrl(url) { return url.substring(url.lastIndexOf('/', end) + 1, end); } function getDefaultSetting(id) { - var globalSettings = sharedUtil.globalScope.PDFJS; + var globalSettings = _util.globalScope.PDFJS; switch (id) { case 'pdfBug': return globalSettings ? globalSettings.pdfBug : false; @@ -1381,7 +1380,7 @@ function getDefaultSetting(id) { case LinkTarget.TOP: return globalSettings.externalLinkTarget; } - warn('PDFJS.externalLinkTarget is invalid: ' + globalSettings.externalLinkTarget); + (0, _util.warn)('PDFJS.externalLinkTarget is invalid: ' + globalSettings.externalLinkTarget); globalSettings.externalLinkTarget = LinkTarget.NONE; return LinkTarget.NONE; case 'externalLinkRel': @@ -1407,17 +1406,17 @@ function isExternalLinkTargetSet() { } } function isValidUrl(url, allowRelative) { - deprecated('isValidUrl(), please use createValidAbsoluteUrl() instead.'); + (0, _util.deprecated)('isValidUrl(), please use createValidAbsoluteUrl() instead.'); var baseUrl = allowRelative ? 'http://example.com' : null; - return createValidAbsoluteUrl(url, baseUrl) !== null; + return (0, _util.createValidAbsoluteUrl)(url, baseUrl) !== null; } exports.CustomStyle = CustomStyle; +exports.RenderingCancelledException = RenderingCancelledException; exports.addLinkAttributes = addLinkAttributes; exports.isExternalLinkTargetSet = isExternalLinkTargetSet; exports.isValidUrl = isValidUrl; exports.getFilenameFromUrl = getFilenameFromUrl; exports.LinkTarget = LinkTarget; -exports.RenderingCancelledException = RenderingCancelledException; exports.getDefaultSetting = getDefaultSetting; exports.DEFAULT_LINK_REL = DEFAULT_LINK_REL; exports.DOMCanvasFactory = DOMCanvasFactory; @@ -1430,28 +1429,25 @@ exports.DOMCMapReaderFactory = DOMCMapReaderFactory; "use strict"; -var sharedUtil = __w_pdfjs_require__(0); -var displayDOMUtils = __w_pdfjs_require__(1); -var AnnotationBorderStyleType = sharedUtil.AnnotationBorderStyleType; -var AnnotationType = sharedUtil.AnnotationType; -var stringToPDFString = sharedUtil.stringToPDFString; -var Util = sharedUtil.Util; -var addLinkAttributes = displayDOMUtils.addLinkAttributes; -var LinkTarget = displayDOMUtils.LinkTarget; -var getFilenameFromUrl = displayDOMUtils.getFilenameFromUrl; -var warn = sharedUtil.warn; -var CustomStyle = displayDOMUtils.CustomStyle; -var getDefaultSetting = displayDOMUtils.getDefaultSetting; +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.AnnotationLayer = undefined; + +var _dom_utils = __w_pdfjs_require__(1); + +var _util = __w_pdfjs_require__(0); + function AnnotationElementFactory() {} AnnotationElementFactory.prototype = { create: function AnnotationElementFactory_create(parameters) { var subtype = parameters.data.annotationType; switch (subtype) { - case AnnotationType.LINK: + case _util.AnnotationType.LINK: return new LinkAnnotationElement(parameters); - case AnnotationType.TEXT: + case _util.AnnotationType.TEXT: return new TextAnnotationElement(parameters); - case AnnotationType.WIDGET: + case _util.AnnotationType.WIDGET: var fieldType = parameters.data.fieldType; switch (fieldType) { case 'Tx': @@ -1462,25 +1458,25 @@ AnnotationElementFactory.prototype = { } else if (parameters.data.checkBox) { return new CheckboxWidgetAnnotationElement(parameters); } - warn('Unimplemented button widget annotation: pushbutton'); + (0, _util.warn)('Unimplemented button widget annotation: pushbutton'); break; case 'Ch': return new ChoiceWidgetAnnotationElement(parameters); } return new WidgetAnnotationElement(parameters); - case AnnotationType.POPUP: + case _util.AnnotationType.POPUP: return new PopupAnnotationElement(parameters); - case AnnotationType.LINE: + case _util.AnnotationType.LINE: return new LineAnnotationElement(parameters); - case AnnotationType.HIGHLIGHT: + case _util.AnnotationType.HIGHLIGHT: return new HighlightAnnotationElement(parameters); - case AnnotationType.UNDERLINE: + case _util.AnnotationType.UNDERLINE: return new UnderlineAnnotationElement(parameters); - case AnnotationType.SQUIGGLY: + case _util.AnnotationType.SQUIGGLY: return new SquigglyAnnotationElement(parameters); - case AnnotationType.STRIKEOUT: + case _util.AnnotationType.STRIKEOUT: return new StrikeOutAnnotationElement(parameters); - case AnnotationType.FILEATTACHMENT: + case _util.AnnotationType.FILEATTACHMENT: return new FileAttachmentAnnotationElement(parameters); default: return new AnnotationElement(parameters); @@ -1511,12 +1507,12 @@ var AnnotationElement = function AnnotationElementClosure() { var width = data.rect[2] - data.rect[0]; var height = data.rect[3] - data.rect[1]; container.setAttribute('data-annotation-id', data.id); - var rect = Util.normalizeRect([data.rect[0], page.view[3] - data.rect[1] + page.view[1], data.rect[2], page.view[3] - data.rect[3] + page.view[1]]); - CustomStyle.setProp('transform', container, 'matrix(' + viewport.transform.join(',') + ')'); - CustomStyle.setProp('transformOrigin', container, -rect[0] + 'px ' + -rect[1] + 'px'); + var rect = _util.Util.normalizeRect([data.rect[0], page.view[3] - data.rect[1] + page.view[1], data.rect[2], page.view[3] - data.rect[3] + page.view[1]]); + _dom_utils.CustomStyle.setProp('transform', container, 'matrix(' + viewport.transform.join(',') + ')'); + _dom_utils.CustomStyle.setProp('transformOrigin', container, -rect[0] + 'px ' + -rect[1] + 'px'); if (!ignoreBorder && data.borderStyle.width > 0) { container.style.borderWidth = data.borderStyle.width + 'px'; - if (data.borderStyle.style !== AnnotationBorderStyleType.UNDERLINE) { + if (data.borderStyle.style !== _util.AnnotationBorderStyleType.UNDERLINE) { width = width - 2 * data.borderStyle.width; height = height - 2 * data.borderStyle.width; } @@ -1524,29 +1520,29 @@ var AnnotationElement = function AnnotationElementClosure() { var verticalRadius = data.borderStyle.verticalCornerRadius; if (horizontalRadius > 0 || verticalRadius > 0) { var radius = horizontalRadius + 'px / ' + verticalRadius + 'px'; - CustomStyle.setProp('borderRadius', container, radius); + _dom_utils.CustomStyle.setProp('borderRadius', container, radius); } switch (data.borderStyle.style) { - case AnnotationBorderStyleType.SOLID: + case _util.AnnotationBorderStyleType.SOLID: container.style.borderStyle = 'solid'; break; - case AnnotationBorderStyleType.DASHED: + case _util.AnnotationBorderStyleType.DASHED: container.style.borderStyle = 'dashed'; break; - case AnnotationBorderStyleType.BEVELED: - warn('Unimplemented border style: beveled'); + case _util.AnnotationBorderStyleType.BEVELED: + (0, _util.warn)('Unimplemented border style: beveled'); break; - case AnnotationBorderStyleType.INSET: - warn('Unimplemented border style: inset'); + case _util.AnnotationBorderStyleType.INSET: + (0, _util.warn)('Unimplemented border style: inset'); break; - case AnnotationBorderStyleType.UNDERLINE: + case _util.AnnotationBorderStyleType.UNDERLINE: container.style.borderBottomStyle = 'solid'; break; default: break; } if (data.color) { - container.style.borderColor = Util.makeCssRgb(data.color[0] | 0, data.color[1] | 0, data.color[2] | 0); + container.style.borderColor = _util.Util.makeCssRgb(data.color[0] | 0, data.color[1] | 0, data.color[2] | 0); } else { container.style.borderWidth = 0; } @@ -1586,13 +1582,13 @@ var LinkAnnotationElement = function LinkAnnotationElementClosure() { function LinkAnnotationElement(parameters) { AnnotationElement.call(this, parameters, true); } - Util.inherit(LinkAnnotationElement, AnnotationElement, { + _util.Util.inherit(LinkAnnotationElement, AnnotationElement, { render: function LinkAnnotationElement_render() { this.container.className = 'linkAnnotation'; var link = document.createElement('a'); - addLinkAttributes(link, { + (0, _dom_utils.addLinkAttributes)(link, { url: this.data.url, - target: this.data.newWindow ? LinkTarget.BLANK : undefined + target: this.data.newWindow ? _dom_utils.LinkTarget.BLANK : undefined }); if (!this.data.url) { if (this.data.action) { @@ -1634,7 +1630,7 @@ var TextAnnotationElement = function TextAnnotationElementClosure() { var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents); AnnotationElement.call(this, parameters, isRenderable); } - Util.inherit(TextAnnotationElement, AnnotationElement, { + _util.Util.inherit(TextAnnotationElement, AnnotationElement, { render: function TextAnnotationElement_render() { this.container.className = 'textAnnotation'; var image = document.createElement('img'); @@ -1657,7 +1653,7 @@ var WidgetAnnotationElement = function WidgetAnnotationElementClosure() { function WidgetAnnotationElement(parameters, isRenderable) { AnnotationElement.call(this, parameters, isRenderable); } - Util.inherit(WidgetAnnotationElement, AnnotationElement, { + _util.Util.inherit(WidgetAnnotationElement, AnnotationElement, { render: function WidgetAnnotationElement_render() { return this.container; } @@ -1670,7 +1666,7 @@ var TextWidgetAnnotationElement = function TextWidgetAnnotationElementClosure() var isRenderable = parameters.renderInteractiveForms || !parameters.data.hasAppearance && !!parameters.data.fieldValue; WidgetAnnotationElement.call(this, parameters, isRenderable); } - Util.inherit(TextWidgetAnnotationElement, WidgetAnnotationElement, { + _util.Util.inherit(TextWidgetAnnotationElement, WidgetAnnotationElement, { render: function TextWidgetAnnotationElement_render() { this.container.className = 'textWidgetAnnotation'; var element = null; @@ -1730,7 +1726,7 @@ var CheckboxWidgetAnnotationElement = function CheckboxWidgetAnnotationElementCl function CheckboxWidgetAnnotationElement(parameters) { WidgetAnnotationElement.call(this, parameters, parameters.renderInteractiveForms); } - Util.inherit(CheckboxWidgetAnnotationElement, WidgetAnnotationElement, { + _util.Util.inherit(CheckboxWidgetAnnotationElement, WidgetAnnotationElement, { render: function CheckboxWidgetAnnotationElement_render() { this.container.className = 'buttonWidgetAnnotation checkBox'; var element = document.createElement('input'); @@ -1749,7 +1745,7 @@ var RadioButtonWidgetAnnotationElement = function RadioButtonWidgetAnnotationEle function RadioButtonWidgetAnnotationElement(parameters) { WidgetAnnotationElement.call(this, parameters, parameters.renderInteractiveForms); } - Util.inherit(RadioButtonWidgetAnnotationElement, WidgetAnnotationElement, { + _util.Util.inherit(RadioButtonWidgetAnnotationElement, WidgetAnnotationElement, { render: function RadioButtonWidgetAnnotationElement_render() { this.container.className = 'buttonWidgetAnnotation radioButton'; var element = document.createElement('input'); @@ -1769,7 +1765,7 @@ var ChoiceWidgetAnnotationElement = function ChoiceWidgetAnnotationElementClosur function ChoiceWidgetAnnotationElement(parameters) { WidgetAnnotationElement.call(this, parameters, parameters.renderInteractiveForms); } - Util.inherit(ChoiceWidgetAnnotationElement, WidgetAnnotationElement, { + _util.Util.inherit(ChoiceWidgetAnnotationElement, WidgetAnnotationElement, { render: function ChoiceWidgetAnnotationElement_render() { this.container.className = 'choiceWidgetAnnotation'; var selectElement = document.createElement('select'); @@ -1802,7 +1798,7 @@ var PopupAnnotationElement = function PopupAnnotationElementClosure() { var isRenderable = !!(parameters.data.title || parameters.data.contents); AnnotationElement.call(this, parameters, isRenderable); } - Util.inherit(PopupAnnotationElement, AnnotationElement, { + _util.Util.inherit(PopupAnnotationElement, AnnotationElement, { render: function PopupAnnotationElement_render() { this.container.className = 'popupAnnotation'; if (IGNORE_TYPES.indexOf(this.data.parentType) >= 0) { @@ -1822,7 +1818,7 @@ var PopupAnnotationElement = function PopupAnnotationElementClosure() { }); var parentLeft = parseFloat(parentElement.style.left); var parentWidth = parseFloat(parentElement.style.width); - CustomStyle.setProp('transformOrigin', this.container, -(parentLeft + parentWidth) + 'px -' + parentElement.style.top); + _dom_utils.CustomStyle.setProp('transformOrigin', this.container, -(parentLeft + parentWidth) + 'px -' + parentElement.style.top); this.container.style.left = parentLeft + parentWidth + 'px'; this.container.appendChild(popup.render()); return this.container; @@ -1854,7 +1850,7 @@ var PopupElement = function PopupElementClosure() { var r = BACKGROUND_ENLIGHT * (255 - color[0]) + color[0]; var g = BACKGROUND_ENLIGHT * (255 - color[1]) + color[1]; var b = BACKGROUND_ENLIGHT * (255 - color[2]) + color[2]; - popup.style.backgroundColor = Util.makeCssRgb(r | 0, g | 0, b | 0); + popup.style.backgroundColor = _util.Util.makeCssRgb(r | 0, g | 0, b | 0); } var contents = this._formatContents(this.contents); var title = document.createElement('h1'); @@ -1914,7 +1910,7 @@ var LineAnnotationElement = function LineAnnotationElementClosure() { var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents); AnnotationElement.call(this, parameters, isRenderable, true); } - Util.inherit(LineAnnotationElement, AnnotationElement, { + _util.Util.inherit(LineAnnotationElement, AnnotationElement, { render: function LineAnnotationElement_render() { this.container.className = 'lineAnnotation'; var data = this.data; @@ -1946,7 +1942,7 @@ var HighlightAnnotationElement = function HighlightAnnotationElementClosure() { var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents); AnnotationElement.call(this, parameters, isRenderable, true); } - Util.inherit(HighlightAnnotationElement, AnnotationElement, { + _util.Util.inherit(HighlightAnnotationElement, AnnotationElement, { render: function HighlightAnnotationElement_render() { this.container.className = 'highlightAnnotation'; if (!this.data.hasPopup) { @@ -1962,7 +1958,7 @@ var UnderlineAnnotationElement = function UnderlineAnnotationElementClosure() { var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents); AnnotationElement.call(this, parameters, isRenderable, true); } - Util.inherit(UnderlineAnnotationElement, AnnotationElement, { + _util.Util.inherit(UnderlineAnnotationElement, AnnotationElement, { render: function UnderlineAnnotationElement_render() { this.container.className = 'underlineAnnotation'; if (!this.data.hasPopup) { @@ -1978,7 +1974,7 @@ var SquigglyAnnotationElement = function SquigglyAnnotationElementClosure() { var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents); AnnotationElement.call(this, parameters, isRenderable, true); } - Util.inherit(SquigglyAnnotationElement, AnnotationElement, { + _util.Util.inherit(SquigglyAnnotationElement, AnnotationElement, { render: function SquigglyAnnotationElement_render() { this.container.className = 'squigglyAnnotation'; if (!this.data.hasPopup) { @@ -1994,7 +1990,7 @@ var StrikeOutAnnotationElement = function StrikeOutAnnotationElementClosure() { var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents); AnnotationElement.call(this, parameters, isRenderable, true); } - Util.inherit(StrikeOutAnnotationElement, AnnotationElement, { + _util.Util.inherit(StrikeOutAnnotationElement, AnnotationElement, { render: function StrikeOutAnnotationElement_render() { this.container.className = 'strikeoutAnnotation'; if (!this.data.hasPopup) { @@ -2009,15 +2005,15 @@ var FileAttachmentAnnotationElement = function FileAttachmentAnnotationElementCl function FileAttachmentAnnotationElement(parameters) { AnnotationElement.call(this, parameters, true); var file = this.data.file; - this.filename = getFilenameFromUrl(file.filename); + this.filename = (0, _dom_utils.getFilenameFromUrl)(file.filename); this.content = file.content; this.linkService.onFileAttachmentAnnotation({ - id: stringToPDFString(file.filename), + id: (0, _util.stringToPDFString)(file.filename), filename: file.filename, content: file.content }); } - Util.inherit(FileAttachmentAnnotationElement, AnnotationElement, { + _util.Util.inherit(FileAttachmentAnnotationElement, AnnotationElement, { render: function FileAttachmentAnnotationElement_render() { this.container.className = 'fileAttachmentAnnotation'; var trigger = document.createElement('div'); @@ -2032,7 +2028,7 @@ var FileAttachmentAnnotationElement = function FileAttachmentAnnotationElementCl }, _download: function FileAttachmentAnnotationElement_download() { if (!this.downloadManager) { - warn('Download cannot be started due to unavailable download manager'); + (0, _util.warn)('Download cannot be started due to unavailable download manager'); return; } this.downloadManager.downloadData(this.content, this.filename, ''); @@ -2056,7 +2052,7 @@ var AnnotationLayer = function AnnotationLayerClosure() { viewport: parameters.viewport, linkService: parameters.linkService, downloadManager: parameters.downloadManager, - imageResourcesPath: parameters.imageResourcesPath || getDefaultSetting('imageResourcesPath'), + imageResourcesPath: parameters.imageResourcesPath || (0, _dom_utils.getDefaultSetting)('imageResourcesPath'), renderInteractiveForms: parameters.renderInteractiveForms || false }); if (element.isRenderable) { @@ -2069,7 +2065,7 @@ var AnnotationLayer = function AnnotationLayerClosure() { var data = parameters.annotations[i]; var element = parameters.div.querySelector('[data-annotation-id="' + data.id + '"]'); if (element) { - CustomStyle.setProp('transform', element, 'matrix(' + parameters.viewport.transform.join(',') + ')'); + _dom_utils.CustomStyle.setProp('transform', element, 'matrix(' + parameters.viewport.transform.join(',') + ')'); } } parameters.div.removeAttribute('hidden'); @@ -2085,44 +2081,23 @@ exports.AnnotationLayer = AnnotationLayer; "use strict"; +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.build = exports.version = exports._UnsupportedManager = exports.PDFPageProxy = exports.PDFDocumentProxy = exports.PDFWorker = exports.PDFDataRangeTransport = exports.getDocument = undefined; + var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; -var sharedUtil = __w_pdfjs_require__(0); -var displayFontLoader = __w_pdfjs_require__(11); -var displayCanvas = __w_pdfjs_require__(10); -var displayMetadata = __w_pdfjs_require__(7); -var displayDOMUtils = __w_pdfjs_require__(1); -var amdRequire; -var InvalidPDFException = sharedUtil.InvalidPDFException; -var MessageHandler = sharedUtil.MessageHandler; -var MissingPDFException = sharedUtil.MissingPDFException; -var PageViewport = sharedUtil.PageViewport; -var PasswordException = sharedUtil.PasswordException; -var StatTimer = sharedUtil.StatTimer; -var UnexpectedResponseException = sharedUtil.UnexpectedResponseException; -var UnknownErrorException = sharedUtil.UnknownErrorException; -var Util = sharedUtil.Util; -var createPromiseCapability = sharedUtil.createPromiseCapability; -var error = sharedUtil.error; -var deprecated = sharedUtil.deprecated; -var getVerbosityLevel = sharedUtil.getVerbosityLevel; -var info = sharedUtil.info; -var isInt = sharedUtil.isInt; -var isArray = sharedUtil.isArray; -var isArrayBuffer = sharedUtil.isArrayBuffer; -var isSameOrigin = sharedUtil.isSameOrigin; -var loadJpegStream = sharedUtil.loadJpegStream; -var stringToBytes = sharedUtil.stringToBytes; -var globalScope = sharedUtil.globalScope; -var warn = sharedUtil.warn; -var FontFaceObject = displayFontLoader.FontFaceObject; -var FontLoader = displayFontLoader.FontLoader; -var CanvasGraphics = displayCanvas.CanvasGraphics; -var Metadata = displayMetadata.Metadata; -var RenderingCancelledException = displayDOMUtils.RenderingCancelledException; -var getDefaultSetting = displayDOMUtils.getDefaultSetting; -var DOMCanvasFactory = displayDOMUtils.DOMCanvasFactory; -var DOMCMapReaderFactory = displayDOMUtils.DOMCMapReaderFactory; +var _util = __w_pdfjs_require__(0); + +var _dom_utils = __w_pdfjs_require__(1); + +var _font_loader = __w_pdfjs_require__(11); + +var _canvas = __w_pdfjs_require__(10); + +var _metadata = __w_pdfjs_require__(7); + var DEFAULT_RANGE_CHUNK_SIZE = 65536; var isWorkerDisabled = false; var workerSrc; @@ -2158,7 +2133,7 @@ if (typeof __pdfjsdev_webpack__ === 'undefined') { function getDocument(src, pdfDataRangeTransport, passwordCallback, progressCallback) { var task = new PDFDocumentLoadingTask(); if (arguments.length > 1) { - deprecated('getDocument is called with pdfDataRangeTransport, ' + 'passwordCallback or progressCallback argument'); + (0, _util.deprecated)('getDocument is called with pdfDataRangeTransport, ' + 'passwordCallback or progressCallback argument'); } if (pdfDataRangeTransport) { if (!(pdfDataRangeTransport instanceof PDFDataRangeTransport)) { @@ -2177,16 +2152,16 @@ function getDocument(src, pdfDataRangeTransport, passwordCallback, progressCallb var source; if (typeof src === 'string') { source = { url: src }; - } else if (isArrayBuffer(src)) { + } else if ((0, _util.isArrayBuffer)(src)) { source = { data: src }; } else if (src instanceof PDFDataRangeTransport) { source = { range: src }; } else { if ((typeof src === 'undefined' ? 'undefined' : _typeof(src)) !== 'object') { - error('Invalid parameter in getDocument, need either Uint8Array, ' + 'string or a parameter object'); + (0, _util.error)('Invalid parameter in getDocument, need either Uint8Array, ' + 'string or a parameter object'); } if (!src.url && !src.data && !src.range) { - error('Invalid parameter object: need either .data, .range or .url'); + (0, _util.error)('Invalid parameter object: need either .data, .range or .url'); } source = src; } @@ -2206,13 +2181,13 @@ function getDocument(src, pdfDataRangeTransport, passwordCallback, progressCallb } else if (key === 'data' && !(source[key] instanceof Uint8Array)) { var pdfBytes = source[key]; if (typeof pdfBytes === 'string') { - params[key] = stringToBytes(pdfBytes); + params[key] = (0, _util.stringToBytes)(pdfBytes); } else if ((typeof pdfBytes === 'undefined' ? 'undefined' : _typeof(pdfBytes)) === 'object' && pdfBytes !== null && !isNaN(pdfBytes.length)) { params[key] = new Uint8Array(pdfBytes); - } else if (isArrayBuffer(pdfBytes)) { + } else if ((0, _util.isArrayBuffer)(pdfBytes)) { params[key] = new Uint8Array(pdfBytes); } else { - error('Invalid PDF binary data: either typed array, string or ' + 'array-like object is expected in the data property.'); + (0, _util.error)('Invalid PDF binary data: either typed array, string or ' + 'array-like object is expected in the data property.'); } continue; } @@ -2221,9 +2196,9 @@ function getDocument(src, pdfDataRangeTransport, passwordCallback, progressCallb params.rangeChunkSize = params.rangeChunkSize || DEFAULT_RANGE_CHUNK_SIZE; params.disableNativeImageDecoder = params.disableNativeImageDecoder === true; params.ignoreErrors = params.stopAtErrors !== true; - var CMapReaderFactory = params.CMapReaderFactory || DOMCMapReaderFactory; + var CMapReaderFactory = params.CMapReaderFactory || _dom_utils.DOMCMapReaderFactory; if (!worker) { - var workerPort = getDefaultSetting('workerPort'); + var workerPort = (0, _dom_utils.getDefaultSetting)('workerPort'); worker = workerPort ? new PDFWorker(null, workerPort) : new PDFWorker(); task._worker = worker; } @@ -2236,7 +2211,7 @@ function getDocument(src, pdfDataRangeTransport, passwordCallback, progressCallb if (task.destroyed) { throw new Error('Loading aborted'); } - var messageHandler = new MessageHandler(docId, workerId, worker.port); + var messageHandler = new _util.MessageHandler(docId, workerId, worker.port); var transport = new WorkerTransport(messageHandler, task, rangeTransport, CMapReaderFactory); task._transport = transport; messageHandler.send('Ready', null); @@ -2248,8 +2223,8 @@ function _fetchDocument(worker, source, pdfDataRangeTransport, docId) { if (worker.destroyed) { return Promise.reject(new Error('Worker was destroyed')); } - source.disableAutoFetch = getDefaultSetting('disableAutoFetch'); - source.disableStream = getDefaultSetting('disableStream'); + source.disableAutoFetch = (0, _dom_utils.getDefaultSetting)('disableAutoFetch'); + source.disableStream = (0, _dom_utils.getDefaultSetting)('disableStream'); source.chunkedViewerLoading = !!pdfDataRangeTransport; if (pdfDataRangeTransport) { source.length = pdfDataRangeTransport.length; @@ -2258,11 +2233,11 @@ function _fetchDocument(worker, source, pdfDataRangeTransport, docId) { return worker.messageHandler.sendWithPromise('GetDocRequest', { docId: docId, source: source, - disableRange: getDefaultSetting('disableRange'), - maxImageSize: getDefaultSetting('maxImageSize'), - disableFontFace: getDefaultSetting('disableFontFace'), - disableCreateObjectURL: getDefaultSetting('disableCreateObjectURL'), - postMessageTransfers: getDefaultSetting('postMessageTransfers') && !isPostMessageTransfersDisabled, + disableRange: (0, _dom_utils.getDefaultSetting)('disableRange'), + maxImageSize: (0, _dom_utils.getDefaultSetting)('maxImageSize'), + disableFontFace: (0, _dom_utils.getDefaultSetting)('disableFontFace'), + disableCreateObjectURL: (0, _dom_utils.getDefaultSetting)('disableCreateObjectURL'), + postMessageTransfers: (0, _dom_utils.getDefaultSetting)('postMessageTransfers') && !isPostMessageTransfersDisabled, docBaseUrl: source.docBaseUrl, disableNativeImageDecoder: source.disableNativeImageDecoder, ignoreErrors: source.ignoreErrors @@ -2276,7 +2251,7 @@ function _fetchDocument(worker, source, pdfDataRangeTransport, docId) { var PDFDocumentLoadingTask = function PDFDocumentLoadingTaskClosure() { var nextDocumentId = 0; function PDFDocumentLoadingTask() { - this._capability = createPromiseCapability(); + this._capability = (0, _util.createPromiseCapability)(); this._transport = null; this._worker = null; this.docId = 'd' + nextDocumentId++; @@ -2313,7 +2288,7 @@ var PDFDataRangeTransport = function pdfDataRangeTransportClosure() { this._rangeListeners = []; this._progressListeners = []; this._progressiveReadListeners = []; - this._readyCapability = createPromiseCapability(); + this._readyCapability = (0, _util.createPromiseCapability)(); } PDFDataRangeTransport.prototype = { addRangeListener: function PDFDataRangeTransport_addRangeListener(listener) { @@ -2420,8 +2395,8 @@ var PDFPageProxy = function PDFPageProxyClosure() { this.pageIndex = pageIndex; this.pageInfo = pageInfo; this.transport = transport; - this.stats = new StatTimer(); - this.stats.enabled = getDefaultSetting('enableStats'); + this.stats = new _util.StatTimer(); + this.stats.enabled = (0, _dom_utils.getDefaultSetting)('enableStats'); this.commonObjs = transport.commonObjs; this.objs = new PDFObjects(); this.cleanupAfterRender = false; @@ -2449,7 +2424,7 @@ var PDFPageProxy = function PDFPageProxyClosure() { if (arguments.length < 2) { rotate = this.rotate; } - return new PageViewport(this.view, scale, rotate, 0, 0); + return new _util.PageViewport(this.view, scale, rotate, 0, 0); }, getAnnotations: function PDFPageProxy_getAnnotations(params) { var intent = params && params.intent || null; @@ -2464,14 +2439,14 @@ var PDFPageProxy = function PDFPageProxyClosure() { stats.time('Overall'); this.pendingCleanup = false; var renderingIntent = params.intent === 'print' ? 'print' : 'display'; - var canvasFactory = params.canvasFactory || new DOMCanvasFactory(); + var canvasFactory = params.canvasFactory || new _dom_utils.DOMCanvasFactory(); if (!this.intentStates[renderingIntent]) { this.intentStates[renderingIntent] = Object.create(null); } var intentState = this.intentStates[renderingIntent]; if (!intentState.displayReadyCapability) { intentState.receivingOperatorList = true; - intentState.displayReadyCapability = createPromiseCapability(); + intentState.displayReadyCapability = (0, _util.createPromiseCapability)(); intentState.operatorList = { fnArray: [], argsArray: [], @@ -2492,7 +2467,7 @@ var PDFPageProxy = function PDFPageProxyClosure() { intentState.renderTasks.push(internalRenderTask); var renderTask = internalRenderTask.task; if (params.continueCallback) { - deprecated('render is used with continueCallback parameter'); + (0, _util.deprecated)('render is used with continueCallback parameter'); renderTask.onContinue = params.continueCallback; } var self = this; @@ -2546,7 +2521,7 @@ var PDFPageProxy = function PDFPageProxyClosure() { opListTask = {}; opListTask.operatorListChanged = operatorListChanged; intentState.receivingOperatorList = true; - intentState.opListReadCapability = createPromiseCapability(); + intentState.opListReadCapability = (0, _util.createPromiseCapability)(); intentState.renderTasks = []; intentState.renderTasks.push(opListTask); intentState.operatorList = { @@ -2590,7 +2565,7 @@ var PDFPageProxy = function PDFPageProxyClosure() { return Promise.all(waitOn); }, destroy: function destroy() { - deprecated('page destroy method, use cleanup() instead'); + (0, _util.deprecated)('page destroy method, use cleanup() instead'); this.cleanup(); }, cleanup: function PDFPageProxy_cleanup() { @@ -2642,13 +2617,13 @@ var PDFWorker = function PDFWorkerClosure() { if (typeof workerSrc !== 'undefined') { return workerSrc; } - if (getDefaultSetting('workerSrc')) { - return getDefaultSetting('workerSrc'); + if ((0, _dom_utils.getDefaultSetting)('workerSrc')) { + return (0, _dom_utils.getDefaultSetting)('workerSrc'); } if (pdfjsFilePath) { return pdfjsFilePath.replace(/(\.(?:min\.)?js)$/i, '.worker$1'); } - error('No PDFJS.workerSrc specified'); + (0, _util.error)('No PDFJS.workerSrc specified'); } var fakeWorkerFilesLoadedCapability; function setupFakeWorkerGlobal() { @@ -2656,9 +2631,9 @@ var PDFWorker = function PDFWorkerClosure() { if (fakeWorkerFilesLoadedCapability) { return fakeWorkerFilesLoadedCapability.promise; } - fakeWorkerFilesLoadedCapability = createPromiseCapability(); + fakeWorkerFilesLoadedCapability = (0, _util.createPromiseCapability)(); var loader = fakeWorkerFilesLoader || function (callback) { - Util.loadScript(getWorkerSrc(), function () { + _util.Util.loadScript(getWorkerSrc(), function () { callback(window.pdfjsDistBuildPdfWorker.WorkerMessageHandler); }); }; @@ -2681,7 +2656,7 @@ var PDFWorker = function PDFWorkerClosure() { } var result; var buffer; - if ((buffer = value.buffer) && isArrayBuffer(buffer)) { + if ((buffer = value.buffer) && (0, _util.isArrayBuffer)(buffer)) { var transferable = transfers && transfers.indexOf(buffer) >= 0; if (value === buffer) { result = value; @@ -2693,7 +2668,7 @@ var PDFWorker = function PDFWorkerClosure() { cloned.set(value, result); return result; } - result = isArray(value) ? [] : {}; + result = (0, _util.isArray)(value) ? [] : {}; cloned.set(value, result); for (var i in value) { var desc, @@ -2740,7 +2715,7 @@ var PDFWorker = function PDFWorkerClosure() { function PDFWorker(name, port) { this.name = name; this.destroyed = false; - this._readyCapability = createPromiseCapability(); + this._readyCapability = (0, _util.createPromiseCapability)(); this._port = null; this._webWorker = null; this._messageHandler = null; @@ -2762,19 +2737,19 @@ var PDFWorker = function PDFWorkerClosure() { }, _initializeFromPort: function PDFWorker_initializeFromPort(port) { this._port = port; - this._messageHandler = new MessageHandler('main', 'worker', port); + this._messageHandler = new _util.MessageHandler('main', 'worker', port); this._messageHandler.on('ready', function () {}); this._readyCapability.resolve(); }, _initialize: function PDFWorker_initialize() { - if (!isWorkerDisabled && !getDefaultSetting('disableWorker') && typeof Worker !== 'undefined') { + if (!isWorkerDisabled && !(0, _dom_utils.getDefaultSetting)('disableWorker') && typeof Worker !== 'undefined') { var workerSrc = getWorkerSrc(); try { - if (!isSameOrigin(window.location.href, workerSrc)) { + if (!(0, _util.isSameOrigin)(window.location.href, workerSrc)) { workerSrc = createCDNWrapper(new URL(workerSrc, window.location).href); } var worker = new Worker(workerSrc); - var messageHandler = new MessageHandler('main', 'worker', worker); + var messageHandler = new _util.MessageHandler('main', 'worker', worker); var terminateEarly = function () { worker.removeEventListener('error', onWorkerError); messageHandler.destroy(); @@ -2806,7 +2781,7 @@ var PDFWorker = function PDFWorkerClosure() { isPostMessageTransfersDisabled = true; } this._readyCapability.resolve(); - messageHandler.send('configure', { verbosity: getVerbosityLevel() }); + messageHandler.send('configure', { verbosity: (0, _util.getVerbosityLevel)() }); } else { this._setupFakeWorker(); messageHandler.destroy(); @@ -2832,12 +2807,12 @@ var PDFWorker = function PDFWorkerClosure() { } }.bind(this)); var sendTest = function sendTest() { - var postMessageTransfers = getDefaultSetting('postMessageTransfers') && !isPostMessageTransfersDisabled; + var postMessageTransfers = (0, _dom_utils.getDefaultSetting)('postMessageTransfers') && !isPostMessageTransfersDisabled; var testObj = new Uint8Array([postMessageTransfers ? 255 : 0]); try { messageHandler.send('test', testObj, [testObj.buffer]); } catch (ex) { - info('Cannot use postMessage transfers'); + (0, _util.info)('Cannot use postMessage transfers'); testObj[0] = 0; messageHandler.send('test', testObj); } @@ -2845,14 +2820,14 @@ var PDFWorker = function PDFWorkerClosure() { sendTest(); return; } catch (e) { - info('The worker has been disabled.'); + (0, _util.info)('The worker has been disabled.'); } } this._setupFakeWorker(); }, _setupFakeWorker: function PDFWorker_setupFakeWorker() { - if (!isWorkerDisabled && !getDefaultSetting('disableWorker')) { - warn('Setting up fake worker.'); + if (!isWorkerDisabled && !(0, _dom_utils.getDefaultSetting)('disableWorker')) { + (0, _util.warn)('Setting up fake worker.'); isWorkerDisabled = true; } setupFakeWorkerGlobal().then(function (WorkerMessageHandler) { @@ -2864,9 +2839,9 @@ var PDFWorker = function PDFWorkerClosure() { var port = new FakeWorkerPort(isTypedArraysPresent); this._port = port; var id = 'fake' + nextFakeWorkerId++; - var workerHandler = new MessageHandler(id + '_worker', id, port); + var workerHandler = new _util.MessageHandler(id + '_worker', id, port); WorkerMessageHandler.setup(workerHandler, port); - var messageHandler = new MessageHandler(id, id + '_worker', port); + var messageHandler = new _util.MessageHandler(id, id + '_worker', port); this._messageHandler = messageHandler; this._readyCapability.resolve(); }.bind(this)); @@ -2892,17 +2867,17 @@ var WorkerTransport = function WorkerTransportClosure() { this.loadingTask = loadingTask; this.pdfDataRangeTransport = pdfDataRangeTransport; this.commonObjs = new PDFObjects(); - this.fontLoader = new FontLoader(loadingTask.docId); + this.fontLoader = new _font_loader.FontLoader(loadingTask.docId); this.CMapReaderFactory = new CMapReaderFactory({ - baseUrl: getDefaultSetting('cMapUrl'), - isCompressed: getDefaultSetting('cMapPacked') + baseUrl: (0, _dom_utils.getDefaultSetting)('cMapUrl'), + isCompressed: (0, _dom_utils.getDefaultSetting)('cMapPacked') }); this.destroyed = false; this.destroyCapability = null; this._passwordCapability = null; this.pageCache = []; this.pagePromises = []; - this.downloadInfoCapability = createPromiseCapability(); + this.downloadInfoCapability = (0, _util.createPromiseCapability)(); this.setupMessageHandler(); } WorkerTransport.prototype = { @@ -2911,7 +2886,7 @@ var WorkerTransport = function WorkerTransportClosure() { return this.destroyCapability.promise; } this.destroyed = true; - this.destroyCapability = createPromiseCapability(); + this.destroyCapability = (0, _util.createPromiseCapability)(); if (this._passwordCapability) { this._passwordCapability.reject(new Error('Worker was destroyed during onPassword callback')); } @@ -2970,31 +2945,31 @@ var WorkerTransport = function WorkerTransportClosure() { loadingTask._capability.resolve(pdfDocument); }, this); messageHandler.on('PasswordRequest', function transportPasswordRequest(exception) { - this._passwordCapability = createPromiseCapability(); + this._passwordCapability = (0, _util.createPromiseCapability)(); if (loadingTask.onPassword) { var updatePassword = function (password) { this._passwordCapability.resolve({ password: password }); }.bind(this); loadingTask.onPassword(updatePassword, exception.code); } else { - this._passwordCapability.reject(new PasswordException(exception.message, exception.code)); + this._passwordCapability.reject(new _util.PasswordException(exception.message, exception.code)); } return this._passwordCapability.promise; }, this); messageHandler.on('PasswordException', function transportPasswordException(exception) { - loadingTask._capability.reject(new PasswordException(exception.message, exception.code)); + loadingTask._capability.reject(new _util.PasswordException(exception.message, exception.code)); }, this); messageHandler.on('InvalidPDF', function transportInvalidPDF(exception) { - this.loadingTask._capability.reject(new InvalidPDFException(exception.message)); + this.loadingTask._capability.reject(new _util.InvalidPDFException(exception.message)); }, this); messageHandler.on('MissingPDF', function transportMissingPDF(exception) { - this.loadingTask._capability.reject(new MissingPDFException(exception.message)); + this.loadingTask._capability.reject(new _util.MissingPDFException(exception.message)); }, this); messageHandler.on('UnexpectedResponse', function transportUnexpectedResponse(exception) { - this.loadingTask._capability.reject(new UnexpectedResponseException(exception.message, exception.status)); + this.loadingTask._capability.reject(new _util.UnexpectedResponseException(exception.message, exception.status)); }, this); messageHandler.on('UnknownError', function transportUnknownError(exception) { - this.loadingTask._capability.reject(new UnknownErrorException(exception.message, exception.details)); + this.loadingTask._capability.reject(new _util.UnknownErrorException(exception.message, exception.details)); }, this); messageHandler.on('DataLoaded', function transportPage(data) { this.downloadInfoCapability.resolve(data); @@ -3033,21 +3008,21 @@ var WorkerTransport = function WorkerTransportClosure() { var exportedData = data[2]; if ('error' in exportedData) { var exportedError = exportedData.error; - warn('Error during font loading: ' + exportedError); + (0, _util.warn)('Error during font loading: ' + exportedError); this.commonObjs.resolve(id, exportedError); break; } var fontRegistry = null; - if (getDefaultSetting('pdfBug') && globalScope.FontInspector && globalScope['FontInspector'].enabled) { + if ((0, _dom_utils.getDefaultSetting)('pdfBug') && _util.globalScope.FontInspector && _util.globalScope['FontInspector'].enabled) { fontRegistry = { registerFont: function registerFont(font, url) { - globalScope['FontInspector'].fontAdded(font, url); + _util.globalScope['FontInspector'].fontAdded(font, url); } }; } - var font = new FontFaceObject(exportedData, { - isEvalSuported: getDefaultSetting('isEvalSupported'), - disableFontFace: getDefaultSetting('disableFontFace'), + var font = new _font_loader.FontFaceObject(exportedData, { + isEvalSuported: (0, _dom_utils.getDefaultSetting)('isEvalSupported'), + disableFontFace: (0, _dom_utils.getDefaultSetting)('disableFontFace'), fontRegistry: fontRegistry }); this.fontLoader.bind([font], function fontReady(fontObjs) { @@ -3058,7 +3033,7 @@ var WorkerTransport = function WorkerTransportClosure() { this.commonObjs.resolve(id, data[2]); break; default: - error('Got unknown common object type ' + type); + (0, _util.error)('Got unknown common object type ' + type); } }, this); messageHandler.on('obj', function transportObj(data) { @@ -3076,7 +3051,7 @@ var WorkerTransport = function WorkerTransportClosure() { switch (type) { case 'JpegStream': imageData = data[3]; - loadJpegStream(id, imageData, pageProxy.objs); + (0, _util.loadJpegStream)(id, imageData, pageProxy.objs); break; case 'Image': imageData = data[3]; @@ -3087,7 +3062,7 @@ var WorkerTransport = function WorkerTransportClosure() { } break; default: - error('Got unknown object type ' + type); + (0, _util.error)('Got unknown object type ' + type); } }, this); messageHandler.on('DocProgress', function transportDocProgress(data) { @@ -3111,7 +3086,7 @@ var WorkerTransport = function WorkerTransportClosure() { if (intentState.displayReadyCapability) { intentState.displayReadyCapability.reject(data.error); } else { - error(data.error); + (0, _util.error)(data.error); } if (intentState.operatorList) { intentState.operatorList.lastChunk = true; @@ -3192,7 +3167,7 @@ var WorkerTransport = function WorkerTransportClosure() { return this.messageHandler.sendWithPromise('GetData', null); }, getPage: function WorkerTransport_getPage(pageNumber, capability) { - if (!isInt(pageNumber) || pageNumber <= 0 || pageNumber > this.numPages) { + if (!(0, _util.isInt)(pageNumber) || pageNumber <= 0 || pageNumber > this.numPages) { return Promise.reject(new Error('Invalid page request')); } var pageIndex = pageNumber - 1; @@ -3243,7 +3218,7 @@ var WorkerTransport = function WorkerTransportClosure() { return this.messageHandler.sendWithPromise('GetMetadata', null).then(function transportMetadata(results) { return { info: results[0], - metadata: results[1] ? new Metadata(results[1]) : null + metadata: results[1] ? new _metadata.Metadata(results[1]) : null }; }); }, @@ -3275,7 +3250,7 @@ var PDFObjects = function PDFObjectsClosure() { return this.objs[objId]; } var obj = { - capability: createPromiseCapability(), + capability: (0, _util.createPromiseCapability)(), data: null, resolved: false }; @@ -3289,7 +3264,7 @@ var PDFObjects = function PDFObjectsClosure() { } var obj = this.objs[objId]; if (!obj || !obj.resolved) { - error('Requesting object that isn\'t resolved yet ' + objId); + (0, _util.error)('Requesting object that isn\'t resolved yet ' + objId); } return obj.data; }, @@ -3355,7 +3330,7 @@ var InternalRenderTask = function InternalRenderTaskClosure() { this.graphicsReady = false; this.useRequestAnimationFrame = false; this.cancelled = false; - this.capability = createPromiseCapability(); + this.capability = (0, _util.createPromiseCapability)(); this.task = new RenderTask(this); this._continueBound = this._continue.bind(this); this._scheduleNextBound = this._scheduleNext.bind(this); @@ -3366,13 +3341,13 @@ var InternalRenderTask = function InternalRenderTaskClosure() { if (this.cancelled) { return; } - if (getDefaultSetting('pdfBug') && globalScope.StepperManager && globalScope.StepperManager.enabled) { - this.stepper = globalScope.StepperManager.create(this.pageNumber - 1); + if ((0, _dom_utils.getDefaultSetting)('pdfBug') && _util.globalScope.StepperManager && _util.globalScope.StepperManager.enabled) { + this.stepper = _util.globalScope.StepperManager.create(this.pageNumber - 1); this.stepper.init(this.operatorList); this.stepper.nextBreakPoint = this.stepper.getNextBreakPoint(); } var params = this.params; - this.gfx = new CanvasGraphics(params.canvasContext, this.commonObjs, this.objs, this.canvasFactory, params.imageLayer); + this.gfx = new _canvas.CanvasGraphics(params.canvasContext, this.commonObjs, this.objs, this.canvasFactory, params.imageLayer); this.gfx.beginDrawing(params.transform, params.viewport, transparency); this.operatorListIdx = 0; this.graphicsReady = true; @@ -3383,8 +3358,8 @@ var InternalRenderTask = function InternalRenderTaskClosure() { cancel: function InternalRenderTask_cancel() { this.running = false; this.cancelled = true; - if (getDefaultSetting('pdfjsNext')) { - this.callback(new RenderingCancelledException('Rendering cancelled, page ' + this.pageNumber, 'canvas')); + if ((0, _dom_utils.getDefaultSetting)('pdfjsNext')) { + this.callback(new _dom_utils.RenderingCancelledException('Rendering cancelled, page ' + this.pageNumber, 'canvas')); } else { this.callback('cancelled'); } @@ -3442,7 +3417,7 @@ var _UnsupportedManager = function UnsupportedManagerClosure() { var listeners = []; return { listen: function listen(cb) { - deprecated('Global UnsupportedManager.listen is used: ' + ' use PDFDocumentLoadingTask.onUnsupportedFeature instead'); + (0, _util.deprecated)('Global UnsupportedManager.listen is used: ' + ' use PDFDocumentLoadingTask.onUnsupportedFeature instead'); listeners.push(cb); }, notify: function notify(featureId) { @@ -3452,14 +3427,19 @@ var _UnsupportedManager = function UnsupportedManagerClosure() { } }; }(); -exports.version = '1.8.213'; -exports.build = 'c6e8ca86'; +var version, build; +{ + exports.version = version = '1.8.233'; + exports.build = build = '19321937'; +} exports.getDocument = getDocument; exports.PDFDataRangeTransport = PDFDataRangeTransport; exports.PDFWorker = PDFWorker; exports.PDFDocumentProxy = PDFDocumentProxy; exports.PDFPageProxy = PDFPageProxy; exports._UnsupportedManager = _UnsupportedManager; +exports.version = version; +exports.build = build; /***/ }), /* 4 */ @@ -3468,960 +3448,962 @@ exports._UnsupportedManager = _UnsupportedManager; "use strict"; -var sharedUtil = __w_pdfjs_require__(0); -var FONT_IDENTITY_MATRIX = sharedUtil.FONT_IDENTITY_MATRIX; -var IDENTITY_MATRIX = sharedUtil.IDENTITY_MATRIX; -var ImageKind = sharedUtil.ImageKind; -var OPS = sharedUtil.OPS; -var Util = sharedUtil.Util; -var isNum = sharedUtil.isNum; -var isArray = sharedUtil.isArray; -var warn = sharedUtil.warn; -var createObjectURL = sharedUtil.createObjectURL; -var SVG_DEFAULTS = { - fontStyle: 'normal', - fontWeight: 'normal', - fillColor: '#000000' +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.SVGGraphics = undefined; + +var _util = __w_pdfjs_require__(0); + +var SVGGraphics = function SVGGraphics() { + throw new Error('Not implemented: SVGGraphics'); }; -var convertImgDataToPng = function convertImgDataToPngClosure() { - var PNG_HEADER = new Uint8Array([0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a]); - var CHUNK_WRAPPER_SIZE = 12; - var crcTable = new Int32Array(256); - for (var i = 0; i < 256; i++) { - var c = i; - for (var h = 0; h < 8; h++) { - if (c & 1) { - c = 0xedB88320 ^ c >> 1 & 0x7fffffff; - } else { - c = c >> 1 & 0x7fffffff; - } - } - crcTable[i] = c; - } - function crc32(data, start, end) { - var crc = -1; - for (var i = start; i < end; i++) { - var a = (crc ^ data[i]) & 0xff; - var b = crcTable[a]; - crc = crc >>> 8 ^ b; - } - return crc ^ -1; - } - function writePngChunk(type, body, data, offset) { - var p = offset; - var len = body.length; - data[p] = len >> 24 & 0xff; - data[p + 1] = len >> 16 & 0xff; - data[p + 2] = len >> 8 & 0xff; - data[p + 3] = len & 0xff; - p += 4; - data[p] = type.charCodeAt(0) & 0xff; - data[p + 1] = type.charCodeAt(1) & 0xff; - data[p + 2] = type.charCodeAt(2) & 0xff; - data[p + 3] = type.charCodeAt(3) & 0xff; - p += 4; - data.set(body, p); - p += body.length; - var crc = crc32(data, offset + 4, p); - data[p] = crc >> 24 & 0xff; - data[p + 1] = crc >> 16 & 0xff; - data[p + 2] = crc >> 8 & 0xff; - data[p + 3] = crc & 0xff; - } - function adler32(data, start, end) { - var a = 1; - var b = 0; - for (var i = start; i < end; ++i) { - a = (a + (data[i] & 0xff)) % 65521; - b = (b + a) % 65521; - } - return b << 16 | a; - } - function encode(imgData, kind, forceDataSchema) { - var width = imgData.width; - var height = imgData.height; - var bitDepth, colorType, lineSize; - var bytes = imgData.data; - switch (kind) { - case ImageKind.GRAYSCALE_1BPP: - colorType = 0; - bitDepth = 1; - lineSize = width + 7 >> 3; - break; - case ImageKind.RGB_24BPP: - colorType = 2; - bitDepth = 8; - lineSize = width * 3; - break; - case ImageKind.RGBA_32BPP: - colorType = 6; - bitDepth = 8; - lineSize = width * 4; - break; - default: - throw new Error('invalid format'); - } - var literals = new Uint8Array((1 + lineSize) * height); - var offsetLiterals = 0, - offsetBytes = 0; - var y, i; - for (y = 0; y < height; ++y) { - literals[offsetLiterals++] = 0; - literals.set(bytes.subarray(offsetBytes, offsetBytes + lineSize), offsetLiterals); - offsetBytes += lineSize; - offsetLiterals += lineSize; - } - if (kind === ImageKind.GRAYSCALE_1BPP) { - offsetLiterals = 0; - for (y = 0; y < height; y++) { - offsetLiterals++; - for (i = 0; i < lineSize; i++) { - literals[offsetLiterals++] ^= 0xFF; - } - } - } - var ihdr = new Uint8Array([width >> 24 & 0xff, width >> 16 & 0xff, width >> 8 & 0xff, width & 0xff, height >> 24 & 0xff, height >> 16 & 0xff, height >> 8 & 0xff, height & 0xff, bitDepth, colorType, 0x00, 0x00, 0x00]); - var len = literals.length; - var maxBlockLength = 0xFFFF; - var deflateBlocks = Math.ceil(len / maxBlockLength); - var idat = new Uint8Array(2 + len + deflateBlocks * 5 + 4); - var pi = 0; - idat[pi++] = 0x78; - idat[pi++] = 0x9c; - var pos = 0; - while (len > maxBlockLength) { - idat[pi++] = 0x00; - idat[pi++] = 0xff; - idat[pi++] = 0xff; - idat[pi++] = 0x00; - idat[pi++] = 0x00; - idat.set(literals.subarray(pos, pos + maxBlockLength), pi); - pi += maxBlockLength; - pos += maxBlockLength; - len -= maxBlockLength; - } - idat[pi++] = 0x01; - idat[pi++] = len & 0xff; - idat[pi++] = len >> 8 & 0xff; - idat[pi++] = ~len & 0xffff & 0xff; - idat[pi++] = (~len & 0xffff) >> 8 & 0xff; - idat.set(literals.subarray(pos), pi); - pi += literals.length - pos; - var adler = adler32(literals, 0, literals.length); - idat[pi++] = adler >> 24 & 0xff; - idat[pi++] = adler >> 16 & 0xff; - idat[pi++] = adler >> 8 & 0xff; - idat[pi++] = adler & 0xff; - var pngLength = PNG_HEADER.length + CHUNK_WRAPPER_SIZE * 3 + ihdr.length + idat.length; - var data = new Uint8Array(pngLength); - var offset = 0; - data.set(PNG_HEADER, offset); - offset += PNG_HEADER.length; - writePngChunk('IHDR', ihdr, data, offset); - offset += CHUNK_WRAPPER_SIZE + ihdr.length; - writePngChunk('IDATA', idat, data, offset); - offset += CHUNK_WRAPPER_SIZE + idat.length; - writePngChunk('IEND', new Uint8Array(0), data, offset); - return createObjectURL(data, 'image/png', forceDataSchema); - } - return function convertImgDataToPng(imgData, forceDataSchema) { - var kind = imgData.kind === undefined ? ImageKind.GRAYSCALE_1BPP : imgData.kind; - return encode(imgData, kind, forceDataSchema); - }; -}(); -var SVGExtraState = function SVGExtraStateClosure() { - function SVGExtraState() { - this.fontSizeScale = 1; - this.fontWeight = SVG_DEFAULTS.fontWeight; - this.fontSize = 0; - this.textMatrix = IDENTITY_MATRIX; - this.fontMatrix = FONT_IDENTITY_MATRIX; - this.leading = 0; - this.x = 0; - this.y = 0; - this.lineX = 0; - this.lineY = 0; - this.charSpacing = 0; - this.wordSpacing = 0; - this.textHScale = 1; - this.textRise = 0; - this.fillColor = SVG_DEFAULTS.fillColor; - this.strokeColor = '#000000'; - this.fillAlpha = 1; - this.strokeAlpha = 1; - this.lineWidth = 1; - this.lineJoin = ''; - this.lineCap = ''; - this.miterLimit = 0; - this.dashArray = []; - this.dashPhase = 0; - this.dependencies = []; - this.activeClipUrl = null; - this.clipGroup = null; - this.maskId = ''; - } - SVGExtraState.prototype = { - clone: function SVGExtraState_clone() { - return Object.create(this); - }, - setCurrentPoint: function SVGExtraState_setCurrentPoint(x, y) { - this.x = x; - this.y = y; - } +{ + var SVG_DEFAULTS = { + fontStyle: 'normal', + fontWeight: 'normal', + fillColor: '#000000' }; - return SVGExtraState; -}(); -var SVGGraphics = function SVGGraphicsClosure() { - function opListToTree(opList) { - var opTree = []; - var tmp = []; - var opListLen = opList.length; - for (var x = 0; x < opListLen; x++) { - if (opList[x].fn === 'save') { - opTree.push({ - 'fnId': 92, - 'fn': 'group', - 'items': [] - }); - tmp.push(opTree); - opTree = opTree[opTree.length - 1].items; - continue; + var convertImgDataToPng = function convertImgDataToPngClosure() { + var PNG_HEADER = new Uint8Array([0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a]); + var CHUNK_WRAPPER_SIZE = 12; + var crcTable = new Int32Array(256); + for (var i = 0; i < 256; i++) { + var c = i; + for (var h = 0; h < 8; h++) { + if (c & 1) { + c = 0xedB88320 ^ c >> 1 & 0x7fffffff; + } else { + c = c >> 1 & 0x7fffffff; + } + } + crcTable[i] = c; + } + function crc32(data, start, end) { + var crc = -1; + for (var i = start; i < end; i++) { + var a = (crc ^ data[i]) & 0xff; + var b = crcTable[a]; + crc = crc >>> 8 ^ b; + } + return crc ^ -1; + } + function writePngChunk(type, body, data, offset) { + var p = offset; + var len = body.length; + data[p] = len >> 24 & 0xff; + data[p + 1] = len >> 16 & 0xff; + data[p + 2] = len >> 8 & 0xff; + data[p + 3] = len & 0xff; + p += 4; + data[p] = type.charCodeAt(0) & 0xff; + data[p + 1] = type.charCodeAt(1) & 0xff; + data[p + 2] = type.charCodeAt(2) & 0xff; + data[p + 3] = type.charCodeAt(3) & 0xff; + p += 4; + data.set(body, p); + p += body.length; + var crc = crc32(data, offset + 4, p); + data[p] = crc >> 24 & 0xff; + data[p + 1] = crc >> 16 & 0xff; + data[p + 2] = crc >> 8 & 0xff; + data[p + 3] = crc & 0xff; + } + function adler32(data, start, end) { + var a = 1; + var b = 0; + for (var i = start; i < end; ++i) { + a = (a + (data[i] & 0xff)) % 65521; + b = (b + a) % 65521; + } + return b << 16 | a; + } + function encode(imgData, kind, forceDataSchema) { + var width = imgData.width; + var height = imgData.height; + var bitDepth, colorType, lineSize; + var bytes = imgData.data; + switch (kind) { + case _util.ImageKind.GRAYSCALE_1BPP: + colorType = 0; + bitDepth = 1; + lineSize = width + 7 >> 3; + break; + case _util.ImageKind.RGB_24BPP: + colorType = 2; + bitDepth = 8; + lineSize = width * 3; + break; + case _util.ImageKind.RGBA_32BPP: + colorType = 6; + bitDepth = 8; + lineSize = width * 4; + break; + default: + throw new Error('invalid format'); + } + var literals = new Uint8Array((1 + lineSize) * height); + var offsetLiterals = 0, + offsetBytes = 0; + var y, i; + for (y = 0; y < height; ++y) { + literals[offsetLiterals++] = 0; + literals.set(bytes.subarray(offsetBytes, offsetBytes + lineSize), offsetLiterals); + offsetBytes += lineSize; + offsetLiterals += lineSize; + } + if (kind === _util.ImageKind.GRAYSCALE_1BPP) { + offsetLiterals = 0; + for (y = 0; y < height; y++) { + offsetLiterals++; + for (i = 0; i < lineSize; i++) { + literals[offsetLiterals++] ^= 0xFF; + } + } } - if (opList[x].fn === 'restore') { - opTree = tmp.pop(); - } else { - opTree.push(opList[x]); + var ihdr = new Uint8Array([width >> 24 & 0xff, width >> 16 & 0xff, width >> 8 & 0xff, width & 0xff, height >> 24 & 0xff, height >> 16 & 0xff, height >> 8 & 0xff, height & 0xff, bitDepth, colorType, 0x00, 0x00, 0x00]); + var len = literals.length; + var maxBlockLength = 0xFFFF; + var deflateBlocks = Math.ceil(len / maxBlockLength); + var idat = new Uint8Array(2 + len + deflateBlocks * 5 + 4); + var pi = 0; + idat[pi++] = 0x78; + idat[pi++] = 0x9c; + var pos = 0; + while (len > maxBlockLength) { + idat[pi++] = 0x00; + idat[pi++] = 0xff; + idat[pi++] = 0xff; + idat[pi++] = 0x00; + idat[pi++] = 0x00; + idat.set(literals.subarray(pos, pos + maxBlockLength), pi); + pi += maxBlockLength; + pos += maxBlockLength; + len -= maxBlockLength; + } + idat[pi++] = 0x01; + idat[pi++] = len & 0xff; + idat[pi++] = len >> 8 & 0xff; + idat[pi++] = ~len & 0xffff & 0xff; + idat[pi++] = (~len & 0xffff) >> 8 & 0xff; + idat.set(literals.subarray(pos), pi); + pi += literals.length - pos; + var adler = adler32(literals, 0, literals.length); + idat[pi++] = adler >> 24 & 0xff; + idat[pi++] = adler >> 16 & 0xff; + idat[pi++] = adler >> 8 & 0xff; + idat[pi++] = adler & 0xff; + var pngLength = PNG_HEADER.length + CHUNK_WRAPPER_SIZE * 3 + ihdr.length + idat.length; + var data = new Uint8Array(pngLength); + var offset = 0; + data.set(PNG_HEADER, offset); + offset += PNG_HEADER.length; + writePngChunk('IHDR', ihdr, data, offset); + offset += CHUNK_WRAPPER_SIZE + ihdr.length; + writePngChunk('IDATA', idat, data, offset); + offset += CHUNK_WRAPPER_SIZE + idat.length; + writePngChunk('IEND', new Uint8Array(0), data, offset); + return (0, _util.createObjectURL)(data, 'image/png', forceDataSchema); + } + return function convertImgDataToPng(imgData, forceDataSchema) { + var kind = imgData.kind === undefined ? _util.ImageKind.GRAYSCALE_1BPP : imgData.kind; + return encode(imgData, kind, forceDataSchema); + }; + }(); + var SVGExtraState = function SVGExtraStateClosure() { + function SVGExtraState() { + this.fontSizeScale = 1; + this.fontWeight = SVG_DEFAULTS.fontWeight; + this.fontSize = 0; + this.textMatrix = _util.IDENTITY_MATRIX; + this.fontMatrix = _util.FONT_IDENTITY_MATRIX; + this.leading = 0; + this.x = 0; + this.y = 0; + this.lineX = 0; + this.lineY = 0; + this.charSpacing = 0; + this.wordSpacing = 0; + this.textHScale = 1; + this.textRise = 0; + this.fillColor = SVG_DEFAULTS.fillColor; + this.strokeColor = '#000000'; + this.fillAlpha = 1; + this.strokeAlpha = 1; + this.lineWidth = 1; + this.lineJoin = ''; + this.lineCap = ''; + this.miterLimit = 0; + this.dashArray = []; + this.dashPhase = 0; + this.dependencies = []; + this.activeClipUrl = null; + this.clipGroup = null; + this.maskId = ''; + } + SVGExtraState.prototype = { + clone: function SVGExtraState_clone() { + return Object.create(this); + }, + setCurrentPoint: function SVGExtraState_setCurrentPoint(x, y) { + this.x = x; + this.y = y; } - } - return opTree; - } - function pf(value) { - if (value === (value | 0)) { - return value.toString(); - } - var s = value.toFixed(10); - var i = s.length - 1; - if (s[i] !== '0') { - return s; - } - do { - i--; - } while (s[i] === '0'); - return s.substr(0, s[i] === '.' ? i : i + 1); - } - function pm(m) { - if (m[4] === 0 && m[5] === 0) { - if (m[1] === 0 && m[2] === 0) { - if (m[0] === 1 && m[3] === 1) { - return ''; + }; + return SVGExtraState; + }(); + exports.SVGGraphics = SVGGraphics = function SVGGraphicsClosure() { + function opListToTree(opList) { + var opTree = []; + var tmp = []; + var opListLen = opList.length; + for (var x = 0; x < opListLen; x++) { + if (opList[x].fn === 'save') { + opTree.push({ + 'fnId': 92, + 'fn': 'group', + 'items': [] + }); + tmp.push(opTree); + opTree = opTree[opTree.length - 1].items; + continue; + } + if (opList[x].fn === 'restore') { + opTree = tmp.pop(); + } else { + opTree.push(opList[x]); } - return 'scale(' + pf(m[0]) + ' ' + pf(m[3]) + ')'; } - if (m[0] === m[3] && m[1] === -m[2]) { - var a = Math.acos(m[0]) * 180 / Math.PI; - return 'rotate(' + pf(a) + ')'; + return opTree; + } + function pf(value) { + if (value === (value | 0)) { + return value.toString(); } - } else { - if (m[0] === 1 && m[1] === 0 && m[2] === 0 && m[3] === 1) { - return 'translate(' + pf(m[4]) + ' ' + pf(m[5]) + ')'; + var s = value.toFixed(10); + var i = s.length - 1; + if (s[i] !== '0') { + return s; } - } - return 'matrix(' + pf(m[0]) + ' ' + pf(m[1]) + ' ' + pf(m[2]) + ' ' + pf(m[3]) + ' ' + pf(m[4]) + ' ' + pf(m[5]) + ')'; - } - function SVGGraphics(commonObjs, objs, forceDataSchema) { - this.current = new SVGExtraState(); - this.transformMatrix = IDENTITY_MATRIX; - this.transformStack = []; - this.extraStack = []; - this.commonObjs = commonObjs; - this.objs = objs; - this.pendingEOFill = false; - this.embedFonts = false; - this.embeddedFonts = Object.create(null); - this.cssStyle = null; - this.forceDataSchema = !!forceDataSchema; - } - var NS = 'http://www.w3.org/2000/svg'; - var XML_NS = 'http://www.w3.org/XML/1998/namespace'; - var XLINK_NS = 'http://www.w3.org/1999/xlink'; - var LINE_CAP_STYLES = ['butt', 'round', 'square']; - var LINE_JOIN_STYLES = ['miter', 'round', 'bevel']; - var clipCount = 0; - var maskCount = 0; - SVGGraphics.prototype = { - save: function SVGGraphics_save() { - this.transformStack.push(this.transformMatrix); - var old = this.current; - this.extraStack.push(old); - this.current = old.clone(); - }, - restore: function SVGGraphics_restore() { - this.transformMatrix = this.transformStack.pop(); - this.current = this.extraStack.pop(); - this.tgrp = null; - }, - group: function SVGGraphics_group(items) { - this.save(); - this.executeOpTree(items); - this.restore(); - }, - loadDependencies: function SVGGraphics_loadDependencies(operatorList) { - var fnArray = operatorList.fnArray; - var fnArrayLen = fnArray.length; - var argsArray = operatorList.argsArray; - var self = this; - for (var i = 0; i < fnArrayLen; i++) { - if (OPS.dependency === fnArray[i]) { - var deps = argsArray[i]; - for (var n = 0, nn = deps.length; n < nn; n++) { - var obj = deps[n]; - var common = obj.substring(0, 2) === 'g_'; - var promise; - if (common) { - promise = new Promise(function (resolve) { - self.commonObjs.get(obj, resolve); - }); - } else { - promise = new Promise(function (resolve) { - self.objs.get(obj, resolve); - }); + do { + i--; + } while (s[i] === '0'); + return s.substr(0, s[i] === '.' ? i : i + 1); + } + function pm(m) { + if (m[4] === 0 && m[5] === 0) { + if (m[1] === 0 && m[2] === 0) { + if (m[0] === 1 && m[3] === 1) { + return ''; + } + return 'scale(' + pf(m[0]) + ' ' + pf(m[3]) + ')'; + } + if (m[0] === m[3] && m[1] === -m[2]) { + var a = Math.acos(m[0]) * 180 / Math.PI; + return 'rotate(' + pf(a) + ')'; + } + } else { + if (m[0] === 1 && m[1] === 0 && m[2] === 0 && m[3] === 1) { + return 'translate(' + pf(m[4]) + ' ' + pf(m[5]) + ')'; + } + } + return 'matrix(' + pf(m[0]) + ' ' + pf(m[1]) + ' ' + pf(m[2]) + ' ' + pf(m[3]) + ' ' + pf(m[4]) + ' ' + pf(m[5]) + ')'; + } + function SVGGraphics(commonObjs, objs, forceDataSchema) { + this.current = new SVGExtraState(); + this.transformMatrix = _util.IDENTITY_MATRIX; + this.transformStack = []; + this.extraStack = []; + this.commonObjs = commonObjs; + this.objs = objs; + this.pendingEOFill = false; + this.embedFonts = false; + this.embeddedFonts = Object.create(null); + this.cssStyle = null; + this.forceDataSchema = !!forceDataSchema; + } + var NS = 'http://www.w3.org/2000/svg'; + var XML_NS = 'http://www.w3.org/XML/1998/namespace'; + var XLINK_NS = 'http://www.w3.org/1999/xlink'; + var LINE_CAP_STYLES = ['butt', 'round', 'square']; + var LINE_JOIN_STYLES = ['miter', 'round', 'bevel']; + var clipCount = 0; + var maskCount = 0; + SVGGraphics.prototype = { + save: function SVGGraphics_save() { + this.transformStack.push(this.transformMatrix); + var old = this.current; + this.extraStack.push(old); + this.current = old.clone(); + }, + restore: function SVGGraphics_restore() { + this.transformMatrix = this.transformStack.pop(); + this.current = this.extraStack.pop(); + this.tgrp = null; + }, + group: function SVGGraphics_group(items) { + this.save(); + this.executeOpTree(items); + this.restore(); + }, + loadDependencies: function SVGGraphics_loadDependencies(operatorList) { + var fnArray = operatorList.fnArray; + var fnArrayLen = fnArray.length; + var argsArray = operatorList.argsArray; + var self = this; + for (var i = 0; i < fnArrayLen; i++) { + if (_util.OPS.dependency === fnArray[i]) { + var deps = argsArray[i]; + for (var n = 0, nn = deps.length; n < nn; n++) { + var obj = deps[n]; + var common = obj.substring(0, 2) === 'g_'; + var promise; + if (common) { + promise = new Promise(function (resolve) { + self.commonObjs.get(obj, resolve); + }); + } else { + promise = new Promise(function (resolve) { + self.objs.get(obj, resolve); + }); + } + this.current.dependencies.push(promise); } - this.current.dependencies.push(promise); } } - } - return Promise.all(this.current.dependencies); - }, - transform: function SVGGraphics_transform(a, b, c, d, e, f) { - var transformMatrix = [a, b, c, d, e, f]; - this.transformMatrix = Util.transform(this.transformMatrix, transformMatrix); - this.tgrp = null; - }, - getSVG: function SVGGraphics_getSVG(operatorList, viewport) { - this.viewport = viewport; - var svgElement = this._initialize(viewport); - return this.loadDependencies(operatorList).then(function () { - this.transformMatrix = IDENTITY_MATRIX; - var opTree = this.convertOpList(operatorList); - this.executeOpTree(opTree); - return svgElement; - }.bind(this)); - }, - convertOpList: function SVGGraphics_convertOpList(operatorList) { - var argsArray = operatorList.argsArray; - var fnArray = operatorList.fnArray; - var fnArrayLen = fnArray.length; - var REVOPS = []; - var opList = []; - for (var op in OPS) { - REVOPS[OPS[op]] = op; - } - for (var x = 0; x < fnArrayLen; x++) { - var fnId = fnArray[x]; - opList.push({ - 'fnId': fnId, - 'fn': REVOPS[fnId], - 'args': argsArray[x] - }); - } - return opListToTree(opList); - }, - executeOpTree: function SVGGraphics_executeOpTree(opTree) { - var opTreeLen = opTree.length; - for (var x = 0; x < opTreeLen; x++) { - var fn = opTree[x].fn; - var fnId = opTree[x].fnId; - var args = opTree[x].args; - switch (fnId | 0) { - case OPS.beginText: - this.beginText(); - break; - case OPS.setLeading: - this.setLeading(args); - break; - case OPS.setLeadingMoveText: - this.setLeadingMoveText(args[0], args[1]); - break; - case OPS.setFont: - this.setFont(args); - break; - case OPS.showText: - this.showText(args[0]); - break; - case OPS.showSpacedText: - this.showText(args[0]); - break; - case OPS.endText: - this.endText(); - break; - case OPS.moveText: - this.moveText(args[0], args[1]); - break; - case OPS.setCharSpacing: - this.setCharSpacing(args[0]); - break; - case OPS.setWordSpacing: - this.setWordSpacing(args[0]); - break; - case OPS.setHScale: - this.setHScale(args[0]); - break; - case OPS.setTextMatrix: - this.setTextMatrix(args[0], args[1], args[2], args[3], args[4], args[5]); - break; - case OPS.setLineWidth: - this.setLineWidth(args[0]); - break; - case OPS.setLineJoin: - this.setLineJoin(args[0]); - break; - case OPS.setLineCap: - this.setLineCap(args[0]); - break; - case OPS.setMiterLimit: - this.setMiterLimit(args[0]); - break; - case OPS.setFillRGBColor: - this.setFillRGBColor(args[0], args[1], args[2]); - break; - case OPS.setStrokeRGBColor: - this.setStrokeRGBColor(args[0], args[1], args[2]); - break; - case OPS.setDash: - this.setDash(args[0], args[1]); - break; - case OPS.setGState: - this.setGState(args[0]); - break; - case OPS.fill: - this.fill(); - break; - case OPS.eoFill: - this.eoFill(); - break; - case OPS.stroke: - this.stroke(); - break; - case OPS.fillStroke: - this.fillStroke(); - break; - case OPS.eoFillStroke: - this.eoFillStroke(); - break; - case OPS.clip: - this.clip('nonzero'); - break; - case OPS.eoClip: - this.clip('evenodd'); - break; - case OPS.paintSolidColorImageMask: - this.paintSolidColorImageMask(); - break; - case OPS.paintJpegXObject: - this.paintJpegXObject(args[0], args[1], args[2]); - break; - case OPS.paintImageXObject: - this.paintImageXObject(args[0]); - break; - case OPS.paintInlineImageXObject: - this.paintInlineImageXObject(args[0]); - break; - case OPS.paintImageMaskXObject: - this.paintImageMaskXObject(args[0]); - break; - case OPS.paintFormXObjectBegin: - this.paintFormXObjectBegin(args[0], args[1]); - break; - case OPS.paintFormXObjectEnd: - this.paintFormXObjectEnd(); - break; - case OPS.closePath: - this.closePath(); - break; - case OPS.closeStroke: - this.closeStroke(); - break; - case OPS.closeFillStroke: - this.closeFillStroke(); - break; - case OPS.nextLine: - this.nextLine(); - break; - case OPS.transform: - this.transform(args[0], args[1], args[2], args[3], args[4], args[5]); - break; - case OPS.constructPath: - this.constructPath(args[0], args[1]); - break; - case OPS.endPath: - this.endPath(); - break; - case 92: - this.group(opTree[x].items); - break; - default: - warn('Unimplemented operator ' + fn); - break; + return Promise.all(this.current.dependencies); + }, + transform: function SVGGraphics_transform(a, b, c, d, e, f) { + var transformMatrix = [a, b, c, d, e, f]; + this.transformMatrix = _util.Util.transform(this.transformMatrix, transformMatrix); + this.tgrp = null; + }, + getSVG: function SVGGraphics_getSVG(operatorList, viewport) { + this.viewport = viewport; + var svgElement = this._initialize(viewport); + return this.loadDependencies(operatorList).then(function () { + this.transformMatrix = _util.IDENTITY_MATRIX; + var opTree = this.convertOpList(operatorList); + this.executeOpTree(opTree); + return svgElement; + }.bind(this)); + }, + convertOpList: function SVGGraphics_convertOpList(operatorList) { + var argsArray = operatorList.argsArray; + var fnArray = operatorList.fnArray; + var fnArrayLen = fnArray.length; + var REVOPS = []; + var opList = []; + for (var op in _util.OPS) { + REVOPS[_util.OPS[op]] = op; + } + for (var x = 0; x < fnArrayLen; x++) { + var fnId = fnArray[x]; + opList.push({ + 'fnId': fnId, + 'fn': REVOPS[fnId], + 'args': argsArray[x] + }); } - } - }, - setWordSpacing: function SVGGraphics_setWordSpacing(wordSpacing) { - this.current.wordSpacing = wordSpacing; - }, - setCharSpacing: function SVGGraphics_setCharSpacing(charSpacing) { - this.current.charSpacing = charSpacing; - }, - nextLine: function SVGGraphics_nextLine() { - this.moveText(0, this.current.leading); - }, - setTextMatrix: function SVGGraphics_setTextMatrix(a, b, c, d, e, f) { - var current = this.current; - this.current.textMatrix = this.current.lineMatrix = [a, b, c, d, e, f]; - this.current.x = this.current.lineX = 0; - this.current.y = this.current.lineY = 0; - current.xcoords = []; - current.tspan = document.createElementNS(NS, 'svg:tspan'); - current.tspan.setAttributeNS(null, 'font-family', current.fontFamily); - current.tspan.setAttributeNS(null, 'font-size', pf(current.fontSize) + 'px'); - current.tspan.setAttributeNS(null, 'y', pf(-current.y)); - current.txtElement = document.createElementNS(NS, 'svg:text'); - current.txtElement.appendChild(current.tspan); - }, - beginText: function SVGGraphics_beginText() { - this.current.x = this.current.lineX = 0; - this.current.y = this.current.lineY = 0; - this.current.textMatrix = IDENTITY_MATRIX; - this.current.lineMatrix = IDENTITY_MATRIX; - this.current.tspan = document.createElementNS(NS, 'svg:tspan'); - this.current.txtElement = document.createElementNS(NS, 'svg:text'); - this.current.txtgrp = document.createElementNS(NS, 'svg:g'); - this.current.xcoords = []; - }, - moveText: function SVGGraphics_moveText(x, y) { - var current = this.current; - this.current.x = this.current.lineX += x; - this.current.y = this.current.lineY += y; - current.xcoords = []; - current.tspan = document.createElementNS(NS, 'svg:tspan'); - current.tspan.setAttributeNS(null, 'font-family', current.fontFamily); - current.tspan.setAttributeNS(null, 'font-size', pf(current.fontSize) + 'px'); - current.tspan.setAttributeNS(null, 'y', pf(-current.y)); - }, - showText: function SVGGraphics_showText(glyphs) { - var current = this.current; - var font = current.font; - var fontSize = current.fontSize; - if (fontSize === 0) { - return; - } - var charSpacing = current.charSpacing; - var wordSpacing = current.wordSpacing; - var fontDirection = current.fontDirection; - var textHScale = current.textHScale * fontDirection; - var glyphsLength = glyphs.length; - var vertical = font.vertical; - var widthAdvanceScale = fontSize * current.fontMatrix[0]; - var x = 0, - i; - for (i = 0; i < glyphsLength; ++i) { - var glyph = glyphs[i]; - if (glyph === null) { - x += fontDirection * wordSpacing; - continue; - } else if (isNum(glyph)) { - x += -glyph * fontSize * 0.001; - continue; + return opListToTree(opList); + }, + executeOpTree: function SVGGraphics_executeOpTree(opTree) { + var opTreeLen = opTree.length; + for (var x = 0; x < opTreeLen; x++) { + var fn = opTree[x].fn; + var fnId = opTree[x].fnId; + var args = opTree[x].args; + switch (fnId | 0) { + case _util.OPS.beginText: + this.beginText(); + break; + case _util.OPS.setLeading: + this.setLeading(args); + break; + case _util.OPS.setLeadingMoveText: + this.setLeadingMoveText(args[0], args[1]); + break; + case _util.OPS.setFont: + this.setFont(args); + break; + case _util.OPS.showText: + this.showText(args[0]); + break; + case _util.OPS.showSpacedText: + this.showText(args[0]); + break; + case _util.OPS.endText: + this.endText(); + break; + case _util.OPS.moveText: + this.moveText(args[0], args[1]); + break; + case _util.OPS.setCharSpacing: + this.setCharSpacing(args[0]); + break; + case _util.OPS.setWordSpacing: + this.setWordSpacing(args[0]); + break; + case _util.OPS.setHScale: + this.setHScale(args[0]); + break; + case _util.OPS.setTextMatrix: + this.setTextMatrix(args[0], args[1], args[2], args[3], args[4], args[5]); + break; + case _util.OPS.setLineWidth: + this.setLineWidth(args[0]); + break; + case _util.OPS.setLineJoin: + this.setLineJoin(args[0]); + break; + case _util.OPS.setLineCap: + this.setLineCap(args[0]); + break; + case _util.OPS.setMiterLimit: + this.setMiterLimit(args[0]); + break; + case _util.OPS.setFillRGBColor: + this.setFillRGBColor(args[0], args[1], args[2]); + break; + case _util.OPS.setStrokeRGBColor: + this.setStrokeRGBColor(args[0], args[1], args[2]); + break; + case _util.OPS.setDash: + this.setDash(args[0], args[1]); + break; + case _util.OPS.setGState: + this.setGState(args[0]); + break; + case _util.OPS.fill: + this.fill(); + break; + case _util.OPS.eoFill: + this.eoFill(); + break; + case _util.OPS.stroke: + this.stroke(); + break; + case _util.OPS.fillStroke: + this.fillStroke(); + break; + case _util.OPS.eoFillStroke: + this.eoFillStroke(); + break; + case _util.OPS.clip: + this.clip('nonzero'); + break; + case _util.OPS.eoClip: + this.clip('evenodd'); + break; + case _util.OPS.paintSolidColorImageMask: + this.paintSolidColorImageMask(); + break; + case _util.OPS.paintJpegXObject: + this.paintJpegXObject(args[0], args[1], args[2]); + break; + case _util.OPS.paintImageXObject: + this.paintImageXObject(args[0]); + break; + case _util.OPS.paintInlineImageXObject: + this.paintInlineImageXObject(args[0]); + break; + case _util.OPS.paintImageMaskXObject: + this.paintImageMaskXObject(args[0]); + break; + case _util.OPS.paintFormXObjectBegin: + this.paintFormXObjectBegin(args[0], args[1]); + break; + case _util.OPS.paintFormXObjectEnd: + this.paintFormXObjectEnd(); + break; + case _util.OPS.closePath: + this.closePath(); + break; + case _util.OPS.closeStroke: + this.closeStroke(); + break; + case _util.OPS.closeFillStroke: + this.closeFillStroke(); + break; + case _util.OPS.nextLine: + this.nextLine(); + break; + case _util.OPS.transform: + this.transform(args[0], args[1], args[2], args[3], args[4], args[5]); + break; + case _util.OPS.constructPath: + this.constructPath(args[0], args[1]); + break; + case _util.OPS.endPath: + this.endPath(); + break; + case 92: + this.group(opTree[x].items); + break; + default: + (0, _util.warn)('Unimplemented operator ' + fn); + break; + } } - current.xcoords.push(current.x + x * textHScale); - var width = glyph.width; - var character = glyph.fontChar; - var charWidth = width * widthAdvanceScale + charSpacing * fontDirection; - x += charWidth; - current.tspan.textContent += character; - } - if (vertical) { - current.y -= x * textHScale; - } else { - current.x += x * textHScale; - } - current.tspan.setAttributeNS(null, 'x', current.xcoords.map(pf).join(' ')); - current.tspan.setAttributeNS(null, 'y', pf(-current.y)); - current.tspan.setAttributeNS(null, 'font-family', current.fontFamily); - current.tspan.setAttributeNS(null, 'font-size', pf(current.fontSize) + 'px'); - if (current.fontStyle !== SVG_DEFAULTS.fontStyle) { - current.tspan.setAttributeNS(null, 'font-style', current.fontStyle); - } - if (current.fontWeight !== SVG_DEFAULTS.fontWeight) { - current.tspan.setAttributeNS(null, 'font-weight', current.fontWeight); - } - if (current.fillColor !== SVG_DEFAULTS.fillColor) { - current.tspan.setAttributeNS(null, 'fill', current.fillColor); - } - current.txtElement.setAttributeNS(null, 'transform', pm(current.textMatrix) + ' scale(1, -1)'); - current.txtElement.setAttributeNS(XML_NS, 'xml:space', 'preserve'); - current.txtElement.appendChild(current.tspan); - current.txtgrp.appendChild(current.txtElement); - this._ensureTransformGroup().appendChild(current.txtElement); - }, - setLeadingMoveText: function SVGGraphics_setLeadingMoveText(x, y) { - this.setLeading(-y); - this.moveText(x, y); - }, - addFontStyle: function SVGGraphics_addFontStyle(fontObj) { - if (!this.cssStyle) { - this.cssStyle = document.createElementNS(NS, 'svg:style'); - this.cssStyle.setAttributeNS(null, 'type', 'text/css'); - this.defs.appendChild(this.cssStyle); - } - var url = createObjectURL(fontObj.data, fontObj.mimetype, this.forceDataSchema); - this.cssStyle.textContent += '@font-face { font-family: "' + fontObj.loadedName + '";' + ' src: url(' + url + '); }\n'; - }, - setFont: function SVGGraphics_setFont(details) { - var current = this.current; - var fontObj = this.commonObjs.get(details[0]); - var size = details[1]; - this.current.font = fontObj; - if (this.embedFonts && fontObj.data && !this.embeddedFonts[fontObj.loadedName]) { - this.addFontStyle(fontObj); - this.embeddedFonts[fontObj.loadedName] = fontObj; - } - current.fontMatrix = fontObj.fontMatrix ? fontObj.fontMatrix : FONT_IDENTITY_MATRIX; - var bold = fontObj.black ? fontObj.bold ? 'bolder' : 'bold' : fontObj.bold ? 'bold' : 'normal'; - var italic = fontObj.italic ? 'italic' : 'normal'; - if (size < 0) { - size = -size; - current.fontDirection = -1; - } else { - current.fontDirection = 1; - } - current.fontSize = size; - current.fontFamily = fontObj.loadedName; - current.fontWeight = bold; - current.fontStyle = italic; - current.tspan = document.createElementNS(NS, 'svg:tspan'); - current.tspan.setAttributeNS(null, 'y', pf(-current.y)); - current.xcoords = []; - }, - endText: function SVGGraphics_endText() {}, - setLineWidth: function SVGGraphics_setLineWidth(width) { - this.current.lineWidth = width; - }, - setLineCap: function SVGGraphics_setLineCap(style) { - this.current.lineCap = LINE_CAP_STYLES[style]; - }, - setLineJoin: function SVGGraphics_setLineJoin(style) { - this.current.lineJoin = LINE_JOIN_STYLES[style]; - }, - setMiterLimit: function SVGGraphics_setMiterLimit(limit) { - this.current.miterLimit = limit; - }, - setStrokeRGBColor: function SVGGraphics_setStrokeRGBColor(r, g, b) { - var color = Util.makeCssRgb(r, g, b); - this.current.strokeColor = color; - }, - setFillRGBColor: function SVGGraphics_setFillRGBColor(r, g, b) { - var color = Util.makeCssRgb(r, g, b); - this.current.fillColor = color; - this.current.tspan = document.createElementNS(NS, 'svg:tspan'); - this.current.xcoords = []; - }, - setDash: function SVGGraphics_setDash(dashArray, dashPhase) { - this.current.dashArray = dashArray; - this.current.dashPhase = dashPhase; - }, - constructPath: function SVGGraphics_constructPath(ops, args) { - var current = this.current; - var x = current.x, - y = current.y; - current.path = document.createElementNS(NS, 'svg:path'); - var d = []; - var opLength = ops.length; - for (var i = 0, j = 0; i < opLength; i++) { - switch (ops[i] | 0) { - case OPS.rectangle: - x = args[j++]; - y = args[j++]; - var width = args[j++]; - var height = args[j++]; - var xw = x + width; - var yh = y + height; - d.push('M', pf(x), pf(y), 'L', pf(xw), pf(y), 'L', pf(xw), pf(yh), 'L', pf(x), pf(yh), 'Z'); - break; - case OPS.moveTo: - x = args[j++]; - y = args[j++]; - d.push('M', pf(x), pf(y)); - break; - case OPS.lineTo: - x = args[j++]; - y = args[j++]; - d.push('L', pf(x), pf(y)); - break; - case OPS.curveTo: - x = args[j + 4]; - y = args[j + 5]; - d.push('C', pf(args[j]), pf(args[j + 1]), pf(args[j + 2]), pf(args[j + 3]), pf(x), pf(y)); - j += 6; - break; - case OPS.curveTo2: - x = args[j + 2]; - y = args[j + 3]; - d.push('C', pf(x), pf(y), pf(args[j]), pf(args[j + 1]), pf(args[j + 2]), pf(args[j + 3])); - j += 4; - break; - case OPS.curveTo3: - x = args[j + 2]; - y = args[j + 3]; - d.push('C', pf(args[j]), pf(args[j + 1]), pf(x), pf(y), pf(x), pf(y)); - j += 4; - break; - case OPS.closePath: - d.push('Z'); - break; + }, + setWordSpacing: function SVGGraphics_setWordSpacing(wordSpacing) { + this.current.wordSpacing = wordSpacing; + }, + setCharSpacing: function SVGGraphics_setCharSpacing(charSpacing) { + this.current.charSpacing = charSpacing; + }, + nextLine: function SVGGraphics_nextLine() { + this.moveText(0, this.current.leading); + }, + setTextMatrix: function SVGGraphics_setTextMatrix(a, b, c, d, e, f) { + var current = this.current; + this.current.textMatrix = this.current.lineMatrix = [a, b, c, d, e, f]; + this.current.x = this.current.lineX = 0; + this.current.y = this.current.lineY = 0; + current.xcoords = []; + current.tspan = document.createElementNS(NS, 'svg:tspan'); + current.tspan.setAttributeNS(null, 'font-family', current.fontFamily); + current.tspan.setAttributeNS(null, 'font-size', pf(current.fontSize) + 'px'); + current.tspan.setAttributeNS(null, 'y', pf(-current.y)); + current.txtElement = document.createElementNS(NS, 'svg:text'); + current.txtElement.appendChild(current.tspan); + }, + beginText: function SVGGraphics_beginText() { + this.current.x = this.current.lineX = 0; + this.current.y = this.current.lineY = 0; + this.current.textMatrix = _util.IDENTITY_MATRIX; + this.current.lineMatrix = _util.IDENTITY_MATRIX; + this.current.tspan = document.createElementNS(NS, 'svg:tspan'); + this.current.txtElement = document.createElementNS(NS, 'svg:text'); + this.current.txtgrp = document.createElementNS(NS, 'svg:g'); + this.current.xcoords = []; + }, + moveText: function SVGGraphics_moveText(x, y) { + var current = this.current; + this.current.x = this.current.lineX += x; + this.current.y = this.current.lineY += y; + current.xcoords = []; + current.tspan = document.createElementNS(NS, 'svg:tspan'); + current.tspan.setAttributeNS(null, 'font-family', current.fontFamily); + current.tspan.setAttributeNS(null, 'font-size', pf(current.fontSize) + 'px'); + current.tspan.setAttributeNS(null, 'y', pf(-current.y)); + }, + showText: function SVGGraphics_showText(glyphs) { + var current = this.current; + var font = current.font; + var fontSize = current.fontSize; + if (fontSize === 0) { + return; + } + var charSpacing = current.charSpacing; + var wordSpacing = current.wordSpacing; + var fontDirection = current.fontDirection; + var textHScale = current.textHScale * fontDirection; + var glyphsLength = glyphs.length; + var vertical = font.vertical; + var widthAdvanceScale = fontSize * current.fontMatrix[0]; + var x = 0, + i; + for (i = 0; i < glyphsLength; ++i) { + var glyph = glyphs[i]; + if (glyph === null) { + x += fontDirection * wordSpacing; + continue; + } else if ((0, _util.isNum)(glyph)) { + x += -glyph * fontSize * 0.001; + continue; + } + current.xcoords.push(current.x + x * textHScale); + var width = glyph.width; + var character = glyph.fontChar; + var charWidth = width * widthAdvanceScale + charSpacing * fontDirection; + x += charWidth; + current.tspan.textContent += character; } - } - current.path.setAttributeNS(null, 'd', d.join(' ')); - current.path.setAttributeNS(null, 'stroke-miterlimit', pf(current.miterLimit)); - current.path.setAttributeNS(null, 'stroke-linecap', current.lineCap); - current.path.setAttributeNS(null, 'stroke-linejoin', current.lineJoin); - current.path.setAttributeNS(null, 'stroke-width', pf(current.lineWidth) + 'px'); - current.path.setAttributeNS(null, 'stroke-dasharray', current.dashArray.map(pf).join(' ')); - current.path.setAttributeNS(null, 'stroke-dashoffset', pf(current.dashPhase) + 'px'); - current.path.setAttributeNS(null, 'fill', 'none'); - this._ensureTransformGroup().appendChild(current.path); - current.element = current.path; - current.setCurrentPoint(x, y); - }, - endPath: function SVGGraphics_endPath() {}, - clip: function SVGGraphics_clip(type) { - var current = this.current; - var clipId = 'clippath' + clipCount; - clipCount++; - var clipPath = document.createElementNS(NS, 'svg:clipPath'); - clipPath.setAttributeNS(null, 'id', clipId); - clipPath.setAttributeNS(null, 'transform', pm(this.transformMatrix)); - var clipElement = current.element.cloneNode(); - if (type === 'evenodd') { - clipElement.setAttributeNS(null, 'clip-rule', 'evenodd'); - } else { - clipElement.setAttributeNS(null, 'clip-rule', 'nonzero'); - } - clipPath.appendChild(clipElement); - this.defs.appendChild(clipPath); - if (current.activeClipUrl) { - current.clipGroup = null; - this.extraStack.forEach(function (prev) { - prev.clipGroup = null; - }); - } - current.activeClipUrl = 'url(#' + clipId + ')'; - this.tgrp = null; - }, - closePath: function SVGGraphics_closePath() { - var current = this.current; - var d = current.path.getAttributeNS(null, 'd'); - d += 'Z'; - current.path.setAttributeNS(null, 'd', d); - }, - setLeading: function SVGGraphics_setLeading(leading) { - this.current.leading = -leading; - }, - setTextRise: function SVGGraphics_setTextRise(textRise) { - this.current.textRise = textRise; - }, - setHScale: function SVGGraphics_setHScale(scale) { - this.current.textHScale = scale / 100; - }, - setGState: function SVGGraphics_setGState(states) { - for (var i = 0, ii = states.length; i < ii; i++) { - var state = states[i]; - var key = state[0]; - var value = state[1]; - switch (key) { - case 'LW': - this.setLineWidth(value); - break; - case 'LC': - this.setLineCap(value); - break; - case 'LJ': - this.setLineJoin(value); - break; - case 'ML': - this.setMiterLimit(value); - break; - case 'D': - this.setDash(value[0], value[1]); - break; - case 'Font': - this.setFont(value); - break; - default: - warn('Unimplemented graphic state ' + key); - break; + if (vertical) { + current.y -= x * textHScale; + } else { + current.x += x * textHScale; + } + current.tspan.setAttributeNS(null, 'x', current.xcoords.map(pf).join(' ')); + current.tspan.setAttributeNS(null, 'y', pf(-current.y)); + current.tspan.setAttributeNS(null, 'font-family', current.fontFamily); + current.tspan.setAttributeNS(null, 'font-size', pf(current.fontSize) + 'px'); + if (current.fontStyle !== SVG_DEFAULTS.fontStyle) { + current.tspan.setAttributeNS(null, 'font-style', current.fontStyle); + } + if (current.fontWeight !== SVG_DEFAULTS.fontWeight) { + current.tspan.setAttributeNS(null, 'font-weight', current.fontWeight); + } + if (current.fillColor !== SVG_DEFAULTS.fillColor) { + current.tspan.setAttributeNS(null, 'fill', current.fillColor); + } + current.txtElement.setAttributeNS(null, 'transform', pm(current.textMatrix) + ' scale(1, -1)'); + current.txtElement.setAttributeNS(XML_NS, 'xml:space', 'preserve'); + current.txtElement.appendChild(current.tspan); + current.txtgrp.appendChild(current.txtElement); + this._ensureTransformGroup().appendChild(current.txtElement); + }, + setLeadingMoveText: function SVGGraphics_setLeadingMoveText(x, y) { + this.setLeading(-y); + this.moveText(x, y); + }, + addFontStyle: function SVGGraphics_addFontStyle(fontObj) { + if (!this.cssStyle) { + this.cssStyle = document.createElementNS(NS, 'svg:style'); + this.cssStyle.setAttributeNS(null, 'type', 'text/css'); + this.defs.appendChild(this.cssStyle); + } + var url = (0, _util.createObjectURL)(fontObj.data, fontObj.mimetype, this.forceDataSchema); + this.cssStyle.textContent += '@font-face { font-family: "' + fontObj.loadedName + '";' + ' src: url(' + url + '); }\n'; + }, + setFont: function SVGGraphics_setFont(details) { + var current = this.current; + var fontObj = this.commonObjs.get(details[0]); + var size = details[1]; + this.current.font = fontObj; + if (this.embedFonts && fontObj.data && !this.embeddedFonts[fontObj.loadedName]) { + this.addFontStyle(fontObj); + this.embeddedFonts[fontObj.loadedName] = fontObj; + } + current.fontMatrix = fontObj.fontMatrix ? fontObj.fontMatrix : _util.FONT_IDENTITY_MATRIX; + var bold = fontObj.black ? fontObj.bold ? 'bolder' : 'bold' : fontObj.bold ? 'bold' : 'normal'; + var italic = fontObj.italic ? 'italic' : 'normal'; + if (size < 0) { + size = -size; + current.fontDirection = -1; + } else { + current.fontDirection = 1; + } + current.fontSize = size; + current.fontFamily = fontObj.loadedName; + current.fontWeight = bold; + current.fontStyle = italic; + current.tspan = document.createElementNS(NS, 'svg:tspan'); + current.tspan.setAttributeNS(null, 'y', pf(-current.y)); + current.xcoords = []; + }, + endText: function SVGGraphics_endText() {}, + setLineWidth: function SVGGraphics_setLineWidth(width) { + this.current.lineWidth = width; + }, + setLineCap: function SVGGraphics_setLineCap(style) { + this.current.lineCap = LINE_CAP_STYLES[style]; + }, + setLineJoin: function SVGGraphics_setLineJoin(style) { + this.current.lineJoin = LINE_JOIN_STYLES[style]; + }, + setMiterLimit: function SVGGraphics_setMiterLimit(limit) { + this.current.miterLimit = limit; + }, + setStrokeRGBColor: function SVGGraphics_setStrokeRGBColor(r, g, b) { + var color = _util.Util.makeCssRgb(r, g, b); + this.current.strokeColor = color; + }, + setFillRGBColor: function SVGGraphics_setFillRGBColor(r, g, b) { + var color = _util.Util.makeCssRgb(r, g, b); + this.current.fillColor = color; + this.current.tspan = document.createElementNS(NS, 'svg:tspan'); + this.current.xcoords = []; + }, + setDash: function SVGGraphics_setDash(dashArray, dashPhase) { + this.current.dashArray = dashArray; + this.current.dashPhase = dashPhase; + }, + constructPath: function SVGGraphics_constructPath(ops, args) { + var current = this.current; + var x = current.x, + y = current.y; + current.path = document.createElementNS(NS, 'svg:path'); + var d = []; + var opLength = ops.length; + for (var i = 0, j = 0; i < opLength; i++) { + switch (ops[i] | 0) { + case _util.OPS.rectangle: + x = args[j++]; + y = args[j++]; + var width = args[j++]; + var height = args[j++]; + var xw = x + width; + var yh = y + height; + d.push('M', pf(x), pf(y), 'L', pf(xw), pf(y), 'L', pf(xw), pf(yh), 'L', pf(x), pf(yh), 'Z'); + break; + case _util.OPS.moveTo: + x = args[j++]; + y = args[j++]; + d.push('M', pf(x), pf(y)); + break; + case _util.OPS.lineTo: + x = args[j++]; + y = args[j++]; + d.push('L', pf(x), pf(y)); + break; + case _util.OPS.curveTo: + x = args[j + 4]; + y = args[j + 5]; + d.push('C', pf(args[j]), pf(args[j + 1]), pf(args[j + 2]), pf(args[j + 3]), pf(x), pf(y)); + j += 6; + break; + case _util.OPS.curveTo2: + x = args[j + 2]; + y = args[j + 3]; + d.push('C', pf(x), pf(y), pf(args[j]), pf(args[j + 1]), pf(args[j + 2]), pf(args[j + 3])); + j += 4; + break; + case _util.OPS.curveTo3: + x = args[j + 2]; + y = args[j + 3]; + d.push('C', pf(args[j]), pf(args[j + 1]), pf(x), pf(y), pf(x), pf(y)); + j += 4; + break; + case _util.OPS.closePath: + d.push('Z'); + break; + } } - } - }, - fill: function SVGGraphics_fill() { - var current = this.current; - current.element.setAttributeNS(null, 'fill', current.fillColor); - }, - stroke: function SVGGraphics_stroke() { - var current = this.current; - current.element.setAttributeNS(null, 'stroke', current.strokeColor); - current.element.setAttributeNS(null, 'fill', 'none'); - }, - eoFill: function SVGGraphics_eoFill() { - var current = this.current; - current.element.setAttributeNS(null, 'fill', current.fillColor); - current.element.setAttributeNS(null, 'fill-rule', 'evenodd'); - }, - fillStroke: function SVGGraphics_fillStroke() { - this.stroke(); - this.fill(); - }, - eoFillStroke: function SVGGraphics_eoFillStroke() { - this.current.element.setAttributeNS(null, 'fill-rule', 'evenodd'); - this.fillStroke(); - }, - closeStroke: function SVGGraphics_closeStroke() { - this.closePath(); - this.stroke(); - }, - closeFillStroke: function SVGGraphics_closeFillStroke() { - this.closePath(); - this.fillStroke(); - }, - paintSolidColorImageMask: function SVGGraphics_paintSolidColorImageMask() { - var current = this.current; - var rect = document.createElementNS(NS, 'svg:rect'); - rect.setAttributeNS(null, 'x', '0'); - rect.setAttributeNS(null, 'y', '0'); - rect.setAttributeNS(null, 'width', '1px'); - rect.setAttributeNS(null, 'height', '1px'); - rect.setAttributeNS(null, 'fill', current.fillColor); - this._ensureTransformGroup().appendChild(rect); - }, - paintJpegXObject: function SVGGraphics_paintJpegXObject(objId, w, h) { - var imgObj = this.objs.get(objId); - var imgEl = document.createElementNS(NS, 'svg:image'); - imgEl.setAttributeNS(XLINK_NS, 'xlink:href', imgObj.src); - imgEl.setAttributeNS(null, 'width', imgObj.width + 'px'); - imgEl.setAttributeNS(null, 'height', imgObj.height + 'px'); - imgEl.setAttributeNS(null, 'x', '0'); - imgEl.setAttributeNS(null, 'y', pf(-h)); - imgEl.setAttributeNS(null, 'transform', 'scale(' + pf(1 / w) + ' ' + pf(-1 / h) + ')'); - this._ensureTransformGroup().appendChild(imgEl); - }, - paintImageXObject: function SVGGraphics_paintImageXObject(objId) { - var imgData = this.objs.get(objId); - if (!imgData) { - warn('Dependent image isn\'t ready yet'); - return; - } - this.paintInlineImageXObject(imgData); - }, - paintInlineImageXObject: function SVGGraphics_paintInlineImageXObject(imgData, mask) { - var width = imgData.width; - var height = imgData.height; - var imgSrc = convertImgDataToPng(imgData, this.forceDataSchema); - var cliprect = document.createElementNS(NS, 'svg:rect'); - cliprect.setAttributeNS(null, 'x', '0'); - cliprect.setAttributeNS(null, 'y', '0'); - cliprect.setAttributeNS(null, 'width', pf(width)); - cliprect.setAttributeNS(null, 'height', pf(height)); - this.current.element = cliprect; - this.clip('nonzero'); - var imgEl = document.createElementNS(NS, 'svg:image'); - imgEl.setAttributeNS(XLINK_NS, 'xlink:href', imgSrc); - imgEl.setAttributeNS(null, 'x', '0'); - imgEl.setAttributeNS(null, 'y', pf(-height)); - imgEl.setAttributeNS(null, 'width', pf(width) + 'px'); - imgEl.setAttributeNS(null, 'height', pf(height) + 'px'); - imgEl.setAttributeNS(null, 'transform', 'scale(' + pf(1 / width) + ' ' + pf(-1 / height) + ')'); - if (mask) { - mask.appendChild(imgEl); - } else { + current.path.setAttributeNS(null, 'd', d.join(' ')); + current.path.setAttributeNS(null, 'stroke-miterlimit', pf(current.miterLimit)); + current.path.setAttributeNS(null, 'stroke-linecap', current.lineCap); + current.path.setAttributeNS(null, 'stroke-linejoin', current.lineJoin); + current.path.setAttributeNS(null, 'stroke-width', pf(current.lineWidth) + 'px'); + current.path.setAttributeNS(null, 'stroke-dasharray', current.dashArray.map(pf).join(' ')); + current.path.setAttributeNS(null, 'stroke-dashoffset', pf(current.dashPhase) + 'px'); + current.path.setAttributeNS(null, 'fill', 'none'); + this._ensureTransformGroup().appendChild(current.path); + current.element = current.path; + current.setCurrentPoint(x, y); + }, + endPath: function SVGGraphics_endPath() {}, + clip: function SVGGraphics_clip(type) { + var current = this.current; + var clipId = 'clippath' + clipCount; + clipCount++; + var clipPath = document.createElementNS(NS, 'svg:clipPath'); + clipPath.setAttributeNS(null, 'id', clipId); + clipPath.setAttributeNS(null, 'transform', pm(this.transformMatrix)); + var clipElement = current.element.cloneNode(); + if (type === 'evenodd') { + clipElement.setAttributeNS(null, 'clip-rule', 'evenodd'); + } else { + clipElement.setAttributeNS(null, 'clip-rule', 'nonzero'); + } + clipPath.appendChild(clipElement); + this.defs.appendChild(clipPath); + if (current.activeClipUrl) { + current.clipGroup = null; + this.extraStack.forEach(function (prev) { + prev.clipGroup = null; + }); + } + current.activeClipUrl = 'url(#' + clipId + ')'; + this.tgrp = null; + }, + closePath: function SVGGraphics_closePath() { + var current = this.current; + var d = current.path.getAttributeNS(null, 'd'); + d += 'Z'; + current.path.setAttributeNS(null, 'd', d); + }, + setLeading: function SVGGraphics_setLeading(leading) { + this.current.leading = -leading; + }, + setTextRise: function SVGGraphics_setTextRise(textRise) { + this.current.textRise = textRise; + }, + setHScale: function SVGGraphics_setHScale(scale) { + this.current.textHScale = scale / 100; + }, + setGState: function SVGGraphics_setGState(states) { + for (var i = 0, ii = states.length; i < ii; i++) { + var state = states[i]; + var key = state[0]; + var value = state[1]; + switch (key) { + case 'LW': + this.setLineWidth(value); + break; + case 'LC': + this.setLineCap(value); + break; + case 'LJ': + this.setLineJoin(value); + break; + case 'ML': + this.setMiterLimit(value); + break; + case 'D': + this.setDash(value[0], value[1]); + break; + case 'Font': + this.setFont(value); + break; + default: + (0, _util.warn)('Unimplemented graphic state ' + key); + break; + } + } + }, + fill: function SVGGraphics_fill() { + var current = this.current; + current.element.setAttributeNS(null, 'fill', current.fillColor); + }, + stroke: function SVGGraphics_stroke() { + var current = this.current; + current.element.setAttributeNS(null, 'stroke', current.strokeColor); + current.element.setAttributeNS(null, 'fill', 'none'); + }, + eoFill: function SVGGraphics_eoFill() { + var current = this.current; + current.element.setAttributeNS(null, 'fill', current.fillColor); + current.element.setAttributeNS(null, 'fill-rule', 'evenodd'); + }, + fillStroke: function SVGGraphics_fillStroke() { + this.stroke(); + this.fill(); + }, + eoFillStroke: function SVGGraphics_eoFillStroke() { + this.current.element.setAttributeNS(null, 'fill-rule', 'evenodd'); + this.fillStroke(); + }, + closeStroke: function SVGGraphics_closeStroke() { + this.closePath(); + this.stroke(); + }, + closeFillStroke: function SVGGraphics_closeFillStroke() { + this.closePath(); + this.fillStroke(); + }, + paintSolidColorImageMask: function SVGGraphics_paintSolidColorImageMask() { + var current = this.current; + var rect = document.createElementNS(NS, 'svg:rect'); + rect.setAttributeNS(null, 'x', '0'); + rect.setAttributeNS(null, 'y', '0'); + rect.setAttributeNS(null, 'width', '1px'); + rect.setAttributeNS(null, 'height', '1px'); + rect.setAttributeNS(null, 'fill', current.fillColor); + this._ensureTransformGroup().appendChild(rect); + }, + paintJpegXObject: function SVGGraphics_paintJpegXObject(objId, w, h) { + var imgObj = this.objs.get(objId); + var imgEl = document.createElementNS(NS, 'svg:image'); + imgEl.setAttributeNS(XLINK_NS, 'xlink:href', imgObj.src); + imgEl.setAttributeNS(null, 'width', imgObj.width + 'px'); + imgEl.setAttributeNS(null, 'height', imgObj.height + 'px'); + imgEl.setAttributeNS(null, 'x', '0'); + imgEl.setAttributeNS(null, 'y', pf(-h)); + imgEl.setAttributeNS(null, 'transform', 'scale(' + pf(1 / w) + ' ' + pf(-1 / h) + ')'); this._ensureTransformGroup().appendChild(imgEl); - } - }, - paintImageMaskXObject: function SVGGraphics_paintImageMaskXObject(imgData) { - var current = this.current; - var width = imgData.width; - var height = imgData.height; - var fillColor = current.fillColor; - current.maskId = 'mask' + maskCount++; - var mask = document.createElementNS(NS, 'svg:mask'); - mask.setAttributeNS(null, 'id', current.maskId); - var rect = document.createElementNS(NS, 'svg:rect'); - rect.setAttributeNS(null, 'x', '0'); - rect.setAttributeNS(null, 'y', '0'); - rect.setAttributeNS(null, 'width', pf(width)); - rect.setAttributeNS(null, 'height', pf(height)); - rect.setAttributeNS(null, 'fill', fillColor); - rect.setAttributeNS(null, 'mask', 'url(#' + current.maskId + ')'); - this.defs.appendChild(mask); - this._ensureTransformGroup().appendChild(rect); - this.paintInlineImageXObject(imgData, mask); - }, - paintFormXObjectBegin: function SVGGraphics_paintFormXObjectBegin(matrix, bbox) { - if (isArray(matrix) && matrix.length === 6) { - this.transform(matrix[0], matrix[1], matrix[2], matrix[3], matrix[4], matrix[5]); - } - if (isArray(bbox) && bbox.length === 4) { - var width = bbox[2] - bbox[0]; - var height = bbox[3] - bbox[1]; + }, + paintImageXObject: function SVGGraphics_paintImageXObject(objId) { + var imgData = this.objs.get(objId); + if (!imgData) { + (0, _util.warn)('Dependent image isn\'t ready yet'); + return; + } + this.paintInlineImageXObject(imgData); + }, + paintInlineImageXObject: function SVGGraphics_paintInlineImageXObject(imgData, mask) { + var width = imgData.width; + var height = imgData.height; + var imgSrc = convertImgDataToPng(imgData, this.forceDataSchema); var cliprect = document.createElementNS(NS, 'svg:rect'); - cliprect.setAttributeNS(null, 'x', bbox[0]); - cliprect.setAttributeNS(null, 'y', bbox[1]); + cliprect.setAttributeNS(null, 'x', '0'); + cliprect.setAttributeNS(null, 'y', '0'); cliprect.setAttributeNS(null, 'width', pf(width)); cliprect.setAttributeNS(null, 'height', pf(height)); this.current.element = cliprect; this.clip('nonzero'); - this.endPath(); - } - }, - paintFormXObjectEnd: function SVGGraphics_paintFormXObjectEnd() {}, - _initialize: function SVGGraphics_initialize(viewport) { - var svg = document.createElementNS(NS, 'svg:svg'); - svg.setAttributeNS(null, 'version', '1.1'); - svg.setAttributeNS(null, 'width', viewport.width + 'px'); - svg.setAttributeNS(null, 'height', viewport.height + 'px'); - svg.setAttributeNS(null, 'preserveAspectRatio', 'none'); - svg.setAttributeNS(null, 'viewBox', '0 0 ' + viewport.width + ' ' + viewport.height); - var definitions = document.createElementNS(NS, 'svg:defs'); - svg.appendChild(definitions); - this.defs = definitions; - var rootGroup = document.createElementNS(NS, 'svg:g'); - rootGroup.setAttributeNS(null, 'transform', pm(viewport.transform)); - svg.appendChild(rootGroup); - this.svg = rootGroup; - return svg; - }, - _ensureClipGroup: function SVGGraphics_ensureClipGroup() { - if (!this.current.clipGroup) { - var clipGroup = document.createElementNS(NS, 'svg:g'); - clipGroup.setAttributeNS(null, 'clip-path', this.current.activeClipUrl); - this.svg.appendChild(clipGroup); - this.current.clipGroup = clipGroup; - } - return this.current.clipGroup; - }, - _ensureTransformGroup: function SVGGraphics_ensureTransformGroup() { - if (!this.tgrp) { - this.tgrp = document.createElementNS(NS, 'svg:g'); - this.tgrp.setAttributeNS(null, 'transform', pm(this.transformMatrix)); - if (this.current.activeClipUrl) { - this._ensureClipGroup().appendChild(this.tgrp); + var imgEl = document.createElementNS(NS, 'svg:image'); + imgEl.setAttributeNS(XLINK_NS, 'xlink:href', imgSrc); + imgEl.setAttributeNS(null, 'x', '0'); + imgEl.setAttributeNS(null, 'y', pf(-height)); + imgEl.setAttributeNS(null, 'width', pf(width) + 'px'); + imgEl.setAttributeNS(null, 'height', pf(height) + 'px'); + imgEl.setAttributeNS(null, 'transform', 'scale(' + pf(1 / width) + ' ' + pf(-1 / height) + ')'); + if (mask) { + mask.appendChild(imgEl); } else { - this.svg.appendChild(this.tgrp); + this._ensureTransformGroup().appendChild(imgEl); + } + }, + paintImageMaskXObject: function SVGGraphics_paintImageMaskXObject(imgData) { + var current = this.current; + var width = imgData.width; + var height = imgData.height; + var fillColor = current.fillColor; + current.maskId = 'mask' + maskCount++; + var mask = document.createElementNS(NS, 'svg:mask'); + mask.setAttributeNS(null, 'id', current.maskId); + var rect = document.createElementNS(NS, 'svg:rect'); + rect.setAttributeNS(null, 'x', '0'); + rect.setAttributeNS(null, 'y', '0'); + rect.setAttributeNS(null, 'width', pf(width)); + rect.setAttributeNS(null, 'height', pf(height)); + rect.setAttributeNS(null, 'fill', fillColor); + rect.setAttributeNS(null, 'mask', 'url(#' + current.maskId + ')'); + this.defs.appendChild(mask); + this._ensureTransformGroup().appendChild(rect); + this.paintInlineImageXObject(imgData, mask); + }, + paintFormXObjectBegin: function SVGGraphics_paintFormXObjectBegin(matrix, bbox) { + if ((0, _util.isArray)(matrix) && matrix.length === 6) { + this.transform(matrix[0], matrix[1], matrix[2], matrix[3], matrix[4], matrix[5]); + } + if ((0, _util.isArray)(bbox) && bbox.length === 4) { + var width = bbox[2] - bbox[0]; + var height = bbox[3] - bbox[1]; + var cliprect = document.createElementNS(NS, 'svg:rect'); + cliprect.setAttributeNS(null, 'x', bbox[0]); + cliprect.setAttributeNS(null, 'y', bbox[1]); + cliprect.setAttributeNS(null, 'width', pf(width)); + cliprect.setAttributeNS(null, 'height', pf(height)); + this.current.element = cliprect; + this.clip('nonzero'); + this.endPath(); } + }, + paintFormXObjectEnd: function SVGGraphics_paintFormXObjectEnd() {}, + _initialize: function SVGGraphics_initialize(viewport) { + var svg = document.createElementNS(NS, 'svg:svg'); + svg.setAttributeNS(null, 'version', '1.1'); + svg.setAttributeNS(null, 'width', viewport.width + 'px'); + svg.setAttributeNS(null, 'height', viewport.height + 'px'); + svg.setAttributeNS(null, 'preserveAspectRatio', 'none'); + svg.setAttributeNS(null, 'viewBox', '0 0 ' + viewport.width + ' ' + viewport.height); + var definitions = document.createElementNS(NS, 'svg:defs'); + svg.appendChild(definitions); + this.defs = definitions; + var rootGroup = document.createElementNS(NS, 'svg:g'); + rootGroup.setAttributeNS(null, 'transform', pm(viewport.transform)); + svg.appendChild(rootGroup); + this.svg = rootGroup; + return svg; + }, + _ensureClipGroup: function SVGGraphics_ensureClipGroup() { + if (!this.current.clipGroup) { + var clipGroup = document.createElementNS(NS, 'svg:g'); + clipGroup.setAttributeNS(null, 'clip-path', this.current.activeClipUrl); + this.svg.appendChild(clipGroup); + this.current.clipGroup = clipGroup; + } + return this.current.clipGroup; + }, + _ensureTransformGroup: function SVGGraphics_ensureTransformGroup() { + if (!this.tgrp) { + this.tgrp = document.createElementNS(NS, 'svg:g'); + this.tgrp.setAttributeNS(null, 'transform', pm(this.transformMatrix)); + if (this.current.activeClipUrl) { + this._ensureClipGroup().appendChild(this.tgrp); + } else { + this.svg.appendChild(this.tgrp); + } + } + return this.tgrp; } - return this.tgrp; - } - }; - return SVGGraphics; -}(); + }; + return SVGGraphics; + }(); +} exports.SVGGraphics = SVGGraphics; /***/ }), @@ -4431,12 +4413,15 @@ exports.SVGGraphics = SVGGraphics; "use strict"; -var sharedUtil = __w_pdfjs_require__(0); -var displayDOMUtils = __w_pdfjs_require__(1); -var Util = sharedUtil.Util; -var createPromiseCapability = sharedUtil.createPromiseCapability; -var CustomStyle = displayDOMUtils.CustomStyle; -var getDefaultSetting = displayDOMUtils.getDefaultSetting; +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.renderTextLayer = undefined; + +var _util = __w_pdfjs_require__(0); + +var _dom_utils = __w_pdfjs_require__(1); + var renderTextLayer = function renderTextLayerClosure() { var MAX_TEXT_DIVS_TO_RENDER = 100000; var NonWhitespaceRegexp = /\S/; @@ -4464,7 +4449,7 @@ var renderTextLayer = function renderTextLayerClosure() { task._textDivProperties.set(textDiv, textDivProperties); return; } - var tx = Util.transform(task._viewport.transform, geom.transform); + var tx = _util.Util.transform(task._viewport.transform, geom.transform); var angle = Math.atan2(tx[1], tx[0]); var style = styles[geom.fontName]; if (style.vertical) { @@ -4493,7 +4478,7 @@ var renderTextLayer = function renderTextLayerClosure() { textDivProperties.style = styleBuf.join(''); textDiv.setAttribute('style', textDivProperties.style); textDiv.textContent = geom.str; - if (getDefaultSetting('pdfBug')) { + if ((0, _dom_utils.getDefaultSetting)('pdfBug')) { textDiv.dataset.fontName = geom.fontName; } if (angle !== 0) { @@ -4519,7 +4504,7 @@ var renderTextLayer = function renderTextLayerClosure() { var m, b; if (angle !== 0) { m = [angleCos, angleSin, -angleSin, angleCos, left, top]; - b = Util.getAxialAlignedBoundingBox([0, 0, divWidth, divHeight], m); + b = _util.Util.getAxialAlignedBoundingBox([0, 0, divWidth, divHeight], m); } else { b = [left, top, left + divWidth, top + divHeight]; } @@ -4577,7 +4562,7 @@ var renderTextLayer = function renderTextLayerClosure() { } if (transform !== '') { textDivProperties.originalTransform = transform; - CustomStyle.setProp('transform', textDiv, transform); + _dom_utils.CustomStyle.setProp('transform', textDiv, transform); } task._textDivProperties.set(textDiv, textDivProperties); } @@ -4607,7 +4592,7 @@ var renderTextLayer = function renderTextLayerClosure() { var points = [[0, 0], [0, b.size[1]], [b.size[0], 0], b.size]; var ts = new Float64Array(64); points.forEach(function (p, i) { - var t = Util.applyTransform(p, m); + var t = _util.Util.applyTransform(p, m); ts[i + 0] = c && (e.left - t[0]) / c; ts[i + 4] = s && (e.top - t[1]) / s; ts[i + 8] = c && (e.right - t[0]) / c; @@ -4817,7 +4802,7 @@ var renderTextLayer = function renderTextLayerClosure() { this._textDivProperties = new WeakMap(); this._renderingDone = false; this._canceled = false; - this._capability = createPromiseCapability(); + this._capability = (0, _util.createPromiseCapability)(); this._renderTimer = null; this._bounds = []; this._enhanceTextSelection = !!enhanceTextSelection; @@ -4891,11 +4876,11 @@ var renderTextLayer = function renderTextLayerClosure() { div.setAttribute('style', divProperties.style + padding); } if (transform !== '') { - CustomStyle.setProp('transform', div, transform); + _dom_utils.CustomStyle.setProp('transform', div, transform); } } else { div.style.padding = 0; - CustomStyle.setProp('transform', div, divProperties.originalTransform || ''); + _dom_utils.CustomStyle.setProp('transform', div, divProperties.originalTransform || ''); } } } @@ -4936,8 +4921,13 @@ module.exports = g; "use strict"; -var sharedUtil = __w_pdfjs_require__(0); -var error = sharedUtil.error; +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Metadata = undefined; + +var _util = __w_pdfjs_require__(0); + function fixMetadata(meta) { return meta.replace(/>\\376\\377([^<]+)/g, function (all, codes) { var bytes = codes.replace(/\\([0-3])([0-7])([0-7])/g, function (code, d1, d2, d3) { @@ -4957,7 +4947,7 @@ function Metadata(meta) { var parser = new DOMParser(); meta = parser.parseFromString(meta, 'application/xml'); } else if (!(meta instanceof Document)) { - error('Metadata: Invalid metadata object'); + (0, _util.error)('Metadata: Invalid metadata object'); } this.metaDocument = meta; this.metadata = Object.create(null); @@ -5015,10 +5005,15 @@ exports.Metadata = Metadata; "use strict"; -var sharedUtil = __w_pdfjs_require__(0); -var displayDOMUtils = __w_pdfjs_require__(1); -var shadow = sharedUtil.shadow; -var getDefaultSetting = displayDOMUtils.getDefaultSetting; +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.WebGLUtils = undefined; + +var _dom_utils = __w_pdfjs_require__(1); + +var _util = __w_pdfjs_require__(0); + var WebGLUtils = function WebGLUtilsClosure() { function loadShader(gl, code, shaderType) { var shader = gl.createShader(shaderType); @@ -5353,7 +5348,7 @@ var WebGLUtils = function WebGLUtilsClosure() { } return { get isEnabled() { - if (getDefaultSetting('disableWebGL')) { + if ((0, _dom_utils.getDefaultSetting)('disableWebGL')) { return false; } var enabled = false; @@ -5361,7 +5356,7 @@ var WebGLUtils = function WebGLUtilsClosure() { generateGL(); enabled = !!currentGL; } catch (e) {} - return shadow(this, 'isEnabled', enabled); + return (0, _util.shadow)(this, 'isEnabled', enabled); }, composeSMask: composeSMask, drawFigures: drawFigures, @@ -5377,66 +5372,74 @@ exports.WebGLUtils = WebGLUtils; "use strict"; -var sharedUtil = __w_pdfjs_require__(0); -var displayDOMUtils = __w_pdfjs_require__(1); -var displayAPI = __w_pdfjs_require__(3); -var displayAnnotationLayer = __w_pdfjs_require__(2); -var displayTextLayer = __w_pdfjs_require__(5); -var displayMetadata = __w_pdfjs_require__(7); -var displaySVG = __w_pdfjs_require__(4); -var globalScope = sharedUtil.globalScope; -var deprecated = sharedUtil.deprecated; -var warn = sharedUtil.warn; -var LinkTarget = displayDOMUtils.LinkTarget; -var DEFAULT_LINK_REL = displayDOMUtils.DEFAULT_LINK_REL; +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.PDFJS = exports.isWorker = exports.globalScope = undefined; + +var _api = __w_pdfjs_require__(3); + +var _dom_utils = __w_pdfjs_require__(1); + +var _util = __w_pdfjs_require__(0); + +var _annotation_layer = __w_pdfjs_require__(2); + +var _metadata = __w_pdfjs_require__(7); + +var _text_layer = __w_pdfjs_require__(5); + +var _svg = __w_pdfjs_require__(4); + var isWorker = typeof window === 'undefined'; -if (!globalScope.PDFJS) { - globalScope.PDFJS = {}; +if (!_util.globalScope.PDFJS) { + _util.globalScope.PDFJS = {}; +} +var PDFJS = _util.globalScope.PDFJS; +{ + PDFJS.version = '1.8.233'; + PDFJS.build = '19321937'; } -var PDFJS = globalScope.PDFJS; -PDFJS.version = '1.8.213'; -PDFJS.build = 'c6e8ca86'; PDFJS.pdfBug = false; if (PDFJS.verbosity !== undefined) { - sharedUtil.setVerbosityLevel(PDFJS.verbosity); + (0, _util.setVerbosityLevel)(PDFJS.verbosity); } delete PDFJS.verbosity; Object.defineProperty(PDFJS, 'verbosity', { get: function get() { - return sharedUtil.getVerbosityLevel(); + return (0, _util.getVerbosityLevel)(); }, set: function set(level) { - sharedUtil.setVerbosityLevel(level); + (0, _util.setVerbosityLevel)(level); }, enumerable: true, configurable: true }); -PDFJS.VERBOSITY_LEVELS = sharedUtil.VERBOSITY_LEVELS; -PDFJS.OPS = sharedUtil.OPS; -PDFJS.UNSUPPORTED_FEATURES = sharedUtil.UNSUPPORTED_FEATURES; -PDFJS.isValidUrl = displayDOMUtils.isValidUrl; -PDFJS.shadow = sharedUtil.shadow; -PDFJS.createBlob = sharedUtil.createBlob; +PDFJS.VERBOSITY_LEVELS = _util.VERBOSITY_LEVELS; +PDFJS.OPS = _util.OPS; +PDFJS.UNSUPPORTED_FEATURES = _util.UNSUPPORTED_FEATURES; +PDFJS.isValidUrl = _dom_utils.isValidUrl; +PDFJS.shadow = _util.shadow; +PDFJS.createBlob = _util.createBlob; PDFJS.createObjectURL = function PDFJS_createObjectURL(data, contentType) { - return sharedUtil.createObjectURL(data, contentType, PDFJS.disableCreateObjectURL); + return (0, _util.createObjectURL)(data, contentType, PDFJS.disableCreateObjectURL); }; Object.defineProperty(PDFJS, 'isLittleEndian', { configurable: true, get: function PDFJS_isLittleEndian() { - var value = sharedUtil.isLittleEndian(); - return sharedUtil.shadow(PDFJS, 'isLittleEndian', value); + return (0, _util.shadow)(PDFJS, 'isLittleEndian', (0, _util.isLittleEndian)()); } }); -PDFJS.removeNullCharacters = sharedUtil.removeNullCharacters; -PDFJS.PasswordResponses = sharedUtil.PasswordResponses; -PDFJS.PasswordException = sharedUtil.PasswordException; -PDFJS.UnknownErrorException = sharedUtil.UnknownErrorException; -PDFJS.InvalidPDFException = sharedUtil.InvalidPDFException; -PDFJS.MissingPDFException = sharedUtil.MissingPDFException; -PDFJS.UnexpectedResponseException = sharedUtil.UnexpectedResponseException; -PDFJS.Util = sharedUtil.Util; -PDFJS.PageViewport = sharedUtil.PageViewport; -PDFJS.createPromiseCapability = sharedUtil.createPromiseCapability; +PDFJS.removeNullCharacters = _util.removeNullCharacters; +PDFJS.PasswordResponses = _util.PasswordResponses; +PDFJS.PasswordException = _util.PasswordException; +PDFJS.UnknownErrorException = _util.UnknownErrorException; +PDFJS.InvalidPDFException = _util.InvalidPDFException; +PDFJS.MissingPDFException = _util.MissingPDFException; +PDFJS.UnexpectedResponseException = _util.UnexpectedResponseException; +PDFJS.Util = _util.Util; +PDFJS.PageViewport = _util.PageViewport; +PDFJS.createPromiseCapability = _util.createPromiseCapability; PDFJS.maxImageSize = PDFJS.maxImageSize === undefined ? -1 : PDFJS.maxImageSize; PDFJS.cMapUrl = PDFJS.cMapUrl === undefined ? null : PDFJS.cMapUrl; PDFJS.cMapPacked = PDFJS.cMapPacked === undefined ? false : PDFJS.cMapPacked; @@ -5452,49 +5455,51 @@ PDFJS.pdfBug = PDFJS.pdfBug === undefined ? false : PDFJS.pdfBug; PDFJS.postMessageTransfers = PDFJS.postMessageTransfers === undefined ? true : PDFJS.postMessageTransfers; PDFJS.disableCreateObjectURL = PDFJS.disableCreateObjectURL === undefined ? false : PDFJS.disableCreateObjectURL; PDFJS.disableWebGL = PDFJS.disableWebGL === undefined ? true : PDFJS.disableWebGL; -PDFJS.externalLinkTarget = PDFJS.externalLinkTarget === undefined ? LinkTarget.NONE : PDFJS.externalLinkTarget; -PDFJS.externalLinkRel = PDFJS.externalLinkRel === undefined ? DEFAULT_LINK_REL : PDFJS.externalLinkRel; +PDFJS.externalLinkTarget = PDFJS.externalLinkTarget === undefined ? _dom_utils.LinkTarget.NONE : PDFJS.externalLinkTarget; +PDFJS.externalLinkRel = PDFJS.externalLinkRel === undefined ? _dom_utils.DEFAULT_LINK_REL : PDFJS.externalLinkRel; PDFJS.isEvalSupported = PDFJS.isEvalSupported === undefined ? true : PDFJS.isEvalSupported; PDFJS.pdfjsNext = PDFJS.pdfjsNext === undefined ? false : PDFJS.pdfjsNext; -var savedOpenExternalLinksInNewWindow = PDFJS.openExternalLinksInNewWindow; -delete PDFJS.openExternalLinksInNewWindow; -Object.defineProperty(PDFJS, 'openExternalLinksInNewWindow', { - get: function get() { - return PDFJS.externalLinkTarget === LinkTarget.BLANK; - }, - set: function set(value) { - if (value) { - deprecated('PDFJS.openExternalLinksInNewWindow, please use ' + '"PDFJS.externalLinkTarget = PDFJS.LinkTarget.BLANK" instead.'); - } - if (PDFJS.externalLinkTarget !== LinkTarget.NONE) { - warn('PDFJS.externalLinkTarget is already initialized'); - return; - } - PDFJS.externalLinkTarget = value ? LinkTarget.BLANK : LinkTarget.NONE; - }, - enumerable: true, - configurable: true -}); -if (savedOpenExternalLinksInNewWindow) { - PDFJS.openExternalLinksInNewWindow = savedOpenExternalLinksInNewWindow; +{ + var savedOpenExternalLinksInNewWindow = PDFJS.openExternalLinksInNewWindow; + delete PDFJS.openExternalLinksInNewWindow; + Object.defineProperty(PDFJS, 'openExternalLinksInNewWindow', { + get: function get() { + return PDFJS.externalLinkTarget === _dom_utils.LinkTarget.BLANK; + }, + set: function set(value) { + if (value) { + (0, _util.deprecated)('PDFJS.openExternalLinksInNewWindow, please use ' + '"PDFJS.externalLinkTarget = PDFJS.LinkTarget.BLANK" instead.'); + } + if (PDFJS.externalLinkTarget !== _dom_utils.LinkTarget.NONE) { + (0, _util.warn)('PDFJS.externalLinkTarget is already initialized'); + return; + } + PDFJS.externalLinkTarget = value ? _dom_utils.LinkTarget.BLANK : _dom_utils.LinkTarget.NONE; + }, + enumerable: true, + configurable: true + }); + if (savedOpenExternalLinksInNewWindow) { + PDFJS.openExternalLinksInNewWindow = savedOpenExternalLinksInNewWindow; + } } -PDFJS.getDocument = displayAPI.getDocument; -PDFJS.PDFDataRangeTransport = displayAPI.PDFDataRangeTransport; -PDFJS.PDFWorker = displayAPI.PDFWorker; +PDFJS.getDocument = _api.getDocument; +PDFJS.PDFDataRangeTransport = _api.PDFDataRangeTransport; +PDFJS.PDFWorker = _api.PDFWorker; PDFJS.hasCanvasTypedArrays = true; -PDFJS.CustomStyle = displayDOMUtils.CustomStyle; -PDFJS.LinkTarget = LinkTarget; -PDFJS.addLinkAttributes = displayDOMUtils.addLinkAttributes; -PDFJS.getFilenameFromUrl = displayDOMUtils.getFilenameFromUrl; -PDFJS.isExternalLinkTargetSet = displayDOMUtils.isExternalLinkTargetSet; -PDFJS.AnnotationLayer = displayAnnotationLayer.AnnotationLayer; -PDFJS.renderTextLayer = displayTextLayer.renderTextLayer; -PDFJS.Metadata = displayMetadata.Metadata; -PDFJS.SVGGraphics = displaySVG.SVGGraphics; -PDFJS.UnsupportedManager = displayAPI._UnsupportedManager; -exports.globalScope = globalScope; +PDFJS.CustomStyle = _dom_utils.CustomStyle; +PDFJS.LinkTarget = _dom_utils.LinkTarget; +PDFJS.addLinkAttributes = _dom_utils.addLinkAttributes; +PDFJS.getFilenameFromUrl = _dom_utils.getFilenameFromUrl; +PDFJS.isExternalLinkTargetSet = _dom_utils.isExternalLinkTargetSet; +PDFJS.AnnotationLayer = _annotation_layer.AnnotationLayer; +PDFJS.renderTextLayer = _text_layer.renderTextLayer; +PDFJS.Metadata = _metadata.Metadata; +PDFJS.SVGGraphics = _svg.SVGGraphics; +PDFJS.UnsupportedManager = _api._UnsupportedManager; +exports.globalScope = _util.globalScope; exports.isWorker = isWorker; -exports.PDFJS = globalScope.PDFJS; +exports.PDFJS = PDFJS; /***/ }), /* 10 */ @@ -5503,27 +5508,17 @@ exports.PDFJS = globalScope.PDFJS; "use strict"; -var sharedUtil = __w_pdfjs_require__(0); -var displayDOMUtils = __w_pdfjs_require__(1); -var displayPatternHelper = __w_pdfjs_require__(12); -var displayWebGL = __w_pdfjs_require__(8); -var FONT_IDENTITY_MATRIX = sharedUtil.FONT_IDENTITY_MATRIX; -var IDENTITY_MATRIX = sharedUtil.IDENTITY_MATRIX; -var ImageKind = sharedUtil.ImageKind; -var OPS = sharedUtil.OPS; -var TextRenderingMode = sharedUtil.TextRenderingMode; -var Util = sharedUtil.Util; -var assert = sharedUtil.assert; -var info = sharedUtil.info; -var isNum = sharedUtil.isNum; -var isArray = sharedUtil.isArray; -var isLittleEndian = sharedUtil.isLittleEndian; -var error = sharedUtil.error; -var shadow = sharedUtil.shadow; -var warn = sharedUtil.warn; -var TilingPattern = displayPatternHelper.TilingPattern; -var getShadingPatternFromIR = displayPatternHelper.getShadingPatternFromIR; -var WebGLUtils = displayWebGL.WebGLUtils; +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.CanvasGraphics = undefined; + +var _util = __w_pdfjs_require__(0); + +var _pattern_helper = __w_pdfjs_require__(12); + +var _webgl = __w_pdfjs_require__(8); + var MIN_FONT_SIZE = 16; var MAX_FONT_SIZE = 100; var MAX_GROUP_SIZE = 4096; @@ -5533,7 +5528,7 @@ var MAX_SIZE_TO_COMPILE = 1000; var FULL_CHUNK_HEIGHT = 16; var IsLittleEndianCached = { get value() { - return shadow(IsLittleEndianCached, 'value', isLittleEndian()); + return (0, _util.shadow)(IsLittleEndianCached, 'value', (0, _util.isLittleEndian)()); } }; function addContextCurrentTransform(ctx) { @@ -5784,9 +5779,9 @@ var CanvasExtraState = function CanvasExtraStateClosure() { this.alphaIsShape = false; this.fontSize = 0; this.fontSizeScale = 1; - this.textMatrix = IDENTITY_MATRIX; + this.textMatrix = _util.IDENTITY_MATRIX; this.textMatrixScale = 1; - this.fontMatrix = FONT_IDENTITY_MATRIX; + this.fontMatrix = _util.FONT_IDENTITY_MATRIX; this.leading = 0; this.x = 0; this.y = 0; @@ -5795,7 +5790,7 @@ var CanvasExtraState = function CanvasExtraStateClosure() { this.charSpacing = 0; this.wordSpacing = 0; this.textHScale = 1; - this.textRenderingMode = TextRenderingMode.FILL; + this.textRenderingMode = _util.TextRenderingMode.FILL; this.textRise = 0; this.fillColor = '#000000'; this.strokeColor = '#000000'; @@ -5863,7 +5858,7 @@ var CanvasGraphics = function CanvasGraphicsClosure() { var src = imgData.data; var dest = chunkImgData.data; var i, j, thisChunkHeight, elemsInThisChunk; - if (imgData.kind === ImageKind.GRAYSCALE_1BPP) { + if (imgData.kind === _util.ImageKind.GRAYSCALE_1BPP) { var srcLength = src.byteLength; var dest32 = new Uint32Array(dest.buffer, 0, dest.byteLength >> 2); var dest32DataLength = dest32.length; @@ -5905,7 +5900,7 @@ var CanvasGraphics = function CanvasGraphicsClosure() { } ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT); } - } else if (imgData.kind === ImageKind.RGBA_32BPP) { + } else if (imgData.kind === _util.ImageKind.RGBA_32BPP) { j = 0; elemsInThisChunk = width * FULL_CHUNK_HEIGHT * 4; for (i = 0; i < fullChunks; i++) { @@ -5919,7 +5914,7 @@ var CanvasGraphics = function CanvasGraphicsClosure() { dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk)); ctx.putImageData(chunkImgData, 0, j); } - } else if (imgData.kind === ImageKind.RGB_24BPP) { + } else if (imgData.kind === _util.ImageKind.RGB_24BPP) { thisChunkHeight = FULL_CHUNK_HEIGHT; elemsInThisChunk = width * thisChunkHeight; for (i = 0; i < totalChunks; i++) { @@ -5937,7 +5932,7 @@ var CanvasGraphics = function CanvasGraphicsClosure() { ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT); } } else { - error('bad image kind: ' + imgData.kind); + (0, _util.error)('bad image kind: ' + imgData.kind); } } function putBinaryImageMask(ctx, imgData) { @@ -6041,8 +6036,8 @@ var CanvasGraphics = function CanvasGraphicsClosure() { var maskCtx = smask.context; ctx.setTransform(smask.scaleX, 0, 0, smask.scaleY, smask.offsetX, smask.offsetY); var backdrop = smask.backdrop || null; - if (!smask.transferMap && WebGLUtils.isEnabled) { - var composed = WebGLUtils.composeSMask(layerCtx.canvas, mask, { + if (!smask.transferMap && _webgl.WebGLUtils.isEnabled) { + var composed = _webgl.WebGLUtils.composeSMask(layerCtx.canvas, mask, { subtype: smask.subtype, backdrop: backdrop }); @@ -6103,7 +6098,7 @@ var CanvasGraphics = function CanvasGraphicsClosure() { return i; } fnId = fnArray[i]; - if (fnId !== OPS.dependency) { + if (fnId !== _util.OPS.dependency) { this[fnId].apply(this, argsArray[i]); } else { var deps = argsArray[i]; @@ -6144,7 +6139,7 @@ var CanvasGraphics = function CanvasGraphicsClosure() { this.transparentCanvas = null; } this.cachedCanvases.clear(); - WebGLUtils.clear(); + _webgl.WebGLUtils.clear(); if (this.imageLayer) { this.imageLayer.endLayout(); } @@ -6257,7 +6252,7 @@ var CanvasGraphics = function CanvasGraphicsClosure() { this.ctx.save(); copyCtxState(groupCtx, this.ctx); this.current.resumeSMaskCtx = groupCtx; - var deltaTransform = Util.transform(this.current.activeSMask.startTransformInverse, groupCtx.mozCurrentTransform); + var deltaTransform = _util.Util.transform(this.current.activeSMask.startTransformInverse, groupCtx.mozCurrentTransform); this.ctx.transform.apply(this.ctx, deltaTransform); groupCtx.save(); groupCtx.setTransform(1, 0, 0, 1, 0, 0); @@ -6278,7 +6273,7 @@ var CanvasGraphics = function CanvasGraphicsClosure() { composeSMask(this.ctx, this.current.activeSMask, groupCtx); this.ctx.restore(); copyCtxState(groupCtx, this.ctx); - var deltaTransform = Util.transform(this.current.activeSMask.startTransformInverse, groupCtx.mozCurrentTransform); + var deltaTransform = _util.Util.transform(this.current.activeSMask.startTransformInverse, groupCtx.mozCurrentTransform); this.ctx.transform.apply(this.ctx, deltaTransform); }, save: function CanvasGraphics_save() { @@ -6313,7 +6308,7 @@ var CanvasGraphics = function CanvasGraphicsClosure() { y = current.y; for (var i = 0, j = 0, ii = ops.length; i < ii; i++) { switch (ops[i] | 0) { - case OPS.rectangle: + case _util.OPS.rectangle: x = args[j++]; y = args[j++]; var width = args[j++]; @@ -6333,35 +6328,35 @@ var CanvasGraphics = function CanvasGraphicsClosure() { this.ctx.lineTo(x, y); this.ctx.closePath(); break; - case OPS.moveTo: + case _util.OPS.moveTo: x = args[j++]; y = args[j++]; ctx.moveTo(x, y); break; - case OPS.lineTo: + case _util.OPS.lineTo: x = args[j++]; y = args[j++]; ctx.lineTo(x, y); break; - case OPS.curveTo: + case _util.OPS.curveTo: x = args[j + 4]; y = args[j + 5]; ctx.bezierCurveTo(args[j], args[j + 1], args[j + 2], args[j + 3], x, y); j += 6; break; - case OPS.curveTo2: + case _util.OPS.curveTo2: ctx.bezierCurveTo(x, y, args[j], args[j + 1], args[j + 2], args[j + 3]); x = args[j + 2]; y = args[j + 3]; j += 4; break; - case OPS.curveTo3: + case _util.OPS.curveTo3: x = args[j + 2]; y = args[j + 3]; ctx.bezierCurveTo(args[j], args[j + 1], x, y, x, y); j += 4; break; - case OPS.closePath: + case _util.OPS.closePath: ctx.closePath(); break; } @@ -6453,7 +6448,7 @@ var CanvasGraphics = function CanvasGraphicsClosure() { this.pendingClip = EO_CLIP; }, beginText: function CanvasGraphics_beginText() { - this.current.textMatrix = IDENTITY_MATRIX; + this.current.textMatrix = _util.IDENTITY_MATRIX; this.current.textMatrixScale = 1; this.current.x = this.current.lineX = 0; this.current.y = this.current.lineY = 0; @@ -6494,11 +6489,11 @@ var CanvasGraphics = function CanvasGraphicsClosure() { var fontObj = this.commonObjs.get(fontRefName); var current = this.current; if (!fontObj) { - error('Can\'t find font for ' + fontRefName); + (0, _util.error)('Can\'t find font for ' + fontRefName); } - current.fontMatrix = fontObj.fontMatrix ? fontObj.fontMatrix : FONT_IDENTITY_MATRIX; + current.fontMatrix = fontObj.fontMatrix ? fontObj.fontMatrix : _util.FONT_IDENTITY_MATRIX; if (current.fontMatrix[0] === 0 || current.fontMatrix[3] === 0) { - warn('Invalid font matrix for font ' + fontRefName); + (0, _util.warn)('Invalid font matrix for font ' + fontRefName); } if (size < 0) { size = -size; @@ -6549,8 +6544,8 @@ var CanvasGraphics = function CanvasGraphicsClosure() { var font = current.font; var textRenderingMode = current.textRenderingMode; var fontSize = current.fontSize / current.fontSizeScale; - var fillStrokeMode = textRenderingMode & TextRenderingMode.FILL_STROKE_MASK; - var isAddToPathSet = !!(textRenderingMode & TextRenderingMode.ADD_TO_PATH_FLAG); + var fillStrokeMode = textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK; + var isAddToPathSet = !!(textRenderingMode & _util.TextRenderingMode.ADD_TO_PATH_FLAG); var addToPath; if (font.disableFontFace || isAddToPathSet) { addToPath = font.getPathGenerator(this.commonObjs, character); @@ -6560,18 +6555,18 @@ var CanvasGraphics = function CanvasGraphicsClosure() { ctx.translate(x, y); ctx.beginPath(); addToPath(ctx, fontSize); - if (fillStrokeMode === TextRenderingMode.FILL || fillStrokeMode === TextRenderingMode.FILL_STROKE) { + if (fillStrokeMode === _util.TextRenderingMode.FILL || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) { ctx.fill(); } - if (fillStrokeMode === TextRenderingMode.STROKE || fillStrokeMode === TextRenderingMode.FILL_STROKE) { + if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) { ctx.stroke(); } ctx.restore(); } else { - if (fillStrokeMode === TextRenderingMode.FILL || fillStrokeMode === TextRenderingMode.FILL_STROKE) { + if (fillStrokeMode === _util.TextRenderingMode.FILL || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) { ctx.fillText(character, x, y); } - if (fillStrokeMode === TextRenderingMode.STROKE || fillStrokeMode === TextRenderingMode.FILL_STROKE) { + if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) { ctx.strokeText(character, x, y); } } @@ -6598,7 +6593,7 @@ var CanvasGraphics = function CanvasGraphicsClosure() { break; } } - return shadow(this, 'isFontSubpixelAAEnabled', enabled); + return (0, _util.shadow)(this, 'isFontSubpixelAAEnabled', enabled); }, showText: function CanvasGraphics_showText(glyphs) { var current = this.current; @@ -6621,7 +6616,7 @@ var CanvasGraphics = function CanvasGraphicsClosure() { var spacingDir = vertical ? 1 : -1; var defaultVMetrics = font.defaultVMetrics; var widthAdvanceScale = fontSize * current.fontMatrix[0]; - var simpleFillText = current.textRenderingMode === TextRenderingMode.FILL && !font.disableFontFace; + var simpleFillText = current.textRenderingMode === _util.TextRenderingMode.FILL && !font.disableFontFace; ctx.save(); ctx.transform.apply(ctx, current.textMatrix); ctx.translate(current.x, current.y + current.textRise); @@ -6636,8 +6631,8 @@ var CanvasGraphics = function CanvasGraphicsClosure() { var lineWidth = current.lineWidth; var scale = current.textMatrixScale; if (scale === 0 || lineWidth === 0) { - var fillStrokeMode = current.textRenderingMode & TextRenderingMode.FILL_STROKE_MASK; - if (fillStrokeMode === TextRenderingMode.STROKE || fillStrokeMode === TextRenderingMode.FILL_STROKE) { + var fillStrokeMode = current.textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK; + if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) { this.cachedGetSinglePixelWidth = null; lineWidth = this.getSinglePixelWidth() * MIN_WIDTH_FACTOR; } @@ -6653,7 +6648,7 @@ var CanvasGraphics = function CanvasGraphicsClosure() { i; for (i = 0; i < glyphsLength; ++i) { var glyph = glyphs[i]; - if (isNum(glyph)) { + if ((0, _util.isNum)(glyph)) { x += spacingDir * glyph * fontSize / 1000; continue; } @@ -6723,9 +6718,9 @@ var CanvasGraphics = function CanvasGraphicsClosure() { var charSpacing = current.charSpacing; var wordSpacing = current.wordSpacing; var textHScale = current.textHScale * fontDirection; - var fontMatrix = current.fontMatrix || FONT_IDENTITY_MATRIX; + var fontMatrix = current.fontMatrix || _util.FONT_IDENTITY_MATRIX; var glyphsLength = glyphs.length; - var isTextInvisible = current.textRenderingMode === TextRenderingMode.INVISIBLE; + var isTextInvisible = current.textRenderingMode === _util.TextRenderingMode.INVISIBLE; var i, glyph, width, spacingLength; if (isTextInvisible || fontSize === 0) { return; @@ -6737,7 +6732,7 @@ var CanvasGraphics = function CanvasGraphicsClosure() { ctx.scale(textHScale, fontDirection); for (i = 0; i < glyphsLength; ++i) { glyph = glyphs[i]; - if (isNum(glyph)) { + if ((0, _util.isNum)(glyph)) { spacingLength = spacingDir * glyph * fontSize / 1000; this.ctx.translate(spacingLength, 0); current.x += spacingLength * textHScale; @@ -6746,7 +6741,7 @@ var CanvasGraphics = function CanvasGraphicsClosure() { var spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing; var operatorList = font.charProcOperatorList[glyph.operatorListId]; if (!operatorList) { - warn('Type3 character \"' + glyph.operatorListId + '\" is not available'); + (0, _util.warn)('Type3 character \"' + glyph.operatorListId + '\" is not available'); continue; } this.processingType3 = glyph; @@ -6755,7 +6750,7 @@ var CanvasGraphics = function CanvasGraphicsClosure() { ctx.transform.apply(ctx, fontMatrix); this.executeOperatorList(operatorList); this.restore(); - var transformed = Util.applyTransform([glyph.width, 0], fontMatrix); + var transformed = _util.Util.applyTransform([glyph.width, 0], fontMatrix); width = transformed[0] * fontSize + spacing; ctx.translate(width, 0); current.x += width * textHScale; @@ -6780,9 +6775,9 @@ var CanvasGraphics = function CanvasGraphicsClosure() { return new CanvasGraphics(ctx, self.commonObjs, self.objs, self.canvasFactory); } }; - pattern = new TilingPattern(IR, color, this.ctx, canvasGraphicsFactory, baseTransform); + pattern = new _pattern_helper.TilingPattern(IR, color, this.ctx, canvasGraphicsFactory, baseTransform); } else { - pattern = getShadingPatternFromIR(IR); + pattern = (0, _pattern_helper.getShadingPatternFromIR)(IR); } return pattern; }, @@ -6794,12 +6789,12 @@ var CanvasGraphics = function CanvasGraphicsClosure() { this.current.patternFill = true; }, setStrokeRGBColor: function CanvasGraphics_setStrokeRGBColor(r, g, b) { - var color = Util.makeCssRgb(r, g, b); + var color = _util.Util.makeCssRgb(r, g, b); this.ctx.strokeStyle = color; this.current.strokeColor = color; }, setFillRGBColor: function CanvasGraphics_setFillRGBColor(r, g, b) { - var color = Util.makeCssRgb(r, g, b); + var color = _util.Util.makeCssRgb(r, g, b); this.ctx.fillStyle = color; this.current.fillColor = color; this.current.patternFill = false; @@ -6807,17 +6802,17 @@ var CanvasGraphics = function CanvasGraphicsClosure() { shadingFill: function CanvasGraphics_shadingFill(patternIR) { var ctx = this.ctx; this.save(); - var pattern = getShadingPatternFromIR(patternIR); + var pattern = (0, _pattern_helper.getShadingPatternFromIR)(patternIR); ctx.fillStyle = pattern.getPattern(ctx, this, true); var inv = ctx.mozCurrentTransformInverse; if (inv) { var canvas = ctx.canvas; var width = canvas.width; var height = canvas.height; - var bl = Util.applyTransform([0, 0], inv); - var br = Util.applyTransform([0, height], inv); - var ul = Util.applyTransform([width, 0], inv); - var ur = Util.applyTransform([width, height], inv); + var bl = _util.Util.applyTransform([0, 0], inv); + var br = _util.Util.applyTransform([0, height], inv); + var ul = _util.Util.applyTransform([width, 0], inv); + var ur = _util.Util.applyTransform([width, height], inv); var x0 = Math.min(bl[0], br[0], ul[0], ur[0]); var y0 = Math.min(bl[1], br[1], ul[1], ur[1]); var x1 = Math.max(bl[0], br[0], ul[0], ur[0]); @@ -6829,19 +6824,19 @@ var CanvasGraphics = function CanvasGraphicsClosure() { this.restore(); }, beginInlineImage: function CanvasGraphics_beginInlineImage() { - error('Should not call beginInlineImage'); + (0, _util.error)('Should not call beginInlineImage'); }, beginImageData: function CanvasGraphics_beginImageData() { - error('Should not call beginImageData'); + (0, _util.error)('Should not call beginImageData'); }, paintFormXObjectBegin: function CanvasGraphics_paintFormXObjectBegin(matrix, bbox) { this.save(); this.baseTransformStack.push(this.baseTransform); - if (isArray(matrix) && matrix.length === 6) { + if ((0, _util.isArray)(matrix) && matrix.length === 6) { this.transform.apply(this, matrix); } this.baseTransform = this.ctx.mozCurrentTransform; - if (isArray(bbox) && bbox.length === 4) { + if ((0, _util.isArray)(bbox) && bbox.length === 4) { var width = bbox[2] - bbox[0]; var height = bbox[3] - bbox[1]; this.ctx.rect(bbox[0], bbox[1], width, height); @@ -6857,19 +6852,19 @@ var CanvasGraphics = function CanvasGraphicsClosure() { this.save(); var currentCtx = this.ctx; if (!group.isolated) { - info('TODO: Support non-isolated groups.'); + (0, _util.info)('TODO: Support non-isolated groups.'); } if (group.knockout) { - warn('Knockout groups not supported.'); + (0, _util.warn)('Knockout groups not supported.'); } var currentTransform = currentCtx.mozCurrentTransform; if (group.matrix) { currentCtx.transform.apply(currentCtx, group.matrix); } - assert(group.bbox, 'Bounding box is required.'); - var bounds = Util.getAxialAlignedBoundingBox(group.bbox, currentCtx.mozCurrentTransform); + (0, _util.assert)(group.bbox, 'Bounding box is required.'); + var bounds = _util.Util.getAxialAlignedBoundingBox(group.bbox, currentCtx.mozCurrentTransform); var canvasBounds = [0, 0, currentCtx.canvas.width, currentCtx.canvas.height]; - bounds = Util.intersect(bounds, canvasBounds) || [0, 0, 0, 0]; + bounds = _util.Util.intersect(bounds, canvasBounds) || [0, 0, 0, 0]; var offsetX = Math.floor(bounds[0]); var offsetY = Math.floor(bounds[1]); var drawnWidth = Math.max(Math.ceil(bounds[2]) - offsetX, 1); @@ -6946,7 +6941,7 @@ var CanvasGraphics = function CanvasGraphicsClosure() { }, beginAnnotation: function CanvasGraphics_beginAnnotation(rect, transform, matrix) { this.save(); - if (isArray(rect) && rect.length === 4) { + if ((0, _util.isArray)(rect) && rect.length === 4) { var width = rect[2] - rect[0]; var height = rect[3] - rect[1]; this.ctx.rect(rect[0], rect[1], width, height); @@ -6962,7 +6957,7 @@ var CanvasGraphics = function CanvasGraphicsClosure() { paintJpegXObject: function CanvasGraphics_paintJpegXObject(objId, w, h) { var domImage = this.objs.get(objId); if (!domImage) { - warn('Dependent image isn\'t ready yet'); + (0, _util.warn)('Dependent image isn\'t ready yet'); return; } this.save(); @@ -7062,7 +7057,7 @@ var CanvasGraphics = function CanvasGraphicsClosure() { paintImageXObject: function CanvasGraphics_paintImageXObject(objId) { var imgData = this.objs.get(objId); if (!imgData) { - warn('Dependent image isn\'t ready yet'); + (0, _util.warn)('Dependent image isn\'t ready yet'); return; } this.paintInlineImageXObject(imgData); @@ -7070,7 +7065,7 @@ var CanvasGraphics = function CanvasGraphicsClosure() { paintImageXObjectRepeat: function CanvasGraphics_paintImageXObjectRepeat(objId, scaleX, scaleY, positions) { var imgData = this.objs.get(objId); if (!imgData) { - warn('Dependent image isn\'t ready yet'); + (0, _util.warn)('Dependent image isn\'t ready yet'); return; } var width = imgData.width; @@ -7175,7 +7170,7 @@ var CanvasGraphics = function CanvasGraphicsClosure() { this.ctx.fillRect(0, 0, 1, 1); }, paintXObject: function CanvasGraphics_paintXObject() { - warn('Unsupported \'paintXObject\' command.'); + (0, _util.warn)('Unsupported \'paintXObject\' command.'); }, markPoint: function CanvasGraphics_markPoint(tag) {}, markPointProps: function CanvasGraphics_markPointProps(tag, properties) {}, @@ -7210,8 +7205,8 @@ var CanvasGraphics = function CanvasGraphicsClosure() { return [transform[0] * x + transform[2] * y + transform[4], transform[1] * x + transform[3] * y + transform[5]]; } }; - for (var op in OPS) { - CanvasGraphics.prototype[OPS[op]] = CanvasGraphics.prototype[op]; + for (var op in _util.OPS) { + CanvasGraphics.prototype[_util.OPS[op]] = CanvasGraphics.prototype[op]; } return CanvasGraphics; }(); @@ -7224,12 +7219,13 @@ exports.CanvasGraphics = CanvasGraphics; "use strict"; -var sharedUtil = __w_pdfjs_require__(0); -var assert = sharedUtil.assert; -var bytesToString = sharedUtil.bytesToString; -var string32 = sharedUtil.string32; -var shadow = sharedUtil.shadow; -var warn = sharedUtil.warn; +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.FontLoader = exports.FontFaceObject = undefined; + +var _util = __w_pdfjs_require__(0); + function FontLoader(docId) { this.docId = docId; this.styleElement = null; @@ -7262,170 +7258,176 @@ FontLoader.prototype = { this.nativeFontFaces.length = 0; } }; -var getLoadTestFont = function getLoadTestFont() { - return atob('T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQAFQ' + 'AABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAAALwA' + 'AAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgAAAAGbm' + 'FtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1AAsD6AAA' + 'AADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD6AAAAAAD6A' + 'ABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACMAooCvAAAAeAA' + 'MQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4DIP84AFoDIQAAAA' + 'AAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAAAAEAAQAAAAEAAAAA' + 'AAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUAAQAAAAEAAAAAAAYAAQ' + 'AAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgABAAMAAQQJAAMAAgABAAMA' + 'AQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABYAAAAAAAAAwAAAAMAAAAcAA' + 'EAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAAAC7////TAAEAAAAAAAABBgAA' + 'AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAA' + 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' + 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' + 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' + 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAA' + 'AAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAAAAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgc' + 'A/gXBIwMAYuL+nz5tQXkD5j3CBLnEQACAQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWF' + 'hYWFhYWFhYAAABAQAADwACAQEEE/t3Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQA' + 'AAAAAAABAAAAAMmJbzEAAAAAzgTjFQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAg' + 'ABAAAAAAAAAAAD6AAAAAAAAA=='); -}; -Object.defineProperty(FontLoader.prototype, 'loadTestFont', { - get: function get() { - return shadow(this, 'loadTestFont', getLoadTestFont()); - }, - configurable: true -}); -FontLoader.prototype.addNativeFontFace = function fontLoader_addNativeFontFace(nativeFontFace) { - this.nativeFontFaces.push(nativeFontFace); - document.fonts.add(nativeFontFace); -}; -FontLoader.prototype.bind = function fontLoaderBind(fonts, callback) { - var rules = []; - var fontsToLoad = []; - var fontLoadPromises = []; - var getNativeFontPromise = function getNativeFontPromise(nativeFontFace) { - return nativeFontFace.loaded.catch(function (e) { - warn('Failed to load font "' + nativeFontFace.family + '": ' + e); - }); +{ + var getLoadTestFont = function getLoadTestFont() { + return atob('T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQAFQ' + 'AABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAAALwA' + 'AAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgAAAAGbm' + 'FtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1AAsD6AAA' + 'AADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD6AAAAAAD6A' + 'ABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACMAooCvAAAAeAA' + 'MQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4DIP84AFoDIQAAAA' + 'AAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAAAAEAAQAAAAEAAAAA' + 'AAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUAAQAAAAEAAAAAAAYAAQ' + 'AAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgABAAMAAQQJAAMAAgABAAMA' + 'AQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABYAAAAAAAAAwAAAAMAAAAcAA' + 'EAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAAAC7////TAAEAAAAAAAABBgAA' + 'AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAA' + 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' + 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' + 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' + 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAA' + 'AAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAAAAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgc' + 'A/gXBIwMAYuL+nz5tQXkD5j3CBLnEQACAQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWF' + 'hYWFhYWFhYAAABAQAADwACAQEEE/t3Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQA' + 'AAAAAAABAAAAAMmJbzEAAAAAzgTjFQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAg' + 'ABAAAAAAAAAAAD6AAAAAAAAA=='); }; - var isFontLoadingAPISupported = FontLoader.isFontLoadingAPISupported && !FontLoader.isSyncFontLoadingSupported; - for (var i = 0, ii = fonts.length; i < ii; i++) { - var font = fonts[i]; - if (font.attached || font.loading === false) { - continue; + Object.defineProperty(FontLoader.prototype, 'loadTestFont', { + get: function get() { + return (0, _util.shadow)(this, 'loadTestFont', getLoadTestFont()); + }, + configurable: true + }); + FontLoader.prototype.addNativeFontFace = function fontLoader_addNativeFontFace(nativeFontFace) { + this.nativeFontFaces.push(nativeFontFace); + document.fonts.add(nativeFontFace); + }; + FontLoader.prototype.bind = function fontLoaderBind(fonts, callback) { + var rules = []; + var fontsToLoad = []; + var fontLoadPromises = []; + var getNativeFontPromise = function getNativeFontPromise(nativeFontFace) { + return nativeFontFace.loaded.catch(function (e) { + (0, _util.warn)('Failed to load font "' + nativeFontFace.family + '": ' + e); + }); + }; + var isFontLoadingAPISupported = FontLoader.isFontLoadingAPISupported && !FontLoader.isSyncFontLoadingSupported; + for (var i = 0, ii = fonts.length; i < ii; i++) { + var font = fonts[i]; + if (font.attached || font.loading === false) { + continue; + } + font.attached = true; + if (isFontLoadingAPISupported) { + var nativeFontFace = font.createNativeFontFace(); + if (nativeFontFace) { + this.addNativeFontFace(nativeFontFace); + fontLoadPromises.push(getNativeFontPromise(nativeFontFace)); + } + } else { + var rule = font.createFontFaceRule(); + if (rule) { + this.insertRule(rule); + rules.push(rule); + fontsToLoad.push(font); + } + } } - font.attached = true; + var request = this.queueLoadingCallback(callback); if (isFontLoadingAPISupported) { - var nativeFontFace = font.createNativeFontFace(); - if (nativeFontFace) { - this.addNativeFontFace(nativeFontFace); - fontLoadPromises.push(getNativeFontPromise(nativeFontFace)); - } + Promise.all(fontLoadPromises).then(function () { + request.complete(); + }); + } else if (rules.length > 0 && !FontLoader.isSyncFontLoadingSupported) { + this.prepareFontLoadEvent(rules, fontsToLoad, request); } else { - var rule = font.createFontFaceRule(); - if (rule) { - this.insertRule(rule); - rules.push(rule); - fontsToLoad.push(font); - } + request.complete(); } - } - var request = this.queueLoadingCallback(callback); - if (isFontLoadingAPISupported) { - Promise.all(fontLoadPromises).then(function () { + }; + FontLoader.prototype.queueLoadingCallback = function FontLoader_queueLoadingCallback(callback) { + function LoadLoader_completeRequest() { + (0, _util.assert)(!request.end, 'completeRequest() cannot be called twice'); + request.end = Date.now(); + while (context.requests.length > 0 && context.requests[0].end) { + var otherRequest = context.requests.shift(); + setTimeout(otherRequest.callback, 0); + } + } + var context = this.loadingContext; + var requestId = 'pdfjs-font-loading-' + context.nextRequestId++; + var request = { + id: requestId, + complete: LoadLoader_completeRequest, + callback: callback, + started: Date.now() + }; + context.requests.push(request); + return request; + }; + FontLoader.prototype.prepareFontLoadEvent = function fontLoaderPrepareFontLoadEvent(rules, fonts, request) { + function int32(data, offset) { + return data.charCodeAt(offset) << 24 | data.charCodeAt(offset + 1) << 16 | data.charCodeAt(offset + 2) << 8 | data.charCodeAt(offset + 3) & 0xff; + } + function spliceString(s, offset, remove, insert) { + var chunk1 = s.substr(0, offset); + var chunk2 = s.substr(offset + remove); + return chunk1 + insert + chunk2; + } + var i, ii; + var canvas = document.createElement('canvas'); + canvas.width = 1; + canvas.height = 1; + var ctx = canvas.getContext('2d'); + var called = 0; + function isFontReady(name, callback) { + called++; + if (called > 30) { + (0, _util.warn)('Load test font never loaded.'); + callback(); + return; + } + ctx.font = '30px ' + name; + ctx.fillText('.', 0, 20); + var imageData = ctx.getImageData(0, 0, 1, 1); + if (imageData.data[3] > 0) { + callback(); + return; + } + setTimeout(isFontReady.bind(null, name, callback)); + } + var loadTestFontId = 'lt' + Date.now() + this.loadTestFontId++; + var data = this.loadTestFont; + var COMMENT_OFFSET = 976; + data = spliceString(data, COMMENT_OFFSET, loadTestFontId.length, loadTestFontId); + var CFF_CHECKSUM_OFFSET = 16; + var XXXX_VALUE = 0x58585858; + var checksum = int32(data, CFF_CHECKSUM_OFFSET); + for (i = 0, ii = loadTestFontId.length - 3; i < ii; i += 4) { + checksum = checksum - XXXX_VALUE + int32(loadTestFontId, i) | 0; + } + if (i < loadTestFontId.length) { + checksum = checksum - XXXX_VALUE + int32(loadTestFontId + 'XXX', i) | 0; + } + data = spliceString(data, CFF_CHECKSUM_OFFSET, 4, (0, _util.string32)(checksum)); + var url = 'url(data:font/opentype;base64,' + btoa(data) + ');'; + var rule = '@font-face { font-family:"' + loadTestFontId + '";src:' + url + '}'; + this.insertRule(rule); + var names = []; + for (i = 0, ii = fonts.length; i < ii; i++) { + names.push(fonts[i].loadedName); + } + names.push(loadTestFontId); + var div = document.createElement('div'); + div.setAttribute('style', 'visibility: hidden;' + 'width: 10px; height: 10px;' + 'position: absolute; top: 0px; left: 0px;'); + for (i = 0, ii = names.length; i < ii; ++i) { + var span = document.createElement('span'); + span.textContent = 'Hi'; + span.style.fontFamily = names[i]; + div.appendChild(span); + } + document.body.appendChild(div); + isFontReady(loadTestFontId, function () { + document.body.removeChild(div); request.complete(); }); - } else if (rules.length > 0 && !FontLoader.isSyncFontLoadingSupported) { - this.prepareFontLoadEvent(rules, fontsToLoad, request); - } else { - request.complete(); - } -}; -FontLoader.prototype.queueLoadingCallback = function FontLoader_queueLoadingCallback(callback) { - function LoadLoader_completeRequest() { - assert(!request.end, 'completeRequest() cannot be called twice'); - request.end = Date.now(); - while (context.requests.length > 0 && context.requests[0].end) { - var otherRequest = context.requests.shift(); - setTimeout(otherRequest.callback, 0); - } - } - var context = this.loadingContext; - var requestId = 'pdfjs-font-loading-' + context.nextRequestId++; - var request = { - id: requestId, - complete: LoadLoader_completeRequest, - callback: callback, - started: Date.now() }; - context.requests.push(request); - return request; -}; -FontLoader.prototype.prepareFontLoadEvent = function fontLoaderPrepareFontLoadEvent(rules, fonts, request) { - function int32(data, offset) { - return data.charCodeAt(offset) << 24 | data.charCodeAt(offset + 1) << 16 | data.charCodeAt(offset + 2) << 8 | data.charCodeAt(offset + 3) & 0xff; - } - function spliceString(s, offset, remove, insert) { - var chunk1 = s.substr(0, offset); - var chunk2 = s.substr(offset + remove); - return chunk1 + insert + chunk2; - } - var i, ii; - var canvas = document.createElement('canvas'); - canvas.width = 1; - canvas.height = 1; - var ctx = canvas.getContext('2d'); - var called = 0; - function isFontReady(name, callback) { - called++; - if (called > 30) { - warn('Load test font never loaded.'); - callback(); - return; +} +{ + FontLoader.isFontLoadingAPISupported = typeof document !== 'undefined' && !!document.fonts; +} +{ + var isSyncFontLoadingSupported = function isSyncFontLoadingSupported() { + if (typeof navigator === 'undefined') { + return true; } - ctx.font = '30px ' + name; - ctx.fillText('.', 0, 20); - var imageData = ctx.getImageData(0, 0, 1, 1); - if (imageData.data[3] > 0) { - callback(); - return; + var supported = false; + var m = /Mozilla\/5.0.*?rv:(\d+).*? Gecko/.exec(navigator.userAgent); + if (m && m[1] >= 14) { + supported = true; } - setTimeout(isFontReady.bind(null, name, callback)); - } - var loadTestFontId = 'lt' + Date.now() + this.loadTestFontId++; - var data = this.loadTestFont; - var COMMENT_OFFSET = 976; - data = spliceString(data, COMMENT_OFFSET, loadTestFontId.length, loadTestFontId); - var CFF_CHECKSUM_OFFSET = 16; - var XXXX_VALUE = 0x58585858; - var checksum = int32(data, CFF_CHECKSUM_OFFSET); - for (i = 0, ii = loadTestFontId.length - 3; i < ii; i += 4) { - checksum = checksum - XXXX_VALUE + int32(loadTestFontId, i) | 0; - } - if (i < loadTestFontId.length) { - checksum = checksum - XXXX_VALUE + int32(loadTestFontId + 'XXX', i) | 0; - } - data = spliceString(data, CFF_CHECKSUM_OFFSET, 4, string32(checksum)); - var url = 'url(data:font/opentype;base64,' + btoa(data) + ');'; - var rule = '@font-face { font-family:"' + loadTestFontId + '";src:' + url + '}'; - this.insertRule(rule); - var names = []; - for (i = 0, ii = fonts.length; i < ii; i++) { - names.push(fonts[i].loadedName); - } - names.push(loadTestFontId); - var div = document.createElement('div'); - div.setAttribute('style', 'visibility: hidden;' + 'width: 10px; height: 10px;' + 'position: absolute; top: 0px; left: 0px;'); - for (i = 0, ii = names.length; i < ii; ++i) { - var span = document.createElement('span'); - span.textContent = 'Hi'; - span.style.fontFamily = names[i]; - div.appendChild(span); - } - document.body.appendChild(div); - isFontReady(loadTestFontId, function () { - document.body.removeChild(div); - request.complete(); + return supported; + }; + Object.defineProperty(FontLoader, 'isSyncFontLoadingSupported', { + get: function get() { + return (0, _util.shadow)(FontLoader, 'isSyncFontLoadingSupported', isSyncFontLoadingSupported()); + }, + enumerable: true, + configurable: true }); -}; -FontLoader.isFontLoadingAPISupported = typeof document !== 'undefined' && !!document.fonts; -var isSyncFontLoadingSupported = function isSyncFontLoadingSupported() { - if (typeof navigator === 'undefined') { - return true; - } - var supported = false; - var m = /Mozilla\/5.0.*?rv:(\d+).*? Gecko/.exec(navigator.userAgent); - if (m && m[1] >= 14) { - supported = true; - } - return supported; -}; -Object.defineProperty(FontLoader, 'isSyncFontLoadingSupported', { - get: function get() { - return shadow(FontLoader, 'isSyncFontLoadingSupported', isSyncFontLoadingSupported()); - }, - enumerable: true, - configurable: true -}); +} var IsEvalSupportedCached = { get value() { - return shadow(this, 'value', sharedUtil.isEvalSupported()); + return (0, _util.shadow)(this, 'value', (0, _util.isEvalSupported)()); } }; var FontFaceObject = function FontFaceObjectClosure() { @@ -7459,7 +7461,7 @@ var FontFaceObject = function FontFaceObjectClosure() { this.disableFontFace = true; return null; } - var data = bytesToString(new Uint8Array(this.data)); + var data = (0, _util.bytesToString)(new Uint8Array(this.data)); var fontName = this.loadedName; var url = 'url(data:' + this.mimetype + ';base64,' + btoa(data) + ');'; var rule = '@font-face { font-family:"' + fontName + '";src:' + url + '}'; @@ -7512,13 +7514,15 @@ exports.FontLoader = FontLoader; "use strict"; -var sharedUtil = __w_pdfjs_require__(0); -var displayWebGL = __w_pdfjs_require__(8); -var Util = sharedUtil.Util; -var info = sharedUtil.info; -var isArray = sharedUtil.isArray; -var error = sharedUtil.error; -var WebGLUtils = displayWebGL.WebGLUtils; +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.TilingPattern = exports.getShadingPatternFromIR = undefined; + +var _util = __w_pdfjs_require__(0); + +var _webgl = __w_pdfjs_require__(8); + var ShadingIRs = {}; ShadingIRs.RadialAxial = { fromIR: function RadialAxial_fromIR(raw) { @@ -7655,7 +7659,7 @@ var createMeshCanvas = function createMeshCanvasClosure() { } break; default: - error('illigal figure'); + (0, _util.error)('illigal figure'); break; } } @@ -7682,8 +7686,8 @@ var createMeshCanvas = function createMeshCanvasClosure() { var paddedWidth = width + BORDER_SIZE * 2; var paddedHeight = height + BORDER_SIZE * 2; var canvas, tmpCanvas, i, ii; - if (WebGLUtils.isEnabled) { - canvas = WebGLUtils.drawFigures(width, height, backgroundColor, figures, context); + if (_webgl.WebGLUtils.isEnabled) { + canvas = _webgl.WebGLUtils.drawFigures(width, height, backgroundColor, figures, context); tmpCanvas = cachedCanvases.getCanvas('mesh', paddedWidth, paddedHeight, false); tmpCanvas.context.drawImage(canvas, BORDER_SIZE, BORDER_SIZE); canvas = tmpCanvas.canvas; @@ -7729,11 +7733,11 @@ ShadingIRs.Mesh = { getPattern: function Mesh_getPattern(ctx, owner, shadingFill) { var scale; if (shadingFill) { - scale = Util.singularValueDecompose2dScale(ctx.mozCurrentTransform); + scale = _util.Util.singularValueDecompose2dScale(ctx.mozCurrentTransform); } else { - scale = Util.singularValueDecompose2dScale(owner.baseTransform); + scale = _util.Util.singularValueDecompose2dScale(owner.baseTransform); if (matrix) { - var matrixScale = Util.singularValueDecompose2dScale(matrix); + var matrixScale = _util.Util.singularValueDecompose2dScale(matrix); scale = [scale[0] * matrixScale[0], scale[1] * matrixScale[1]]; } } @@ -7764,7 +7768,7 @@ ShadingIRs.Dummy = { function getShadingPatternFromIR(raw) { var shadingIR = ShadingIRs[raw[0]]; if (!shadingIR) { - error('Unknown IR type: ' + raw[0]); + (0, _util.error)('Unknown IR type: ' + raw[0]); } return shadingIR.fromIR(raw); } @@ -7777,7 +7781,7 @@ var TilingPattern = function TilingPatternClosure() { function TilingPattern(IR, color, ctx, canvasGraphicsFactory, baseTransform) { this.operatorList = IR[2]; this.matrix = IR[3] || [1, 0, 0, 1, 0, 0]; - this.bbox = Util.normalizeRect(IR[4]); + this.bbox = _util.Util.normalizeRect(IR[4]); this.xstep = IR[5]; this.ystep = IR[6]; this.paintType = IR[7]; @@ -7798,7 +7802,7 @@ var TilingPattern = function TilingPatternClosure() { var tilingType = this.tilingType; var color = this.color; var canvasGraphicsFactory = this.canvasGraphicsFactory; - info('TilingType: ' + tilingType); + (0, _util.info)('TilingType: ' + tilingType); var x0 = bbox[0], y0 = bbox[1], x1 = bbox[2], @@ -7807,8 +7811,8 @@ var TilingPattern = function TilingPatternClosure() { var botRight = [x0 + xstep, y0 + ystep]; var width = botRight[0] - topLeft[0]; var height = botRight[1] - topLeft[1]; - var matrixScale = Util.singularValueDecompose2dScale(this.matrix); - var curMatrixScale = Util.singularValueDecompose2dScale(this.baseTransform); + var matrixScale = _util.Util.singularValueDecompose2dScale(this.matrix); + var curMatrixScale = _util.Util.singularValueDecompose2dScale(this.baseTransform); var combinedScale = [matrixScale[0] * curMatrixScale[0], matrixScale[1] * curMatrixScale[1]]; width = Math.min(Math.ceil(Math.abs(width * combinedScale[0])), MAX_PATTERN_SIZE); height = Math.min(Math.ceil(Math.abs(height * combinedScale[1])), MAX_PATTERN_SIZE); @@ -7838,7 +7842,7 @@ var TilingPattern = function TilingPatternClosure() { this.ctx.scale(1 / scale[0], 1 / scale[1]); }, clipBbox: function clipBbox(graphics, bbox, x0, y0, x1, y1) { - if (isArray(bbox) && bbox.length === 4) { + if ((0, _util.isArray)(bbox) && bbox.length === 4) { var bboxWidth = x1 - x0; var bboxHeight = y1 - y0; graphics.ctx.rect(x0, y0, bboxWidth, bboxHeight); @@ -7854,12 +7858,12 @@ var TilingPattern = function TilingPatternClosure() { context.strokeStyle = ctx.strokeStyle; break; case PaintType.UNCOLORED: - var cssColor = Util.makeCssRgb(color[0], color[1], color[2]); + var cssColor = _util.Util.makeCssRgb(color[0], color[1], color[2]); context.fillStyle = cssColor; context.strokeStyle = cssColor; break; default: - error('Unsupported paint type: ' + paintType); + (0, _util.error)('Unsupported paint type: ' + paintType); } }, getPattern: function TilingPattern_getPattern(ctx, owner) { @@ -7883,8 +7887,8 @@ exports.TilingPattern = TilingPattern; "use strict"; -var pdfjsVersion = '1.8.213'; -var pdfjsBuild = 'c6e8ca86'; +var pdfjsVersion = '1.8.233'; +var pdfjsBuild = '19321937'; var pdfjsSharedUtil = __w_pdfjs_require__(0); var pdfjsDisplayGlobal = __w_pdfjs_require__(9); var pdfjsDisplayAPI = __w_pdfjs_require__(3); diff --git a/build/pdf.min.js b/build/pdf.min.js index 7d82358e4..21310aeed 100644 --- a/build/pdf.min.js +++ b/build/pdf.min.js @@ -1,6 +1,6 @@ -!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define("pdfjs-dist/build/pdf",[],e):"object"==typeof exports?exports["pdfjs-dist/build/pdf"]=e():t["pdfjs-dist/build/pdf"]=t.pdfjsDistBuildPdf=e()}(this,function(){return function(t){function e(r){if(n[r])return n[r].exports;var i=n[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,e),i.l=!0,i.exports}var n={};return e.m=t,e.c=n,e.i=function(t){return t},e.d=function(t,n,r){e.o(t,n)||Object.defineProperty(t,n,{configurable:!1,enumerable:!0,get:r})},e.n=function(t){var n=t&&t.__esModule?function(){return t.default}:function(){return t};return e.d(n,"a",n),n},e.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},e.p="",e(e.s=13)}([function(t,e,n){"use strict";(function(t){function r(t){rt=t}function i(){return rt}function a(t){rt>=tt.infos&&console.log("Info: "+t)}function s(t){rt>=tt.warnings&&console.log("Warning: "+t)}function o(t){console.log("Deprecated API usage: "+t)}function c(t){throw rt>=tt.errors&&(console.log("Error: "+t),console.log(l())),new Error(t)}function l(){try{throw new Error}catch(t){return t.stack?t.stack.split("\n").slice(2).join("\n"):""}}function h(t,e){t||c(e)}function u(t,e){try{var n=new URL(t);if(!n.origin||"null"===n.origin)return!1}catch(t){return!1}var r=new URL(e,n);return n.origin===r.origin}function d(t){if(!t)return!1;switch(t.protocol){case"http:":case"https:":case"ftp:":case"mailto:":case"tel:":return!0;default:return!1}}function f(t,e){if(!t)return null;try{var n=e?new URL(t,e):new URL(t);if(d(n))return n}catch(t){}return null}function p(t,e,n){return Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!1}),n}function g(t){var e;return function(){return t&&(e=Object.create(null),t(e),t=null),e}}function m(t){return"string"!=typeof t?(s("The argument for removeNullCharacters must be a string."),t):t.replace(pt,"")}function A(t){h(null!==t&&"object"===(void 0===t?"undefined":X(t))&&void 0!==t.length,"Invalid argument for bytesToString");var e=t.length;if(e<8192)return String.fromCharCode.apply(null,t);for(var n=[],r=0;r>24&255,t>>16&255,t>>8&255,255&t)}function S(t){for(var e=1,n=0;t>e;)e<<=1,n++;return n}function w(t,e){return t[e]<<24>>24}function k(t,e){return t[e]<<8|t[e+1]}function C(t,e){return(t[e]<<24|t[e+1]<<16|t[e+2]<<8|t[e+3])>>>0}function _(){var t=new Uint8Array(4);return t[0]=1,1===new Uint32Array(t.buffer,0,1)[0]}function T(){try{return new Function(""),!0}catch(t){return!1}}function P(t){var e,n=t.length,r=[];if("þ"===t[0]&&"ÿ"===t[1])for(e=2;et[2]&&(e[0]=t[2],e[2]=t[0]),t[1]>t[3]&&(e[1]=t[3],e[3]=t[1]),e},t.intersect=function(e,n){function r(t,e){return t-e}var i=[e[0],e[2],n[0],n[2]].sort(r),a=[e[1],e[3],n[1],n[3]].sort(r),s=[];return e=t.normalizeRect(e),n=t.normalizeRect(n),(i[0]===e[0]&&i[1]===n[0]||i[0]===n[0]&&i[1]===e[0])&&(s[0]=i[1],s[2]=i[2],(a[0]===e[1]&&a[1]===n[1]||a[0]===n[1]&&a[1]===e[1])&&(s[1]=a[1],s[3]=a[2],s))},t.sign=function(t){return t<0?-1:1};var n=["","C","CC","CCC","CD","D","DC","DCC","DCCC","CM","","X","XX","XXX","XL","L","LX","LXX","LXXX","XC","","I","II","III","IV","V","VI","VII","VIII","IX"];return t.toRoman=function(t,e){h(F(t)&&t>0,"The number should be a positive integer.");for(var r,i=[];t>=1e3;)t-=1e3,i.push("M");r=t/100|0,t%=100,i.push(n[r]),r=t/10|0,t%=10,i.push(n[10+r]),i.push(n[20+t]);var a=i.join("");return e?a.toLowerCase():a},t.appendToArray=function(t,e){Array.prototype.push.apply(t,e)},t.prependToArray=function(t,e){Array.prototype.unshift.apply(t,e)},t.extendObj=function(t,e){for(var n in e)t[n]=e[n]},t.getInheritableProperty=function(t,e,n){for(;t&&!t.has(e);)t=t.get("Parent");return t?n?t.getArray(e):t.get(e):null},t.inherit=function(t,e,n){t.prototype=Object.create(e.prototype),t.prototype.constructor=t;for(var r in n)t.prototype[r]=n[r]},t.loadScript=function(t,e){var n=document.createElement("script"),r=!1;n.setAttribute("src",t),e&&(n.onload=function(){r||e(),r=!0}),document.getElementsByTagName("head")[0].appendChild(n)},t}(),At=function(){function t(t,e,n,r,i,a){this.viewBox=t,this.scale=e,this.rotation=n,this.offsetX=r,this.offsetY=i;var s,o,c,l,h=(t[2]+t[0])/2,u=(t[3]+t[1])/2;switch(n%=360,n=n<0?n+360:n){case 180:s=-1,o=0,c=0,l=1;break;case 90:s=0,o=1,c=1,l=0;break;case 270:s=0,o=-1,c=-1,l=0;break;default:s=1,o=0,c=0,l=-1}a&&(c=-c,l=-l);var d,f,p,g;0===s?(d=Math.abs(u-t[1])*e+r,f=Math.abs(h-t[0])*e+i,p=Math.abs(t[3]-t[1])*e,g=Math.abs(t[2]-t[0])*e):(d=Math.abs(h-t[0])*e+r,f=Math.abs(u-t[1])*e+i,p=Math.abs(t[2]-t[0])*e,g=Math.abs(t[3]-t[1])*e),this.transform=[s*e,o*e,c*e,l*e,d-s*e*h-c*e*u,f-o*e*h-l*e*u],this.width=p,this.height=g,this.fontScale=e}return t.prototype={clone:function(e){e=e||{};var n="scale"in e?e.scale:this.scale,r="rotation"in e?e.rotation:this.rotation;return new t(this.viewBox.slice(),n,r,this.offsetX,this.offsetY,e.dontFlip)},convertToViewportPoint:function(t,e){return mt.applyTransform([t,e],this.transform)},convertToViewportRectangle:function(t){var e=mt.applyTransform([t[0],t[1]],this.transform),n=mt.applyTransform([t[2],t[3]],this.transform);return[e[0],e[1],n[0],n[1]]},convertToPdfPoint:function(t,e){return mt.applyInverseTransform([t,e],this.transform)}},t}(),vt=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,728,711,710,729,733,731,730,732,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8226,8224,8225,8230,8212,8211,402,8260,8249,8250,8722,8240,8222,8220,8221,8216,8217,8218,8482,64257,64258,321,338,352,376,381,305,322,339,353,382,0,8364],bt=function(){function t(t,e,n){for(;t.lengtha&&(a=s.length)}for(e=0,n=r.length;e>2]+t[(3&c)<<4|l>>4]+t[s+1>6:64]+t[s+20?e:t.length,n>0?n:t.length);return t.substring(t.lastIndexOf("/",r)+1,r)}function s(t){var e=l.globalScope.PDFJS;switch(t){case"pdfBug":return!!e&&e.pdfBug;case"disableAutoFetch":return!!e&&e.disableAutoFetch;case"disableStream":return!!e&&e.disableStream;case"disableRange":return!!e&&e.disableRange;case"disableFontFace":return!!e&&e.disableFontFace;case"disableCreateObjectURL":return!!e&&e.disableCreateObjectURL;case"disableWebGL":return!e||e.disableWebGL;case"cMapUrl":return e?e.cMapUrl:null;case"cMapPacked":return!!e&&e.cMapPacked;case"postMessageTransfers":return!e||e.postMessageTransfers;case"workerPort":return e?e.workerPort:null;case"workerSrc":return e?e.workerSrc:null;case"disableWorker":return!!e&&e.disableWorker;case"maxImageSize":return e?e.maxImageSize:-1;case"imageResourcesPath":return e?e.imageResourcesPath:"";case"isEvalSupported":return!e||e.isEvalSupported;case"externalLinkTarget":if(!e)return x.NONE;switch(e.externalLinkTarget){case x.NONE:case x.SELF:case x.BLANK:case x.PARENT:case x.TOP:return e.externalLinkTarget}return d("PDFJS.externalLinkTarget is invalid: "+e.externalLinkTarget),e.externalLinkTarget=x.NONE,x.NONE;case"externalLinkRel":return e?e.externalLinkRel:A;case"enableStats":return!(!e||!e.enableStats);case"pdfjsNext":return!(!e||!e.pdfjsNext);default:throw new Error("Unknown default setting: "+t)}}function o(){switch(s("externalLinkTarget")){case x.NONE:return!1;case x.SELF:case x.BLANK:case x.PARENT:case x.TOP:return!0}}function c(t,e){return f("isValidUrl(), please use createValidAbsoluteUrl() instead."),null!==p(t,e?"http://example.com":null)}var l=n(0),h=l.assert,u=l.removeNullCharacters,d=l.warn,f=l.deprecated,p=l.createValidAbsoluteUrl,g=l.stringToBytes,m=l.CMapCompressionType,A="noopener noreferrer nofollow";r.prototype={create:function(t,e){h(t>0&&e>0,"invalid canvas size");var n=document.createElement("canvas"),r=n.getContext("2d");return n.width=t,n.height=e,{canvas:n,context:r}},reset:function(t,e,n){h(t.canvas,"canvas is not specified"),h(e>0&&n>0,"invalid canvas size"),t.canvas.width=e,t.canvas.height=n},destroy:function(t){h(t.canvas,"canvas is not specified"),t.canvas.width=0,t.canvas.height=0,t.canvas=null,t.context=null}};var v=function(){function t(t){this.baseUrl=t.baseUrl||null,this.isCompressed=t.isCompressed||!1}return t.prototype={fetch:function(t){var e=t.name;return e?new Promise(function(t,n){var r=this.baseUrl+e+(this.isCompressed?".bcmap":""),i=new XMLHttpRequest;i.open("GET",r,!0),this.isCompressed&&(i.responseType="arraybuffer"),i.onreadystatechange=function(){if(i.readyState===XMLHttpRequest.DONE){if(200===i.status||0===i.status){var e;if(this.isCompressed&&i.response?e=new Uint8Array(i.response):!this.isCompressed&&i.responseText&&(e=g(i.responseText)),e)return void t({cMapData:e,compressionType:this.isCompressed?m.BINARY:m.NONE})}n(new Error("Unable to load "+(this.isCompressed?"binary ":"")+"CMap at: "+r))}}.bind(this),i.send(null)}.bind(this)):Promise.reject(new Error("CMap name must be specified."))}},t}(),b=function(){function t(){}var e=["ms","Moz","Webkit","O"],n=Object.create(null);return t.getProp=function(t,r){if(1===arguments.length&&"string"==typeof n[t])return n[t];r=r||document.documentElement;var i,a,s=r.style;if("string"==typeof s[t])return n[t]=t;a=t.charAt(0).toUpperCase()+t.slice(1);for(var o=0,c=e.length;o0){i.style.borderWidth=e.borderStyle.width+"px",e.borderStyle.style!==s.UNDERLINE&&(a-=2*e.borderStyle.width,o-=2*e.borderStyle.width);var h=e.borderStyle.horizontalCornerRadius,u=e.borderStyle.verticalCornerRadius;if(h>0||u>0){var d=h+"px / "+u+"px";p.setProp("borderRadius",i,d)}switch(e.borderStyle.style){case s.SOLID:i.style.borderStyle="solid";break;case s.DASHED:i.style.borderStyle="dashed";break;case s.BEVELED:f("Unimplemented border style: beveled");break;case s.INSET:f("Unimplemented border style: inset");break;case s.UNDERLINE:i.style.borderBottomStyle="solid"}e.color?i.style.borderColor=l.makeCssRgb(0|e.color[0],0|e.color[1],0|e.color[2]):i.style.borderWidth=0}return i.style.left=c[0]+"px",i.style.top=c[1]+"px",i.style.width=a+"px",i.style.height=o+"px",i},_createPopup:function(t,e,n){e||(e=document.createElement("div"),e.style.height=t.style.height,e.style.width=t.style.width,t.appendChild(e));var r=new C({container:t,trigger:e,color:n.color,title:n.title,contents:n.contents,hideWrapper:!0}),i=r.render();i.style.left=t.style.width,t.appendChild(i)},render:function(){throw new Error("Abstract method AnnotationElement.render called")}},t}(),A=function(){function t(t){m.call(this,t,!0)}return l.inherit(t,m,{render:function(){this.container.className="linkAnnotation";var t=document.createElement("a");return h(t,{url:this.data.url,target:this.data.newWindow?u.BLANK:void 0}),this.data.url||(this.data.action?this._bindNamedAction(t,this.data.action):this._bindLink(t,this.data.dest)),this.container.appendChild(t),this.container},_bindLink:function(t,e){var n=this;t.href=this.linkService.getDestinationHash(e),t.onclick=function(){return e&&n.linkService.navigateTo(e),!1},e&&(t.className="internalLink")},_bindNamedAction:function(t,e){var n=this;t.href=this.linkService.getAnchorUrl(""),t.onclick=function(){return n.linkService.executeNamedAction(e),!1},t.className="internalLink"}}),t}(),v=function(){function t(t){var e=!!(t.data.hasPopup||t.data.title||t.data.contents);m.call(this,t,e)}return l.inherit(t,m,{render:function(){this.container.className="textAnnotation";var t=document.createElement("img");return t.style.height=this.container.style.height,t.style.width=this.container.style.width,t.src=this.imageResourcesPath+"annotation-"+this.data.name.toLowerCase()+".svg",t.alt="[{{type}} Annotation]",t.dataset.l10nId="text_annotation_type",t.dataset.l10nArgs=JSON.stringify({type:this.data.name}),this.data.hasPopup||this._createPopup(this.container,t,this.data),this.container.appendChild(t),this.container}}),t}(),b=function(){function t(t,e){m.call(this,t,e)}return l.inherit(t,m,{render:function(){return this.container}}),t}(),y=function(){function t(t){var e=t.renderInteractiveForms||!t.data.hasAppearance&&!!t.data.fieldValue;b.call(this,t,e)}var e=["left","center","right"];return l.inherit(t,b,{render:function(){this.container.className="textWidgetAnnotation";var t=null;if(this.renderInteractiveForms){if(this.data.multiLine?(t=document.createElement("textarea"),t.textContent=this.data.fieldValue):(t=document.createElement("input"),t.type="text",t.setAttribute("value",this.data.fieldValue)),t.disabled=this.data.readOnly,null!==this.data.maxLen&&(t.maxLength=this.data.maxLen),this.data.comb){var n=this.data.rect[2]-this.data.rect[0],r=n/this.data.maxLen;t.classList.add("comb"),t.style.letterSpacing="calc("+r+"px - 1ch)"}}else{t=document.createElement("div"),t.textContent=this.data.fieldValue,t.style.verticalAlign="middle",t.style.display="table-cell";var i=null;this.data.fontRefName&&(i=this.page.commonObjs.getData(this.data.fontRefName)),this._setTextStyle(t,i)}return null!==this.data.textAlignment&&(t.style.textAlign=e[this.data.textAlignment]),this.container.appendChild(t),this.container},_setTextStyle:function(t,e){var n=t.style;if(n.fontSize=this.data.fontSize+"px",n.direction=this.data.fontDirection<0?"rtl":"ltr",e){n.fontWeight=e.black?e.bold?"900":"bold":e.bold?"bold":"normal",n.fontStyle=e.italic?"italic":"normal";var r=e.loadedName?'"'+e.loadedName+'", ':"",i=e.fallbackName||"Helvetica, sans-serif";n.fontFamily=r+i}}}),t}(),x=function(){function t(t){b.call(this,t,t.renderInteractiveForms)}return l.inherit(t,b,{render:function(){this.container.className="buttonWidgetAnnotation checkBox";var t=document.createElement("input");return t.disabled=this.data.readOnly,t.type="checkbox",this.data.fieldValue&&"Off"!==this.data.fieldValue&&t.setAttribute("checked",!0),this.container.appendChild(t),this.container}}),t}(),S=function(){function t(t){b.call(this,t,t.renderInteractiveForms)}return l.inherit(t,b,{render:function(){this.container.className="buttonWidgetAnnotation radioButton";var t=document.createElement("input");return t.disabled=this.data.readOnly,t.type="radio",t.name=this.data.fieldName,this.data.fieldValue===this.data.buttonValue&&t.setAttribute("checked",!0),this.container.appendChild(t),this.container}}),t}(),w=function(){function t(t){b.call(this,t,t.renderInteractiveForms)}return l.inherit(t,b,{render:function(){this.container.className="choiceWidgetAnnotation";var t=document.createElement("select");t.disabled=this.data.readOnly,this.data.combo||(t.size=this.data.options.length,this.data.multiSelect&&(t.multiple=!0));for(var e=0,n=this.data.options.length;e=0&&i.setAttribute("selected",!0),t.appendChild(i)}return this.container.appendChild(t),this.container}}),t}(),k=function(){function t(t){var e=!(!t.data.title&&!t.data.contents);m.call(this,t,e)}var e=["Line"];return l.inherit(t,m,{render:function(){if(this.container.className="popupAnnotation",e.indexOf(this.data.parentType)>=0)return this.container;var t='[data-annotation-id="'+this.data.parentId+'"]',n=this.layer.querySelector(t);if(!n)return this.container;var r=new C({container:this.container,trigger:n,color:this.data.color,title:this.data.title,contents:this.data.contents}),i=parseFloat(n.style.left),a=parseFloat(n.style.width);return p.setProp("transformOrigin",this.container,-(i+a)+"px -"+n.style.top),this.container.style.left=i+a+"px",this.container.appendChild(r.render()),this.container}}),t}(),C=function(){function t(t){this.container=t.container,this.trigger=t.trigger,this.color=t.color,this.title=t.title,this.contents=t.contents,this.hideWrapper=t.hideWrapper||!1,this.pinned=!1}return t.prototype={render:function(){var t=document.createElement("div");t.className="popupWrapper",this.hideElement=this.hideWrapper?t:this.container,this.hideElement.setAttribute("hidden",!0);var e=document.createElement("div");e.className="popup";var n=this.color;if(n){var r=.7*(255-n[0])+n[0],i=.7*(255-n[1])+n[1],a=.7*(255-n[2])+n[2];e.style.backgroundColor=l.makeCssRgb(0|r,0|i,0|a)}var s=this._formatContents(this.contents),o=document.createElement("h1");return o.textContent=this.title,this.trigger.addEventListener("click",this._toggle.bind(this)),this.trigger.addEventListener("mouseover",this._show.bind(this,!1)),this.trigger.addEventListener("mouseout",this._hide.bind(this,!1)),e.addEventListener("click",this._hide.bind(this,!0)),e.appendChild(o),e.appendChild(s),t.appendChild(e),t},_formatContents:function(t){for(var e=document.createElement("p"),n=t.split(/(?:\r\n?|\n)/),r=0,i=n.length;r1&&w("getDocument is called with pdfDataRangeTransport, passwordCallback or progressCallback argument"),e&&(e instanceof Q||(e=Object.create(e),e.length=t.length,e.initialData=t.initialData,e.abort||(e.abort=function(){})),t=Object.create(t),t.range=e),a.onPassword=n||null,a.onProgress=r||null;var o;"string"==typeof t?o={url:t}:P(t)?o={data:t}:t instanceof Q?o={range:t}:("object"!==(void 0===t?"undefined":s(t))&&S("Invalid parameter in getDocument, need either Uint8Array, string or a parameter object"),t.url||t.data||t.range||S("Invalid parameter object: need either .data, .range or .url"),o=t);var c={},l=null,h=null;for(var u in o)if("url"!==u||"undefined"==typeof window)if("range"!==u)if("worker"!==u)if("data"!==u||o[u]instanceof Uint8Array)c[u]=o[u];else{var d=o[u];"string"==typeof d?c[u]=R(d):"object"!==(void 0===d?"undefined":s(d))||null===d||isNaN(d.length)?P(d)?c[u]=new Uint8Array(d):S("Invalid PDF binary data: either typed array, string or array-like object is expected in the data property."):c[u]=new Uint8Array(d)}else h=o[u];else l=o[u];else c[u]=new URL(o[u],window.location).href;c.rangeChunkSize=c.rangeChunkSize||G,c.disableNativeImageDecoder=!0===c.disableNativeImageDecoder,c.ignoreErrors=!0!==c.stopAtErrors;var p=c.CMapReaderFactory||W;if(!h){var g=U("workerPort");h=g?new $(null,g):new $,a._worker=h}var m=a.docId;return h.promise.then(function(){if(a.destroyed)throw new Error("Loading aborted");return i(h,c,l,m).then(function(t){if(a.destroyed)throw new Error("Loading aborted");var e=new f(m,t,h.port),n=new tt(e,a,l,p);a._transport=n,e.send("Ready",null)})}).catch(a._capability.reject),a}function i(t,e,n,r){return t.destroyed?Promise.reject(new Error("Worker was destroyed")):(e.disableAutoFetch=U("disableAutoFetch"),e.disableStream=U("disableStream"),e.chunkedViewerLoading=!!n,n&&(e.length=n.length,e.initialData=n.initialData),t.messageHandler.sendWithPromise("GetDocRequest",{docId:r,source:e,disableRange:U("disableRange"),maxImageSize:U("maxImageSize"),disableFontFace:U("disableFontFace"),disableCreateObjectURL:U("disableCreateObjectURL"),postMessageTransfers:U("postMessageTransfers")&&!H,docBaseUrl:e.docBaseUrl,disableNativeImageDecoder:e.disableNativeImageDecoder,ignoreErrors:e.ignoreErrors}).then(function(e){if(t.destroyed)throw new Error("Worker was destroyed");return e}))}var a,s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},o=n(0),c=n(11),l=n(10),h=n(7),u=n(1),d=o.InvalidPDFException,f=o.MessageHandler,p=o.MissingPDFException,g=o.PageViewport,m=o.PasswordException,A=o.StatTimer,v=o.UnexpectedResponseException,b=o.UnknownErrorException,y=o.Util,x=o.createPromiseCapability,S=o.error,w=o.deprecated,k=o.getVerbosityLevel,C=o.info,_=o.isInt,T=o.isArray,P=o.isArrayBuffer,L=o.isSameOrigin,E=o.loadJpegStream,R=o.stringToBytes,I=o.globalScope,F=o.warn,O=c.FontFaceObject,N=c.FontLoader,M=l.CanvasGraphics,D=h.Metadata,j=u.RenderingCancelledException,U=u.getDefaultSetting,B=u.DOMCanvasFactory,W=u.DOMCMapReaderFactory,G=65536,X=!1,H=!1,z="undefined"!=typeof document&&document.currentScript?document.currentScript.src:null,Y=null,q=!1;if("undefined"==typeof __pdfjsdev_webpack__){"undefined"==typeof window?(X=!0,void 0===require.ensure&&(require.ensure=require("node-ensure")),q=!0):"undefined"!=typeof require&&"function"==typeof require.ensure&&(q=!0),"undefined"!=typeof requirejs&&requirejs.toUrl&&(a=requirejs.toUrl("pdfjs-dist/build/pdf.worker.js"));var V="undefined"!=typeof requirejs&&requirejs.load;Y=q?function(t){require.ensure([],function(){var e=require("./pdf.worker.js");t(e.WorkerMessageHandler)})}:V?function(t){requirejs(["pdfjs-dist/build/pdf.worker"],function(e){t(e.WorkerMessageHandler)})}:null}var J=function(){function t(){this._capability=x(),this._transport=null,this._worker=null,this.docId="d"+e++,this.destroyed=!1,this.onPassword=null,this.onProgress=null,this.onUnsupportedFeature=null}var e=0;return t.prototype={get promise(){return this._capability.promise},destroy:function(){return this.destroyed=!0,(this._transport?this._transport.destroy():Promise.resolve()).then(function(){this._transport=null,this._worker&&(this._worker.destroy(),this._worker=null)}.bind(this))},then:function(t,e){return this.promise.then.apply(this.promise,arguments)}},t}(),Q=function(){function t(t,e){this.length=t,this.initialData=e,this._rangeListeners=[],this._progressListeners=[],this._progressiveReadListeners=[],this._readyCapability=x()}return t.prototype={addRangeListener:function(t){this._rangeListeners.push(t)},addProgressListener:function(t){this._progressListeners.push(t)},addProgressiveReadListener:function(t){this._progressiveReadListeners.push(t)},onDataRange:function(t,e){for(var n=this._rangeListeners,r=0,i=n.length;r=0&&a.renderTasks.splice(e,1),c.cleanupAfterRender&&(c.pendingCleanup=!0),c._tryCleanup(),t?s.capability.reject(t):s.capability.resolve(),n.timeEnd("Rendering"),n.timeEnd("Overall")}var n=this.stats;n.time("Overall"),this.pendingCleanup=!1;var r="print"===t.intent?"print":"display",i=t.canvasFactory||new B;this.intentStates[r]||(this.intentStates[r]=Object.create(null));var a=this.intentStates[r];a.displayReadyCapability||(a.receivingOperatorList=!0,a.displayReadyCapability=x(),a.operatorList={fnArray:[],argsArray:[],lastChunk:!1},this.stats.time("Page Request"),this.transport.messageHandler.send("RenderPageRequest",{pageIndex:this.pageNumber-1,intent:r,renderInteractiveForms:!0===t.renderInteractiveForms}));var s=new rt(e,t,this.objs,this.commonObjs,a.operatorList,this.pageNumber,i);s.useRequestAnimationFrame="print"!==r,a.renderTasks||(a.renderTasks=[]),a.renderTasks.push(s);var o=s.task;t.continueCallback&&(w("render is used with continueCallback parameter"),o.onContinue=t.continueCallback);var c=this;return a.displayReadyCapability.promise.then(function(t){if(c.pendingCleanup)return void e();n.time("Rendering"),s.initializeGraphics(t),s.operatorListChanged()},function(t){e(t)}),o},getOperatorList:function(){function t(){if(n.operatorList.lastChunk){n.opListReadCapability.resolve(n.operatorList);var t=n.renderTasks.indexOf(e);t>=0&&n.renderTasks.splice(t,1)}}this.intentStates.oplist||(this.intentStates.oplist=Object.create(null));var e,n=this.intentStates.oplist;return n.opListReadCapability||(e={},e.operatorListChanged=t,n.receivingOperatorList=!0,n.opListReadCapability=x(),n.renderTasks=[],n.renderTasks.push(e),n.operatorList={fnArray:[],argsArray:[],lastChunk:!1},this.transport.messageHandler.send("RenderPageRequest",{pageIndex:this.pageIndex,intent:"oplist"})),n.opListReadCapability.promise},getTextContent:function(t){return t=t||{},this.transport.messageHandler.sendWithPromise("GetTextContent",{pageIndex:this.pageNumber-1,normalizeWhitespace:!0===t.normalizeWhitespace,combineTextItems:!0!==t.disableCombineTextItems})},_destroy:function(){this.destroyed=!0,this.transport.pageCache[this.pageIndex]=null;var t=[];return Object.keys(this.intentStates).forEach(function(e){if("oplist"!==e){this.intentStates[e].renderTasks.forEach(function(e){var n=e.capability.promise.catch(function(){});t.push(n),e.cancel()})}},this),this.objs.clear(),this.annotationsPromise=null,this.pendingCleanup=!1,Promise.all(t)},destroy:function(){w("page destroy method, use cleanup() instead"),this.cleanup()},cleanup:function(){this.pendingCleanup=!0,this._tryCleanup()},_tryCleanup:function(){this.pendingCleanup&&!Object.keys(this.intentStates).some(function(t){var e=this.intentStates[t];return 0!==e.renderTasks.length||e.receivingOperatorList},this)&&(Object.keys(this.intentStates).forEach(function(t){delete this.intentStates[t]},this),this.objs.clear(),this.annotationsPromise=null,this.pendingCleanup=!1)},_startRenderPage:function(t,e){var n=this.intentStates[e];n.displayReadyCapability&&n.displayReadyCapability.resolve(t)},_renderPageChunk:function(t,e){var n,r,i=this.intentStates[e];for(n=0,r=t.length;n=0;return i=t===a?t:o?new t.constructor(a,t.byteOffset,t.byteLength):new t.constructor(t),r.set(t,i),i}i=T(t)?[]:{},r.set(t,i);for(var c in t){for(var l,h=t;!(l=Object.getOwnPropertyDescriptor(h,c));)h=Object.getPrototypeOf(h);void 0!==l.value&&"function"!=typeof l.value&&(i[c]=n(l.value))}return i}if(!this._defer)return void this._listeners.forEach(function(e){e.call(this,{data:t})},this);var r=new WeakMap,i={data:n(t)};this._deferred.then(function(){this._listeners.forEach(function(t){t.call(this,i)},this)}.bind(this))},addEventListener:function(t,e){this._listeners.push(e)},removeEventListener:function(t,e){var n=this._listeners.indexOf(e);this._listeners.splice(n,1)},terminate:function(){this._listeners=[]}},i.prototype={get promise(){return this._readyCapability.promise},get port(){return this._port},get messageHandler(){return this._messageHandler},_initializeFromPort:function(t){this._port=t,this._messageHandler=new f("main","worker",t),this._messageHandler.on("ready",function(){}),this._readyCapability.resolve()},_initialize:function(){if(!X&&!U("disableWorker")&&"undefined"!=typeof Worker){var e=t();try{L(window.location.href,e)||(e=r(new URL(e,window.location).href));var n=new Worker(e),i=new f("main","worker",n),a=function(){n.removeEventListener("error",s),i.destroy(),n.terminate(),this.destroyed?this._readyCapability.reject(new Error("Worker was destroyed")):this._setupFakeWorker()}.bind(this),s=function(t){this._webWorker||a()}.bind(this);n.addEventListener("error",s),i.on("test",function(t){if(n.removeEventListener("error",s),this.destroyed)return void a();t&&t.supportTypedArray?(this._messageHandler=i,this._port=n,this._webWorker=n,t.supportTransfers||(H=!0),this._readyCapability.resolve(),i.send("configure",{verbosity:k()})):(this._setupFakeWorker(),i.destroy(),n.terminate())}.bind(this)),i.on("console_log",function(t){console.log.apply(console,t)}),i.on("console_error",function(t){console.error.apply(console,t)}),i.on("ready",function(t){if(n.removeEventListener("error",s),this.destroyed)return void a();try{o()}catch(t){this._setupFakeWorker()}}.bind(this));var o=function(){var t=U("postMessageTransfers")&&!H,e=new Uint8Array([t?255:0]);try{i.send("test",e,[e.buffer])}catch(t){C("Cannot use postMessage transfers"),e[0]=0,i.send("test",e)}};return void o()}catch(t){C("The worker has been disabled.")}}this._setupFakeWorker()},_setupFakeWorker:function(){X||U("disableWorker")||(F("Setting up fake worker."),X=!0),e().then(function(t){if(this.destroyed)return void this._readyCapability.reject(new Error("Worker was destroyed"));var e=Uint8Array!==Float32Array,r=new n(e);this._port=r;var i="fake"+c++,a=new f(i+"_worker",i,r);t.setup(a,r);var s=new f(i,i+"_worker",r);this._messageHandler=s,this._readyCapability.resolve()}.bind(this))},destroy:function(){this.destroyed=!0,this._webWorker&&(this._webWorker.terminate(),this._webWorker=null),this._port=null,this._messageHandler&&(this._messageHandler.destroy(),this._messageHandler=null)}},i}(),tt=function(){function t(t,e,n,r){this.messageHandler=t,this.loadingTask=e,this.pdfDataRangeTransport=n,this.commonObjs=new et,this.fontLoader=new N(e.docId),this.CMapReaderFactory=new r({baseUrl:U("cMapUrl"),isCompressed:U("cMapPacked")}),this.destroyed=!1,this.destroyCapability=null,this._passwordCapability=null,this.pageCache=[],this.pagePromises=[],this.downloadInfoCapability=x(),this.setupMessageHandler()}return t.prototype={destroy:function(){if(this.destroyCapability)return this.destroyCapability.promise;this.destroyed=!0,this.destroyCapability=x(),this._passwordCapability&&this._passwordCapability.reject(new Error("Worker was destroyed during onPassword callback"));var t=[];this.pageCache.forEach(function(e){e&&t.push(e._destroy())}),this.pageCache=[],this.pagePromises=[];var e=this,n=this.messageHandler.sendWithPromise("Terminate",null);return t.push(n),Promise.all(t).then(function(){e.fontLoader.clear(),e.pdfDataRangeTransport&&(e.pdfDataRangeTransport.abort(),e.pdfDataRangeTransport=null),e.messageHandler&&(e.messageHandler.destroy(),e.messageHandler=null),e.destroyCapability.resolve()},this.destroyCapability.reject),this.destroyCapability.promise},setupMessageHandler:function(){var t=this.messageHandler,e=this.loadingTask,n=this.pdfDataRangeTransport;n&&(n.addRangeListener(function(e,n){t.send("OnDataRange",{begin:e,chunk:n})}),n.addProgressListener(function(e){t.send("OnDataProgress",{loaded:e})}),n.addProgressiveReadListener(function(e){t.send("OnDataRange",{chunk:e})}),t.on("RequestDataRange",function(t){n.requestDataRange(t.begin,t.end)},this)),t.on("GetDoc",function(t){var e=t.pdfInfo;this.numPages=t.pdfInfo.numPages;var n=this.loadingTask,r=new K(e,this,n);this.pdfDocument=r,n._capability.resolve(r)},this),t.on("PasswordRequest",function(t){if(this._passwordCapability=x(),e.onPassword){var n=function(t){this._passwordCapability.resolve({password:t})}.bind(this);e.onPassword(n,t.code)}else this._passwordCapability.reject(new m(t.message,t.code));return this._passwordCapability.promise},this),t.on("PasswordException",function(t){e._capability.reject(new m(t.message,t.code))},this),t.on("InvalidPDF",function(t){this.loadingTask._capability.reject(new d(t.message))},this),t.on("MissingPDF",function(t){this.loadingTask._capability.reject(new p(t.message))},this),t.on("UnexpectedResponse",function(t){this.loadingTask._capability.reject(new v(t.message,t.status))},this),t.on("UnknownError",function(t){this.loadingTask._capability.reject(new b(t.message,t.details))},this),t.on("DataLoaded",function(t){this.downloadInfoCapability.resolve(t)},this),t.on("PDFManagerReady",function(t){this.pdfDataRangeTransport&&this.pdfDataRangeTransport.transportReady()},this),t.on("StartRenderPage",function(t){if(!this.destroyed){var e=this.pageCache[t.pageIndex];e.stats.timeEnd("Page Request"),e._startRenderPage(t.transparency,t.intent)}},this),t.on("RenderPageChunk",function(t){if(!this.destroyed){this.pageCache[t.pageIndex]._renderPageChunk(t.operatorList,t.intent)}},this),t.on("commonobj",function(t){if(!this.destroyed){var e=t[0],n=t[1];if(!this.commonObjs.hasData(e))switch(n){case"Font":var r=t[2];if("error"in r){var i=r.error;F("Error during font loading: "+i),this.commonObjs.resolve(e,i);break}var a=null;U("pdfBug")&&I.FontInspector&&I.FontInspector.enabled&&(a={registerFont:function(t,e){I.FontInspector.fontAdded(t,e)}});var s=new O(r,{isEvalSuported:U("isEvalSupported"),disableFontFace:U("disableFontFace"),fontRegistry:a});this.fontLoader.bind([s],function(t){this.commonObjs.resolve(e,s)}.bind(this));break;case"FontPath":this.commonObjs.resolve(e,t[2]);break;default:S("Got unknown common object type "+n)}}},this),t.on("obj",function(t){if(!this.destroyed){var e,n=t[0],r=t[1],i=t[2],a=this.pageCache[r];if(!a.objs.hasData(n))switch(i){case"JpegStream":e=t[3],E(n,e,a.objs);break;case"Image":e=t[3],a.objs.resolve(n,e);e&&"data"in e&&e.data.length>8e6&&(a.cleanupAfterRender=!0);break;default:S("Got unknown object type "+i)}}},this),t.on("DocProgress",function(t){if(!this.destroyed){var e=this.loadingTask;e.onProgress&&e.onProgress({loaded:t.loaded,total:t.total})}},this),t.on("PageError",function(t){if(!this.destroyed){var e=this.pageCache[t.pageNum-1],n=e.intentStates[t.intent];if(n.displayReadyCapability?n.displayReadyCapability.reject(t.error):S(t.error),n.operatorList){n.operatorList.lastChunk=!0;for(var r=0;rthis.numPages)return Promise.reject(new Error("Invalid page request"));var n=t-1;if(n in this.pagePromises)return this.pagePromises[n];var r=this.messageHandler.sendWithPromise("GetPage",{pageIndex:n}).then(function(t){if(this.destroyed)throw new Error("Transport destroyed");var e=new Z(n,t,this);return this.pageCache[n]=e,e}.bind(this));return this.pagePromises[n]=r,r},getPageIndex:function(t){return this.messageHandler.sendWithPromise("GetPageIndex",{ref:t}).catch(function(t){return Promise.reject(new Error(t))})},getAnnotations:function(t,e){return this.messageHandler.sendWithPromise("GetAnnotations",{pageIndex:t,intent:e})},getDestinations:function(){return this.messageHandler.sendWithPromise("GetDestinations",null)},getDestination:function(t){return this.messageHandler.sendWithPromise("GetDestination",{id:t})},getPageLabels:function(){return this.messageHandler.sendWithPromise("GetPageLabels",null)},getAttachments:function(){return this.messageHandler.sendWithPromise("GetAttachments",null)},getJavaScript:function(){return this.messageHandler.sendWithPromise("GetJavaScript",null)},getOutline:function(){return this.messageHandler.sendWithPromise("GetOutline",null)},getMetadata:function(){return this.messageHandler.sendWithPromise("GetMetadata",null).then(function(t){return{info:t[0],metadata:t[1]?new D(t[1]):null}})},getStats:function(){return this.messageHandler.sendWithPromise("GetStats",null)},startCleanup:function(){this.messageHandler.sendWithPromise("Cleanup",null).then(function(){for(var t=0,e=this.pageCache.length;t>>8^o[a]}return-1^r}function e(e,n,r,i){var a=i,s=n.length;r[a]=s>>24&255,r[a+1]=s>>16&255,r[a+2]=s>>8&255,r[a+3]=255&s,a+=4,r[a]=255&e.charCodeAt(0),r[a+1]=255&e.charCodeAt(1),r[a+2]=255&e.charCodeAt(2),r[a+3]=255&e.charCodeAt(3),a+=4,r.set(n,a),a+=n.length;var o=t(r,i+4,a);r[a]=o>>24&255,r[a+1]=o>>16&255,r[a+2]=o>>8&255,r[a+3]=255&o}function n(t,e,n){for(var r=1,i=0,a=e;a>3;break;case s.RGB_24BPP:l=2,c=8,h=3*u;break;case s.RGBA_32BPP:l=6,c=8,h=4*u;break;default:throw new Error("invalid format")}var g,m,A=new Uint8Array((1+h)*f),v=0,b=0;for(g=0;g>24&255,u>>16&255,u>>8&255,255&u,f>>24&255,f>>16&255,f>>8&255,255&f,c,l,0,0,0]),x=A.length,S=Math.ceil(x/65535),w=new Uint8Array(2+x+5*S+4),k=0;w[k++]=120,w[k++]=156;for(var C=0;x>65535;)w[k++]=0,w[k++]=255,w[k++]=255,w[k++]=0,w[k++]=0,w.set(A.subarray(C,C+65535),k),k+=65535,C+=65535,x-=65535;w[k++]=1,w[k++]=255&x,w[k++]=x>>8&255,w[k++]=255&~x,w[k++]=(65535&~x)>>8&255,w.set(A.subarray(C),k),k+=A.length-C;var _=n(A,0,A.length);w[k++]=_>>24&255,w[k++]=_>>16&255,w[k++]=_>>8&255,w[k++]=255&_;var T=i.length+3*a+y.length+w.length,P=new Uint8Array(T),L=0;return P.set(i,L),L+=i.length,e("IHDR",y,P,L),L+=a+y.length,e("IDATA",w,P,L),L+=a+w.length,e("IEND",new Uint8Array(0),P,L),d(P,"image/png",o)}for(var i=new Uint8Array([137,80,78,71,13,10,26,10]),a=12,o=new Int32Array(256),c=0;c<256;c++){for(var l=c,h=0;h<8;h++)l=1&l?3988292384^l>>1&2147483647:l>>1&2147483647;o[c]=l}return function(t,e){return r(t,void 0===t.kind?s.GRAYSCALE_1BPP:t.kind,e)}}(),g=function(){function t(){this.fontSizeScale=1,this.fontWeight=f.fontWeight,this.fontSize=0,this.textMatrix=a,this.fontMatrix=i,this.leading=0,this.x=0,this.y=0,this.lineX=0,this.lineY=0,this.charSpacing=0,this.wordSpacing=0,this.textHScale=1,this.textRise=0,this.fillColor=f.fillColor,this.strokeColor="#000000",this.fillAlpha=1,this.strokeAlpha=1,this.lineWidth=1,this.lineJoin="",this.lineCap="",this.miterLimit=0,this.dashArray=[],this.dashPhase=0,this.dependencies=[],this.activeClipUrl=null,this.clipGroup=null,this.maskId=""}return t.prototype={clone:function(){return Object.create(this)},setCurrentPoint:function(t,e){this.x=t,this.y=e}},t}(),m=function(){function t(t){for(var e=[],n=[],r=t.length,i=0;i1&&(h.vertical?s.canvasWidth=n.height*e._viewport.scale:s.canvasWidth=n.width*e._viewport.scale),e._textDivProperties.set(i,s),e._enhanceTextSelection){var m=1,A=0;0!==l&&(m=Math.cos(l),A=Math.sin(l));var v,b,y=(h.vertical?n.height:n.width)*e._viewport.scale,x=u;0!==l?(v=[m,A,-A,m,f,g],b=a.getAxialAlignedBoundingBox([0,0,y,x],v)):b=[f,g,f+y,g+x],e._bounds.push({left:b[0],top:b[1],right:b[2],bottom:b[3],div:i,size:[y,x],m:v})}}function n(t){if(!t._canceled){var e=t._container,n=t._textDivs,r=t._capability,i=n.length;if(i>d)return t._renderingDone=!0,void r.resolve();var a=document.createElement("canvas");a.mozOpaque=!0;for(var s,c,l=a.getContext("2d",{alpha:!1}),h=0;h0&&(f.scale=f.canvasWidth/m,A="scaleX("+f.scale+")"),0!==f.angle&&(A="rotate("+f.angle+"deg) "+A),""!==A&&(f.originalTransform=A,o.setProp("transform",u,A)),t._textDivProperties.set(u,f)}}t._renderingDone=!0,r.resolve()}}function r(t){for(var e=t._bounds,n=t._viewport,r=i(n.width,n.height,e),s=0;s0&&(r=r?Math.min(a,r):a)}return r},A=1+Math.min(Math.abs(d),Math.abs(f));c.paddingLeft=m(g,32,16)/A,c.paddingTop=m(g,48,16)/A,c.paddingRight=m(g,0,16)/A,c.paddingBottom=m(g,16,16)/A,t._textDivProperties.set(o,c)}else c.paddingLeft=e[s].left-r[s].left,c.paddingTop=e[s].top-r[s].top,c.paddingRight=r[s].right-e[s].right,c.paddingBottom=r[s].bottom-e[s].bottom,t._textDivProperties.set(o,c)}}function i(t,e,n){var r=n.map(function(t,e){return{x1:t.left,y1:t.top,x2:t.right,y2:t.bottom,index:e,x1New:void 0,x2New:void 0}});l(t,r);var i=new Array(n.length);return r.forEach(function(t){var e=t.index;i[e]={left:t.x1New,top:0,right:t.x2New,bottom:0}}),n.map(function(e,n){var a=i[n],s=r[n];s.x1=e.top,s.y1=t-a.right,s.x2=e.bottom,s.y2=t-a.left,s.index=n,s.x1New=void 0,s.x2New=void 0}),l(e,r),r.forEach(function(t){var e=t.index;i[e].top=t.x1New,i[e].bottom=t.x2New}),i}function l(t,e){e.sort(function(t,e){return t.x1-e.x1||t.index-e.index});var n={x1:-1/0,y1:-1/0,x2:0,y2:1/0,index:-1,x1New:0,x2New:0},r=[{start:-1/0,end:1/0,boundary:n}];e.forEach(function(t){for(var e=0;e=0&&r[n].start>=t.y2;)n--;var i,a,s,o,c=-1/0;for(s=e;s<=n;s++){i=r[s],a=i.boundary;var l;l=a.x2>t.x1?a.index>t.index?a.x1New:t.x1:void 0===a.x2New?(a.x2+t.x1)/2:a.x2New,l>c&&(c=l)}for(t.x1New=c,s=e;s<=n;s++)i=r[s],a=i.boundary,void 0===a.x2New?a.x2>t.x1?a.index>t.index&&(a.x2New=a.x2):a.x2New=c:a.x2New>c&&(a.x2New=Math.max(c,a.x2));var h=[],u=null;for(s=e;s<=n;s++){i=r[s],a=i.boundary;var d=a.x2>t.x2?a:t;u===d?h[h.length-1].end=i.end:(h.push({start:i.start,end:i.end,boundary:d}),u=d)}for(r[e].start=0&&r[o].start>=a.y1;o--)f=r[o].boundary===a;for(o=n+1;!f&&o\\376\\377([^<]+)/g,function(t,e){for(var n=e.replace(/\\([0-3])([0-7])([0-7])/g,function(t,e,n,r){return String.fromCharCode(64*e+8*n+1*r)}),r="",i=0;i=32&&a<127&&60!==a&&62!==a&&38!==a?String.fromCharCode(a):"&#x"+(65536+a).toString(16).substring(1)+";"}return">"+r})}function i(t){if("string"==typeof t){t=r(t);t=(new DOMParser).parseFromString(t,"application/xml")}else t instanceof Document||s("Metadata: Invalid metadata object");this.metaDocument=t,this.metadata=Object.create(null),this.parse()}var a=n(0),s=a.error;i.prototype={parse:function(){var t=this.metaDocument,e=t.documentElement;if("rdf:rdf"!==e.nodeName.toLowerCase())for(e=e.firstChild;e&&"rdf:rdf"!==e.nodeName.toLowerCase();)e=e.nextSibling;var n=e?e.nodeName.toLowerCase():null;if(e&&"rdf:rdf"===n&&e.hasChildNodes()){var r,i,a,s,o,c,l,h=e.childNodes;for(s=0,c=h.length;s0;)d[f++]=g&p?0:255,p>>=1;var m=0;for(f=0,0!==d[f]&&(c[0]=1,++m),n=1;n>2)+(d[f+1]?4:0)+(d[f-h+1]?8:0),l[A]&&(c[r+n]=l[A],++m),f++;if(d[f-h]!==d[f]&&(c[r+n]=d[f]?2:4,++m),m>1e3)return null}for(f=h*(s-1),r=e*o,0!==d[f]&&(c[r]=8,++m),n=1;n1e3)return null;var v=new Int32Array([0,o,-1,0,-o,0,0,0,1]),b=[];for(e=0;m&&e<=s;e++){for(var y=e*o,x=y+a;y>4,c[y]&=k>>2|k<<2),w.push(y%o),w.push(y/o|0),--m}while(C!==y);b.push(w),--e}}return function(t){t.save(),t.scale(1/a,-1/s),t.translate(0,-s),t.beginPath();for(var e=0,n=b.length;e>2),y=v.length,x=c+7>>3,S=4294967295,w=_.value?4278190080:255;for(r=0;rx?c:8*k-7,L=-8&P,E=0,R=0;T>=1}for(;n=u&&(a=l,s=c*a),n=0,i=s;i--;)m[n++]=g[p++],m[n++]=g[p++],m[n++]=g[p++],m[n++]=255;t.putImageData(f,0,r*C)}else b("bad image kind: "+e.kind)}function n(t,e){for(var n=e.height,r=e.width,i=n%C,a=(n-i)/C,s=0===i?a:a+1,o=t.createImageData(r,C),c=0,l=e.data,h=o.data,u=0;u>=1}t.putImageData(o,0,u*C)}}function a(t,e){for(var n=["strokeStyle","fillStyle","fillRule","globalAlpha","lineWidth","lineCap","lineJoin","miterLimit","globalCompositeOperation","font"],r=0,i=n.length;r>8,t[a-2]=t[a-2]*s+n*o>>8,t[a-1]=t[a-1]*s+r*o>>8}}}function o(t,e,n){for(var r=t.length,i=3;i>8]>>8:e[i]*a>>16}}function L(t,e,n,r,i,a,c){var l,h=!!a,u=h?a[0]:0,d=h?a[1]:0,f=h?a[2]:0;l="Luminosity"===i?v:o;for(var p=Math.min(r,Math.ceil(1048576/n)),g=0;g10&&"function"==typeof n,h=l?Date.now()+15:0,d=0,f=this.commonObjs,p=this.objs;;){if(void 0!==r&&s===r.nextBreakPoint)return r.breakIt(s,n),s;if((c=a[s])!==u.dependency)this[c].apply(this,i[s]);else for(var g=i[s],m=0,A=g.length;m10){if(Date.now()>h)return n(),s;d=0}}},endDrawing:function(){null!==this.current.activeSMask&&this.endSMaskGroup(),this.ctx.restore(),this.transparentCanvas&&(this.ctx=this.compositeCtx,this.ctx.save(),this.ctx.setTransform(1,0,0,1,0,0),this.ctx.drawImage(this.transparentCanvas,0,0),this.ctx.restore(),this.transparentCanvas=null),this.cachedCanvases.clear(),k.clear(),this.imageLayer&&this.imageLayer.endLayout()},setLineWidth:function(t){this.current.lineWidth=t,this.ctx.lineWidth=t},setLineCap:function(t){this.ctx.lineCap=R[t]},setLineJoin:function(t){this.ctx.lineJoin=I[t]},setMiterLimit:function(t){this.ctx.miterLimit=t},setDash:function(t,e){var n=this.ctx;void 0!==n.setLineDash&&(n.setLineDash(t),n.lineDashOffset=e)},setRenderingIntent:function(t){},setFlatness:function(t){},setGState:function(t){for(var e=0,n=t.length;e0&&this.stateStack[this.stateStack.length-1].activeSMask===this.current.activeSMask?this.suspendSMaskGroup():this.endSMaskGroup()),this.current.activeSMask=a?this.tempSMask:null,this.current.activeSMask&&this.beginSMaskGroup(),this.tempSMask=null}}},beginSMaskGroup:function(){var t=this.current.activeSMask,e=t.canvas.width,n=t.canvas.height,r="smaskGroupAt"+this.groupLevel,i=this.cachedCanvases.getCanvas(r,e,n,!0),s=this.ctx,o=s.mozCurrentTransform;this.ctx.save();var c=i.context;c.scale(1/t.scaleX,1/t.scaleY),c.translate(-t.offsetX,-t.offsetY),c.transform.apply(c,o),t.startTransformInverse=c.mozCurrentTransformInverse,a(s,c),this.ctx=c,this.setGState([["BM","source-over"],["ca",1],["CA",1]]),this.groupStack.push(s),this.groupLevel++},suspendSMaskGroup:function(){var t=this.ctx;this.groupLevel--,this.ctx=this.groupStack.pop(),E(this.ctx,this.current.activeSMask,t),this.ctx.restore(),this.ctx.save(),a(t,this.ctx),this.current.resumeSMaskCtx=t;var e=f.transform(this.current.activeSMask.startTransformInverse,t.mozCurrentTransform);this.ctx.transform.apply(this.ctx,e),t.save(),t.setTransform(1,0,0,1,0,0),t.clearRect(0,0,t.canvas.width,t.canvas.height),t.restore()},resumeSMaskGroup:function(){var t=this.current.resumeSMaskCtx,e=this.ctx;this.ctx=t,this.groupStack.push(e),this.groupLevel++},endSMaskGroup:function(){var t=this.ctx;this.groupLevel--,this.ctx=this.groupStack.pop(),E(this.ctx,this.current.activeSMask,t),this.ctx.restore(),a(t,this.ctx);var e=f.transform(this.current.activeSMask.startTransformInverse,t.mozCurrentTransform);this.ctx.transform.apply(this.ctx,e)},save:function(){this.ctx.save();var t=this.current;this.stateStack.push(t),this.current=t.clone(),this.current.resumeSMaskCtx=null},restore:function(){this.current.resumeSMaskCtx&&this.resumeSMaskGroup(),null===this.current.activeSMask||0!==this.stateStack.length&&this.stateStack[this.stateStack.length-1].activeSMask===this.current.activeSMask||this.endSMaskGroup(),0!==this.stateStack.length&&(this.current=this.stateStack.pop(),this.ctx.restore(),this.pendingClip=null,this.cachedGetSinglePixelWidth=null)},transform:function(t,e,n,r,i,a){this.ctx.transform(t,e,n,r,i,a),this.cachedGetSinglePixelWidth=null},constructPath:function(t,e){for(var n=this.ctx,r=this.current,i=r.x,a=r.y,s=0,o=0,c=t.length;s100?100:e;this.current.fontSizeScale=e/l;var h=s+" "+a+" "+l+"px "+o;this.ctx.font=h}},setTextRenderingMode:function(t){this.current.textRenderingMode=t},setTextRise:function(t){this.current.textRise=t},moveText:function(t,e){this.current.x=this.current.lineX+=t,this.current.y=this.current.lineY+=e},setLeadingMoveText:function(t,e){this.setLeading(-e),this.moveText(t,e)},setTextMatrix:function(t,e,n,r,i,a){this.current.textMatrix=[t,e,n,r,i,a],this.current.textMatrixScale=Math.sqrt(t*t+e*e),this.current.x=this.current.lineX=0,this.current.y=this.current.lineY=0},nextLine:function(){this.moveText(0,this.current.leading)},paintChar:function(t,e,n){var r,i=this.ctx,a=this.current,s=a.font,o=a.textRenderingMode,c=a.fontSize/a.fontSizeScale,l=o&d.FILL_STROKE_MASK,h=!!(o&d.ADD_TO_PATH_FLAG);if((s.disableFontFace||h)&&(r=s.getPathGenerator(this.commonObjs,t)),s.disableFontFace?(i.save(),i.translate(e,n),i.beginPath(),r(i,c),l!==d.FILL&&l!==d.FILL_STROKE||i.fill(),l!==d.STROKE&&l!==d.FILL_STROKE||i.stroke(),i.restore()):(l!==d.FILL&&l!==d.FILL_STROKE||i.fillText(t,e,n),l!==d.STROKE&&l!==d.FILL_STROKE||i.strokeText(t,e,n)),h){(this.pendingTextPaths||(this.pendingTextPaths=[])).push({transform:i.mozCurrentTransform,x:e,y:n,fontSize:c,addToPath:r})}},get isFontSubpixelAAEnabled(){var t=this.canvasFactory.create(10,10).context;t.scale(1.5,1),t.fillText("I",0,10);for(var e=t.getImageData(0,0,10,10).data,n=!1,r=3;r0&&e[r]<255){n=!0;break}return y(this,"isFontSubpixelAAEnabled",n)},showText:function(t){var e=this.current,n=e.font;if(n.isType3Font)return this.showType3Text(t);var r=e.fontSize;if(0!==r){var i=this.ctx,a=e.fontSizeScale,s=e.charSpacing,o=e.wordSpacing,c=e.fontDirection,l=e.textHScale*c,h=t.length,u=n.vertical,f=u?1:-1,p=n.defaultVMetrics,g=r*e.fontMatrix[0],A=e.textRenderingMode===d.FILL&&!n.disableFontFace;i.save(),i.transform.apply(i,e.textMatrix),i.translate(e.x,e.y+e.textRise),e.patternFill&&(i.fillStyle=e.fillColor.getPattern(i,this)),c>0?i.scale(l,-1):i.scale(l,1);var v=e.lineWidth,b=e.textMatrixScale;if(0===b||0===v){var y=e.textRenderingMode&d.FILL_STROKE_MASK;y!==d.STROKE&&y!==d.FILL_STROKE||(this.cachedGetSinglePixelWidth=null,v=.65*this.getSinglePixelWidth())}else v/=b;1!==a&&(i.scale(a,a),v/=a),i.lineWidth=v;var x,S=0;for(x=0;x0){var M=1e3*i.measureText(E).width/r*a;if(I4096&&(h=c/4096,c=4096),l>4096&&(u=l/4096,l=4096);var d="groupAt"+this.groupLevel;t.smask&&(d+="_smask_"+this.smaskCounter++%2);var m=this.cachedCanvases.getCanvas(d,c,l,!0),A=m.context;A.scale(1/h,1/u),A.translate(-s,-o),A.transform.apply(A,n),t.smask?this.smaskStack.push({canvas:m.canvas,context:A,offsetX:s,offsetY:o,scaleX:h,scaleY:u,subtype:t.smask.subtype,backdrop:t.smask.backdrop,transferMap:t.smask.transferMap||null,startTransformInverse:null}):(e.setTransform(1,0,0,1,0,0),e.translate(s,o),e.scale(h,u)),a(e,A),this.ctx=A,this.setGState([["BM","source-over"],["ca",1],["CA",1]]),this.groupStack.push(e),this.groupLevel++,this.current.activeSMask=null},endGroup:function(t){this.groupLevel--;var e=this.ctx;this.ctx=this.groupStack.pop(),void 0!==this.ctx.imageSmoothingEnabled?this.ctx.imageSmoothingEnabled=!1:this.ctx.mozImageSmoothingEnabled=!1,t.smask?this.tempSMask=this.smaskStack.pop():this.ctx.drawImage(e.canvas,0,0),this.restore()},beginAnnotations:function(){this.save(),this.current=new P,this.baseTransform&&this.ctx.setTransform.apply(this.ctx,this.baseTransform)},endAnnotations:function(){this.restore()},beginAnnotation:function(t,e,n){if(this.save(),A(t)&&4===t.length){var r=t[2]-t[0],i=t[3]-t[1];this.ctx.rect(t[0],t[1],r,i),this.clip(),this.endPath()}this.transform.apply(this,e),this.transform.apply(this,n)},endAnnotation:function(){this.restore()},paintJpegXObject:function(t,e,n){var r=this.objs.get(t);if(!r)return void x("Dependent image isn't ready yet");this.save();var i=this.ctx;if(i.scale(1/e,-1/n),i.drawImage(r,0,0,r.width,r.height,0,-n,e,n),this.imageLayer){var a=i.mozCurrentTransformInverse,s=this.getCanvasPosition(0,0);this.imageLayer.appendImage({objId:t,left:s[0],top:s[1],width:e/a[0],height:n/a[3]})}this.restore()},paintImageMaskXObject:function(t){var e=this.ctx,r=t.width,a=t.height,s=this.current.fillColor,o=this.current.patternFill,c=this.processingType3;if(c&&void 0===c.compiled&&(c.compiled=r<=1e3&&a<=1e3?i({data:t.data,width:r,height:a}):null),c&&c.compiled)return void c.compiled(e);var l=this.cachedCanvases.getCanvas("maskCanvas",r,a),h=l.context;h.save(),n(h,t),h.globalCompositeOperation="source-in",h.fillStyle=o?s.getPattern(h,this):s,h.fillRect(0,0,r,a),h.restore(),this.paintInlineImageXObject(l.canvas)},paintImageMaskXObjectRepeat:function(t,e,r,i){var a=t.width,s=t.height,o=this.current.fillColor,c=this.current.patternFill,l=this.cachedCanvases.getCanvas("maskCanvas",a,s),h=l.context;h.save(),n(h,t),h.globalCompositeOperation="source-in",h.fillStyle=c?o.getPattern(h,this):o,h.fillRect(0,0,a,s),h.restore() -;for(var u=this.ctx,d=0,f=i.length;d2&&g>1||f>2&&m>1;){var v=g,b=m;h>2&&g>1&&(v=Math.ceil(g/2),h/=g/v),f>2&&m>1&&(b=Math.ceil(m/2),f/=m/b),s=this.cachedCanvases.getCanvas(A,v,b),p=s.context,p.clearRect(0,0,v,b),p.drawImage(a,0,0,g,m,0,0,v,b),a=s.canvas,g=v,m=b,A="prescale1"===A?"prescale2":"prescale1"}if(i.drawImage(a,0,0,g,m,0,-r,n,r),this.imageLayer){var y=this.getCanvasPosition(0,-r);this.imageLayer.appendImage({imgData:t,left:y[0],top:y[1],width:n/o[0],height:r/o[3]})}this.restore()},paintInlineImageXObjectGroup:function(t,n){var r=this.ctx,i=t.width,a=t.height,s=this.cachedCanvases.getCanvas("inlineImage",i,a);e(s.context,t);for(var o=0,c=n.length;o0&&!r.isSyncFontLoadingSupported?this.prepareFontLoadEvent(n,i,f):f.complete()},r.prototype.queueLoadingCallback=function(t){function e(){for(a(!i.end,"completeRequest() cannot be called twice"),i.end=Date.now();n.requests.length>0&&n.requests[0].end;){var t=n.requests.shift();setTimeout(t.callback,0)}}var n=this.loadingContext,r="pdfjs-font-loading-"+n.nextRequestId++,i={id:r,complete:e,callback:t,started:Date.now()};return n.requests.push(i),i},r.prototype.prepareFontLoadEvent=function(t,e,n){function r(t,e){return t.charCodeAt(e)<<24|t.charCodeAt(e+1)<<16|t.charCodeAt(e+2)<<8|255&t.charCodeAt(e+3)}function i(t,e,n,r){return t.substr(0,e)+r+t.substr(e+n)}function a(t,e){return++d>30?(l("Load test font never loaded."),void e()):(u.font="30px "+t,u.fillText(".",0,20),u.getImageData(0,0,1,1).data[3]>0?void e():void setTimeout(a.bind(null,t,e)))}var s,c,h=document.createElement("canvas");h.width=1,h.height=1;var u=h.getContext("2d"),d=0,f="lt"+Date.now()+this.loadTestFontId++,p=this.loadTestFont;p=i(p,976,f.length,f);var g=r(p,16);for(s=0,c=f.length-3;s=14&&(t=!0),t};Object.defineProperty(r,"isSyncFontLoadingSupported",{get:function(){return c(r,"isSyncFontLoadingSupported",u())},enumerable:!0,configurable:!0});var d={get value(){return c(this,"value",i.isEvalSupported())}},f=function(){function t(t,e){this.compiledGlyphs=Object.create(null);for(var n in t)this[n]=t[n];this.options=e}return t.prototype={createNativeFontFace:function(){if(!this.data)return null;if(this.options.disableFontFace)return this.disableFontFace=!0,null;var t=new FontFace(this.loadedName,this.data,{});return this.options.fontRegistry&&this.options.fontRegistry.registerFont(this),t},createFontFaceRule:function(){if(!this.data)return null;if(this.options.disableFontFace)return this.disableFontFace=!0,null;var t=s(new Uint8Array(this.data)),e=this.loadedName,n="url(data:"+this.mimetype+";base64,"+btoa(t)+");",r='@font-face { font-family:"'+e+'";src:'+n+"}";return this.options.fontRegistry&&this.options.fontRegistry.registerFont(this,n),r},getPathGenerator:function(t,e){if(!(e in this.compiledGlyphs)){var n,r,i,a=t.get(this.loadedName+"_path_"+e);if(this.options.isEvalSupported&&d.value){var s,o="";for(r=0,i=a.length;rl[r+1]&&(c=n,n=r,r=c,c=a,a=s,s=c),l[r+1]>l[i+1]&&(c=r,r=i,i=c,c=s,s=o,o=c),l[n+1]>l[r+1]&&(c=n,n=r,r=c,c=a,a=s,s=c);var f=(l[n]+e.offsetX)*e.scaleX,p=(l[n+1]+e.offsetY)*e.scaleY,g=(l[r]+e.offsetX)*e.scaleX,m=(l[r+1]+e.offsetY)*e.scaleY,A=(l[i]+e.offsetX)*e.scaleX,v=(l[i+1]+e.offsetY)*e.scaleY;if(!(p>=v))for(var b,y,x,S,w,k,C,_,T,P=h[a],L=h[a+1],E=h[a+2],R=h[s],I=h[s+1],F=h[s+2],O=h[o],N=h[o+1],M=h[o+2],D=Math.round(p),j=Math.round(v),U=D;U<=j;U++){Uv?1:m===v?0:(m-U)/(m-v),b=g-(g-A)*T,y=R-(R-O)*T,x=I-(I-N)*T,S=F-(F-M)*T),T=Uv?1:(p-U)/(p-v),w=f-(f-A)*T,k=P-(P-O)*T,C=L-(L-N)*T,_=E-(E-M)*T;for(var B=Math.round(Math.min(b,w)),W=Math.round(Math.max(b,w)),G=d*U+4*B,X=B;X<=W;X++)T=(b-X)/(b-w),T=T<0?0:T>1?1:T,u[G++]=y-(y-k)*T|0,u[G++]=x-(x-C)*T|0,u[G++]=S-(S-_)*T|0,u[G++]=255}}function e(e,n,r){var i,a,s=n.coords,o=n.colors;switch(n.type){case"lattice":var c=n.verticesPerRow,h=Math.floor(s.length/c)-1,u=c-1;for(i=0;i=0,c=/Chrome\/(39|40)\./.test(r),l=r.indexOf("CriOS")>=0,h=r.indexOf("Trident")>=0,u=/\b(iPad|iPhone|iPod)(?=;)/.test(r),d=r.indexOf("Opera")>=0,f=/Safari\//.test(r)&&!/(Chrome\/|Android\s)/.test(r),p="object"===("undefined"==typeof window?"undefined":e(window))&&"object"===("undefined"==typeof document?"undefined":e(document));"undefined"==typeof PDFJS&&(n.PDFJS={}),PDFJS.compatibilityChecked=!0,function(){function t(t,e){return new o(this.slice(t,e))}function r(t,e){arguments.length<2&&(e=0);for(var n=0,r=t.length;n>>0},set:function(e){var n=this.buffer,r=t<<2;n[r]=255&e,n[r+1]=e>>8&255,n[r+2]=e>>16&255,n[r+3]=e>>>24&255}}}function s(t){for(;c>2,l=(3&a)<<4|s>>4,h=n+1>6:64,u=n+2>(-2*r&6)):0)n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(n);return a}}}(),function(){void 0===Function.prototype.bind&&(Function.prototype.bind=function(t){var e=this,n=Array.prototype.slice.call(arguments,1);return function(){var r=n.concat(Array.prototype.slice.call(arguments));return e.apply(t,r)}})}(),function(){if(p){"dataset"in document.createElement("div")||Object.defineProperty(HTMLElement.prototype,"dataset",{get:function(){if(this._dataset)return this._dataset;for(var t={},e=0,n=this.attributes.length;e=0&&r&&a.splice(s,1),t.className=a.join(" "),s>=0}if(p){if(!("classList"in document.createElement("div"))){var e={add:function(e){t(this.element,e,!0,!1)},contains:function(e){return t(this.element,e,!1,!1)},remove:function(e){t(this.element,e,!1,!0)},toggle:function(e){t(this.element,e,!0,!0)}};Object.defineProperty(HTMLElement.prototype,"classList",{get:function(){if(this._classList)return this._classList;var t=Object.create(e,{element:{value:this,writable:!1,enumerable:!0}});return Object.defineProperty(this,"_classList",{value:t,writable:!1,enumerable:!1}),t},enumerable:!0})}}}(),function(){if(!("undefined"==typeof importScripts||"console"in n)){var t={},e={log:function(){var t=Array.prototype.slice.call(arguments);n.postMessage({targetName:"main",action:"console_log",data:t})},error:function(){var t=Array.prototype.slice.call(arguments);n.postMessage({targetName:"main",action:"console_error",data:t})},time:function(e){t[e]=Date.now()},timeEnd:function(e){var n=t[e];if(!n)throw new Error("Unknown timer name "+e);this.log("Timer:",e,Date.now()-n)}};n.console=e}}(),function(){if(p)"console"in window?"bind"in console.log||(console.log=function(t){return function(e){return t(e)}}(console.log),console.error=function(t){return function(e){return t(e)}}(console.error),console.warn=function(t){return function(e){return t(e)}}(console.warn)):window.console={log:function(){},error:function(){},warn:function(){}}}(),function(){function t(t){e(t.target)&&t.stopPropagation()}function e(t){return t.disabled||t.parentNode&&e(t.parentNode)}d&&document.addEventListener("click",t,!0)}(),function(){(h||l)&&(PDFJS.disableCreateObjectURL=!0)}(),function(){"undefined"!=typeof navigator&&("language"in navigator||(PDFJS.locale=navigator.userLanguage||"en-US"))}(),function(){(f||a||c||u)&&(PDFJS.disableRange=!0,PDFJS.disableStream=!0)}(),function(){p&&(history.pushState&&!a||(PDFJS.disableHistory=!0))}(),function(){if(p)if(window.CanvasPixelArray)"function"!=typeof window.CanvasPixelArray.prototype.set&&(window.CanvasPixelArray.prototype.set=function(t){for(var e=0,n=this.length;e0;){var n=this.handlers.shift(),r=n.thisPromise._status,i=n.thisPromise._value;try{1===r?"function"==typeof n.onResolve&&(i=n.onResolve(i)):"function"==typeof n.onReject&&(i=n.onReject(i),r=1,n.thisPromise._unhandledRejection&&this.removeUnhandeledRejection(n.thisPromise))}catch(e){r=t,i=e}if(n.nextPromise._updateStatus(r,i),Date.now()>=e)break}if(this.handlers.length>0)return void setTimeout(this.runHandlers.bind(this),0);this.running=!1},addUnhandledRejection:function(t){this.unhandledRejections.push({promise:t,time:Date.now()}),this.scheduleRejectionCheck()},removeUnhandeledRejection:function(t){t._unhandledRejection=!1;for(var e=0;e500){var n=this.unhandledRejections[e].promise._value,r="Unhandled rejection: "+n;n.stack&&(r+="\n"+n.stack);try{throw new Error(r)}catch(t){console.warn(r)}this.unhandledRejections.splice(e),e--}this.unhandledRejections.length&&this.scheduleRejectionCheck()}.bind(this),500))}},r=function(t){this._status=0,this._handlers=[];try{t.call(this,this._resolve.bind(this),this._reject.bind(this))}catch(t){this._reject(t)}};r.all=function(e){function n(e){s._status!==t&&(c=[],a(e))}var i,a,s=new r(function(t,e){i=t,a=e}),o=e.length,c=[];if(0===o)return i(c),s;for(var l=0,h=e.length;l32&&e<127&&-1===[34,35,60,62,63,96].indexOf(e)?t:encodeURIComponent(t)}function s(t){var e=t.charCodeAt(0);return e>32&&e<127&&-1===[34,35,60,62,96].indexOf(e)?t:encodeURIComponent(t)}function o(e,n,o){function c(t){b.push(t)}var l=n||"scheme start",h=0,u="",A=!1,v=!1,b=[];t:for(;(e[h-1]!==p||0===h)&&!this._isInvalid;){var y=e[h];switch(l){case"scheme start":if(!y||!g.test(y)){if(n){c("Invalid scheme.");break t}u="",l="no scheme";continue}u+=y.toLowerCase(),l="scheme";break;case"scheme":if(y&&m.test(y))u+=y.toLowerCase();else{if(":"!==y){if(n){if(y===p)break t;c("Code point not allowed in scheme: "+y);break t}u="",h=0,l="no scheme";continue}if(this._scheme=u,u="",n)break t;t(this._scheme)&&(this._isRelative=!0),l="file"===this._scheme?"relative":this._isRelative&&o&&o._scheme===this._scheme?"relative or authority":this._isRelative?"authority first slash":"scheme data"}break;case"scheme data":"?"===y?(this._query="?",l="query"):"#"===y?(this._fragment="#",l="fragment"):y!==p&&"\t"!==y&&"\n"!==y&&"\r"!==y&&(this._schemeData+=a(y));break;case"no scheme":if(o&&t(o._scheme)){l="relative";continue}c("Missing scheme."),r.call(this);break;case"relative or authority":if("/"!==y||"/"!==e[h+1]){c("Expected /, got: "+y),l="relative";continue}l="authority ignore slashes";break;case"relative":if(this._isRelative=!0,"file"!==this._scheme&&(this._scheme=o._scheme),y===p){this._host=o._host,this._port=o._port,this._path=o._path.slice(),this._query=o._query,this._username=o._username,this._password=o._password;break t}if("/"===y||"\\"===y)"\\"===y&&c("\\ is an invalid code point."),l="relative slash";else if("?"===y)this._host=o._host,this._port=o._port,this._path=o._path.slice(),this._query="?",this._username=o._username,this._password=o._password,l="query";else{if("#"!==y){var x=e[h+1],S=e[h+2];("file"!==this._scheme||!g.test(y)||":"!==x&&"|"!==x||S!==p&&"/"!==S&&"\\"!==S&&"?"!==S&&"#"!==S)&&(this._host=o._host,this._port=o._port,this._username=o._username,this._password=o._password,this._path=o._path.slice(),this._path.pop()),l="relative path";continue}this._host=o._host,this._port=o._port,this._path=o._path.slice(), -this._query=o._query,this._fragment="#",this._username=o._username,this._password=o._password,l="fragment"}break;case"relative slash":if("/"!==y&&"\\"!==y){"file"!==this._scheme&&(this._host=o._host,this._port=o._port,this._username=o._username,this._password=o._password),l="relative path";continue}"\\"===y&&c("\\ is an invalid code point."),l="file"===this._scheme?"file host":"authority ignore slashes";break;case"authority first slash":if("/"!==y){c("Expected '/', got: "+y),l="authority ignore slashes";continue}l="authority second slash";break;case"authority second slash":if(l="authority ignore slashes","/"!==y){c("Expected '/', got: "+y);continue}break;case"authority ignore slashes":if("/"!==y&&"\\"!==y){l="authority";continue}c("Expected authority, got: "+y);break;case"authority":if("@"===y){A&&(c("@ already seen."),u+="%40"),A=!0;for(var w=0;w=tt.infos&&console.log("Info: "+t)}function s(t){rt>=tt.warnings&&console.log("Warning: "+t)}function o(t){console.log("Deprecated API usage: "+t)}function c(t){throw rt>=tt.errors&&(console.log("Error: "+t),console.log(l())),new Error(t)}function l(){try{throw new Error}catch(t){return t.stack?t.stack.split("\n").slice(2).join("\n"):""}}function h(t,e){t||c(e)}function u(t,e){try{var n=new URL(t);if(!n.origin||"null"===n.origin)return!1}catch(t){return!1}var r=new URL(e,n);return n.origin===r.origin}function d(t){if(!t)return!1;switch(t.protocol){case"http:":case"https:":case"ftp:":case"mailto:":case"tel:":return!0;default:return!1}}function f(t,e){if(!t)return null;try{var n=e?new URL(t,e):new URL(t);if(d(n))return n}catch(t){}return null}function p(t,e,n){return Object.defineProperty(t,e,{value:n,enumerable:!0,configurable:!0,writable:!1}),n}function g(t){var e;return function(){return t&&(e=Object.create(null),t(e),t=null),e}}function m(t){return"string"!=typeof t?(s("The argument for removeNullCharacters must be a string."),t):t.replace(pt,"")}function A(t){h(null!==t&&"object"===(void 0===t?"undefined":X(t))&&void 0!==t.length,"Invalid argument for bytesToString");var e=t.length;if(e<8192)return String.fromCharCode.apply(null,t);for(var n=[],r=0;r>24&255,t>>16&255,t>>8&255,255&t)}function x(t){for(var e=1,n=0;t>e;)e<<=1,n++;return n}function w(t,e){return t[e]<<24>>24}function _(t,e){return t[e]<<8|t[e+1]}function T(t,e){return(t[e]<<24|t[e+1]<<16|t[e+2]<<8|t[e+3])>>>0}function C(){var t=new Uint8Array(4);return t[0]=1,1===new Uint32Array(t.buffer,0,1)[0]}function k(){try{return new Function(""),!0}catch(t){return!1}}function P(t){var e,n=t.length,r=[];if("þ"===t[0]&&"ÿ"===t[1])for(e=2;et[2]&&(e[0]=t[2],e[2]=t[0]),t[1]>t[3]&&(e[1]=t[3],e[3]=t[1]),e},t.intersect=function(e,n){function r(t,e){return t-e}var i=[e[0],e[2],n[0],n[2]].sort(r),a=[e[1],e[3],n[1],n[3]].sort(r),s=[];return e=t.normalizeRect(e),n=t.normalizeRect(n),(i[0]===e[0]&&i[1]===n[0]||i[0]===n[0]&&i[1]===e[0])&&(s[0]=i[1],s[2]=i[2],(a[0]===e[1]&&a[1]===n[1]||a[0]===n[1]&&a[1]===e[1])&&(s[1]=a[1],s[3]=a[2],s))},t.sign=function(t){return t<0?-1:1};var n=["","C","CC","CCC","CD","D","DC","DCC","DCCC","CM","","X","XX","XXX","XL","L","LX","LXX","LXXX","XC","","I","II","III","IV","V","VI","VII","VIII","IX"];return t.toRoman=function(t,e){h(I(t)&&t>0,"The number should be a positive integer.");for(var r,i=[];t>=1e3;)t-=1e3,i.push("M");r=t/100|0,t%=100,i.push(n[r]),r=t/10|0,t%=10,i.push(n[10+r]),i.push(n[20+t]);var a=i.join("");return e?a.toLowerCase():a},t.appendToArray=function(t,e){Array.prototype.push.apply(t,e)},t.prependToArray=function(t,e){Array.prototype.unshift.apply(t,e)},t.extendObj=function(t,e){for(var n in e)t[n]=e[n]},t.getInheritableProperty=function(t,e,n){for(;t&&!t.has(e);)t=t.get("Parent");return t?n?t.getArray(e):t.get(e):null},t.inherit=function(t,e,n){t.prototype=Object.create(e.prototype),t.prototype.constructor=t;for(var r in n)t.prototype[r]=n[r]},t.loadScript=function(t,e){var n=document.createElement("script"),r=!1;n.setAttribute("src",t),e&&(n.onload=function(){r||e(),r=!0}),document.getElementsByTagName("head")[0].appendChild(n)},t}(),At=function(){function t(t,e,n,r,i,a){this.viewBox=t,this.scale=e,this.rotation=n,this.offsetX=r,this.offsetY=i;var s,o,c,l,h=(t[2]+t[0])/2,u=(t[3]+t[1])/2;switch(n%=360,n=n<0?n+360:n){case 180:s=-1,o=0,c=0,l=1;break;case 90:s=0,o=1,c=1,l=0;break;case 270:s=0,o=-1,c=-1,l=0;break;default:s=1,o=0,c=0,l=-1}a&&(c=-c,l=-l);var d,f,p,g;0===s?(d=Math.abs(u-t[1])*e+r,f=Math.abs(h-t[0])*e+i,p=Math.abs(t[3]-t[1])*e,g=Math.abs(t[2]-t[0])*e):(d=Math.abs(h-t[0])*e+r,f=Math.abs(u-t[1])*e+i,p=Math.abs(t[2]-t[0])*e,g=Math.abs(t[3]-t[1])*e),this.transform=[s*e,o*e,c*e,l*e,d-s*e*h-c*e*u,f-o*e*h-l*e*u],this.width=p,this.height=g,this.fontScale=e}return t.prototype={clone:function(e){e=e||{};var n="scale"in e?e.scale:this.scale,r="rotation"in e?e.rotation:this.rotation;return new t(this.viewBox.slice(),n,r,this.offsetX,this.offsetY,e.dontFlip)},convertToViewportPoint:function(t,e){return mt.applyTransform([t,e],this.transform)},convertToViewportRectangle:function(t){var e=mt.applyTransform([t[0],t[1]],this.transform),n=mt.applyTransform([t[2],t[3]],this.transform);return[e[0],e[1],n[0],n[1]]},convertToPdfPoint:function(t,e){return mt.applyInverseTransform([t,e],this.transform)}},t}(),vt=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,728,711,710,729,733,731,730,732,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8226,8224,8225,8230,8212,8211,402,8260,8249,8250,8722,8240,8222,8220,8221,8216,8217,8218,8482,64257,64258,321,338,352,376,381,305,322,339,353,382,0,8364],bt=function(){function t(t,e,n){for(;t.lengtha&&(a=s.length)}for(e=0,n=r.length;e>2]+t[(3&c)<<4|l>>4]+t[s+1>6:64]+t[s+20?e:t.length,n>0?n:t.length);return t.substring(t.lastIndexOf("/",r)+1,r)}function s(t){var e=l.globalScope.PDFJS;switch(t){case"pdfBug":return!!e&&e.pdfBug;case"disableAutoFetch":return!!e&&e.disableAutoFetch;case"disableStream":return!!e&&e.disableStream;case"disableRange":return!!e&&e.disableRange;case"disableFontFace":return!!e&&e.disableFontFace;case"disableCreateObjectURL":return!!e&&e.disableCreateObjectURL;case"disableWebGL":return!e||e.disableWebGL;case"cMapUrl":return e?e.cMapUrl:null;case"cMapPacked":return!!e&&e.cMapPacked;case"postMessageTransfers":return!e||e.postMessageTransfers;case"workerPort":return e?e.workerPort:null;case"workerSrc":return e?e.workerSrc:null;case"disableWorker":return!!e&&e.disableWorker;case"maxImageSize":return e?e.maxImageSize:-1;case"imageResourcesPath":return e?e.imageResourcesPath:"";case"isEvalSupported":return!e||e.isEvalSupported;case"externalLinkTarget":if(!e)return p.NONE;switch(e.externalLinkTarget){case p.NONE:case p.SELF:case p.BLANK:case p.PARENT:case p.TOP:return e.externalLinkTarget}return(0,l.warn)("PDFJS.externalLinkTarget is invalid: "+e.externalLinkTarget),e.externalLinkTarget=p.NONE,p.NONE;case"externalLinkRel":return e?e.externalLinkRel:h;case"enableStats":return!(!e||!e.enableStats);case"pdfjsNext":return!(!e||!e.pdfjsNext);default:throw new Error("Unknown default setting: "+t)}}function o(){switch(s("externalLinkTarget")){case p.NONE:return!1;case p.SELF:case p.BLANK:case p.PARENT:case p.TOP:return!0}}function c(t,e){(0,l.deprecated)("isValidUrl(), please use createValidAbsoluteUrl() instead.");var n=e?"http://example.com":null;return null!==(0,l.createValidAbsoluteUrl)(t,n)}Object.defineProperty(e,"__esModule",{value:!0}),e.DOMCMapReaderFactory=e.DOMCanvasFactory=e.DEFAULT_LINK_REL=e.getDefaultSetting=e.LinkTarget=e.getFilenameFromUrl=e.isValidUrl=e.isExternalLinkTargetSet=e.addLinkAttributes=e.RenderingCancelledException=e.CustomStyle=void 0;var l=n(0),h="noopener noreferrer nofollow";r.prototype={create:function(t,e){(0,l.assert)(t>0&&e>0,"invalid canvas size");var n=document.createElement("canvas"),r=n.getContext("2d");return n.width=t,n.height=e,{canvas:n,context:r}},reset:function(t,e,n){(0,l.assert)(t.canvas,"canvas is not specified"),(0,l.assert)(e>0&&n>0,"invalid canvas size"),t.canvas.width=e,t.canvas.height=n},destroy:function(t){(0,l.assert)(t.canvas,"canvas is not specified"),t.canvas.width=0,t.canvas.height=0,t.canvas=null,t.context=null}};var u=function(){function t(t){this.baseUrl=t.baseUrl||null,this.isCompressed=t.isCompressed||!1}return t.prototype={fetch:function(t){var e=t.name;return e?new Promise(function(t,n){var r=this.baseUrl+e+(this.isCompressed?".bcmap":""),i=new XMLHttpRequest;i.open("GET",r,!0),this.isCompressed&&(i.responseType="arraybuffer"),i.onreadystatechange=function(){if(i.readyState===XMLHttpRequest.DONE){if(200===i.status||0===i.status){var e;if(this.isCompressed&&i.response?e=new Uint8Array(i.response):!this.isCompressed&&i.responseText&&(e=(0,l.stringToBytes)(i.responseText)),e)return void t({cMapData:e,compressionType:this.isCompressed?l.CMapCompressionType.BINARY:l.CMapCompressionType.NONE})}n(new Error("Unable to load "+(this.isCompressed?"binary ":"")+"CMap at: "+r))}}.bind(this),i.send(null)}.bind(this)):Promise.reject(new Error("CMap name must be specified."))}},t}(),d=function(){function t(){}var e=["ms","Moz","Webkit","O"],n=Object.create(null);return t.getProp=function(t,r){if(1===arguments.length&&"string"==typeof n[t])return n[t];r=r||document.documentElement;var i,a,s=r.style;if("string"==typeof s[t])return n[t]=t;a=t.charAt(0).toUpperCase()+t.slice(1);for(var o=0,c=e.length;o0){s.style.borderWidth=e.borderStyle.width+"px",e.borderStyle.style!==a.AnnotationBorderStyleType.UNDERLINE&&(o-=2*e.borderStyle.width,c-=2*e.borderStyle.width);var h=e.borderStyle.horizontalCornerRadius,u=e.borderStyle.verticalCornerRadius;if(h>0||u>0){var d=h+"px / "+u+"px";i.CustomStyle.setProp("borderRadius",s,d)}switch(e.borderStyle.style){case a.AnnotationBorderStyleType.SOLID:s.style.borderStyle="solid";break;case a.AnnotationBorderStyleType.DASHED:s.style.borderStyle="dashed";break;case a.AnnotationBorderStyleType.BEVELED:(0,a.warn)("Unimplemented border style: beveled");break;case a.AnnotationBorderStyleType.INSET:(0,a.warn)("Unimplemented border style: inset");break;case a.AnnotationBorderStyleType.UNDERLINE:s.style.borderBottomStyle="solid"}e.color?s.style.borderColor=a.Util.makeCssRgb(0|e.color[0],0|e.color[1],0|e.color[2]):s.style.borderWidth=0}return s.style.left=l[0]+"px",s.style.top=l[1]+"px",s.style.width=o+"px",s.style.height=c+"px",s},_createPopup:function(t,e,n){e||(e=document.createElement("div"),e.style.height=t.style.height,e.style.width=t.style.width,t.appendChild(e));var r=new g({container:t,trigger:e,color:n.color,title:n.title,contents:n.contents,hideWrapper:!0}),i=r.render();i.style.left=t.style.width,t.appendChild(i)},render:function(){throw new Error("Abstract method AnnotationElement.render called")}},t}(),o=function(){function t(t){s.call(this,t,!0)}return a.Util.inherit(t,s,{render:function(){this.container.className="linkAnnotation";var t=document.createElement("a");return(0,i.addLinkAttributes)(t,{url:this.data.url,target:this.data.newWindow?i.LinkTarget.BLANK:void 0}),this.data.url||(this.data.action?this._bindNamedAction(t,this.data.action):this._bindLink(t,this.data.dest)),this.container.appendChild(t),this.container},_bindLink:function(t,e){var n=this;t.href=this.linkService.getDestinationHash(e),t.onclick=function(){return e&&n.linkService.navigateTo(e),!1},e&&(t.className="internalLink")},_bindNamedAction:function(t,e){var n=this;t.href=this.linkService.getAnchorUrl(""),t.onclick=function(){return n.linkService.executeNamedAction(e),!1},t.className="internalLink"}}),t}(),c=function(){function t(t){var e=!!(t.data.hasPopup||t.data.title||t.data.contents);s.call(this,t,e)}return a.Util.inherit(t,s,{render:function(){this.container.className="textAnnotation";var t=document.createElement("img");return t.style.height=this.container.style.height,t.style.width=this.container.style.width,t.src=this.imageResourcesPath+"annotation-"+this.data.name.toLowerCase()+".svg",t.alt="[{{type}} Annotation]",t.dataset.l10nId="text_annotation_type",t.dataset.l10nArgs=JSON.stringify({type:this.data.name}),this.data.hasPopup||this._createPopup(this.container,t,this.data),this.container.appendChild(t),this.container}}),t}(),l=function(){function t(t,e){s.call(this,t,e)}return a.Util.inherit(t,s,{render:function(){return this.container}}),t}(),h=function(){function t(t){var e=t.renderInteractiveForms||!t.data.hasAppearance&&!!t.data.fieldValue;l.call(this,t,e)}var e=["left","center","right"];return a.Util.inherit(t,l,{render:function(){this.container.className="textWidgetAnnotation";var t=null;if(this.renderInteractiveForms){if(this.data.multiLine?(t=document.createElement("textarea"),t.textContent=this.data.fieldValue):(t=document.createElement("input"),t.type="text",t.setAttribute("value",this.data.fieldValue)),t.disabled=this.data.readOnly,null!==this.data.maxLen&&(t.maxLength=this.data.maxLen),this.data.comb){var n=this.data.rect[2]-this.data.rect[0],r=n/this.data.maxLen;t.classList.add("comb"),t.style.letterSpacing="calc("+r+"px - 1ch)"}}else{t=document.createElement("div"),t.textContent=this.data.fieldValue,t.style.verticalAlign="middle",t.style.display="table-cell";var i=null;this.data.fontRefName&&(i=this.page.commonObjs.getData(this.data.fontRefName)),this._setTextStyle(t,i)}return null!==this.data.textAlignment&&(t.style.textAlign=e[this.data.textAlignment]),this.container.appendChild(t),this.container},_setTextStyle:function(t,e){var n=t.style;if(n.fontSize=this.data.fontSize+"px",n.direction=this.data.fontDirection<0?"rtl":"ltr",e){n.fontWeight=e.black?e.bold?"900":"bold":e.bold?"bold":"normal",n.fontStyle=e.italic?"italic":"normal";var r=e.loadedName?'"'+e.loadedName+'", ':"",i=e.fallbackName||"Helvetica, sans-serif";n.fontFamily=r+i}}}),t}(),u=function(){function t(t){l.call(this,t,t.renderInteractiveForms)}return a.Util.inherit(t,l,{render:function(){this.container.className="buttonWidgetAnnotation checkBox";var t=document.createElement("input");return t.disabled=this.data.readOnly,t.type="checkbox",this.data.fieldValue&&"Off"!==this.data.fieldValue&&t.setAttribute("checked",!0),this.container.appendChild(t),this.container}}),t}(),d=function(){function t(t){l.call(this,t,t.renderInteractiveForms)}return a.Util.inherit(t,l,{render:function(){this.container.className="buttonWidgetAnnotation radioButton";var t=document.createElement("input");return t.disabled=this.data.readOnly,t.type="radio",t.name=this.data.fieldName,this.data.fieldValue===this.data.buttonValue&&t.setAttribute("checked",!0),this.container.appendChild(t),this.container}}),t}(),f=function(){function t(t){l.call(this,t,t.renderInteractiveForms)}return a.Util.inherit(t,l,{render:function(){this.container.className="choiceWidgetAnnotation";var t=document.createElement("select");t.disabled=this.data.readOnly,this.data.combo||(t.size=this.data.options.length,this.data.multiSelect&&(t.multiple=!0));for(var e=0,n=this.data.options.length;e=0&&i.setAttribute("selected",!0),t.appendChild(i)}return this.container.appendChild(t),this.container}}),t}(),p=function(){function t(t){var e=!(!t.data.title&&!t.data.contents);s.call(this,t,e)}var e=["Line"];return a.Util.inherit(t,s,{render:function(){if(this.container.className="popupAnnotation",e.indexOf(this.data.parentType)>=0)return this.container;var t='[data-annotation-id="'+this.data.parentId+'"]',n=this.layer.querySelector(t);if(!n)return this.container;var r=new g({container:this.container,trigger:n,color:this.data.color,title:this.data.title,contents:this.data.contents}),a=parseFloat(n.style.left),s=parseFloat(n.style.width);return i.CustomStyle.setProp("transformOrigin",this.container,-(a+s)+"px -"+n.style.top),this.container.style.left=a+s+"px",this.container.appendChild(r.render()),this.container}}),t}(),g=function(){function t(t){this.container=t.container,this.trigger=t.trigger,this.color=t.color,this.title=t.title,this.contents=t.contents,this.hideWrapper=t.hideWrapper||!1,this.pinned=!1}return t.prototype={render:function(){var t=document.createElement("div");t.className="popupWrapper",this.hideElement=this.hideWrapper?t:this.container,this.hideElement.setAttribute("hidden",!0);var e=document.createElement("div");e.className="popup";var n=this.color;if(n){var r=.7*(255-n[0])+n[0],i=.7*(255-n[1])+n[1],s=.7*(255-n[2])+n[2];e.style.backgroundColor=a.Util.makeCssRgb(0|r,0|i,0|s)}var o=this._formatContents(this.contents),c=document.createElement("h1");return c.textContent=this.title,this.trigger.addEventListener("click",this._toggle.bind(this)),this.trigger.addEventListener("mouseover",this._show.bind(this,!1)),this.trigger.addEventListener("mouseout",this._hide.bind(this,!1)),e.addEventListener("click",this._hide.bind(this,!0)),e.appendChild(c),e.appendChild(o),t.appendChild(e),t},_formatContents:function(t){for(var e=document.createElement("p"),n=t.split(/(?:\r\n?|\n)/),r=0,i=n.length;r1&&(0,o.deprecated)("getDocument is called with pdfDataRangeTransport, passwordCallback or progressCallback argument"),e&&(e instanceof x||(e=Object.create(e),e.length=t.length,e.initialData=t.initialData,e.abort||(e.abort=function(){})),t=Object.create(t),t.range=e),a.onPassword=n||null,a.onProgress=r||null;var l;"string"==typeof t?l={url:t}:(0,o.isArrayBuffer)(t)?l={data:t}:t instanceof x?l={range:t}:("object"!==(void 0===t?"undefined":s(t))&&(0,o.error)("Invalid parameter in getDocument, need either Uint8Array, string or a parameter object"),t.url||t.data||t.range||(0,o.error)("Invalid parameter object: need either .data, .range or .url"),l=t);var h={},u=null,f=null;for(var p in l)if("url"!==p||"undefined"==typeof window)if("range"!==p)if("worker"!==p)if("data"!==p||l[p]instanceof Uint8Array)h[p]=l[p];else{var g=l[p];"string"==typeof g?h[p]=(0,o.stringToBytes)(g):"object"!==(void 0===g?"undefined":s(g))||null===g||isNaN(g.length)?(0,o.isArrayBuffer)(g)?h[p]=new Uint8Array(g):(0,o.error)("Invalid PDF binary data: either typed array, string or array-like object is expected in the data property."):h[p]=new Uint8Array(g)}else f=l[p];else u=l[p];else h[p]=new URL(l[p],window.location).href;h.rangeChunkSize=h.rangeChunkSize||d,h.disableNativeImageDecoder=!0===h.disableNativeImageDecoder,h.ignoreErrors=!0!==h.stopAtErrors;var m=h.CMapReaderFactory||c.DOMCMapReaderFactory;if(!f){var A=(0,c.getDefaultSetting)("workerPort");f=A?new T(null,A):new T,a._worker=f}var v=a.docId;return f.promise.then(function(){if(a.destroyed)throw new Error("Loading aborted");return i(f,h,u,v).then(function(t){if(a.destroyed)throw new Error("Loading aborted");var e=new o.MessageHandler(v,t,f.port),n=new C(e,a,u,m);a._transport=n,e.send("Ready",null)})}).catch(a._capability.reject),a}function i(t,e,n,r){return t.destroyed?Promise.reject(new Error("Worker was destroyed")):(e.disableAutoFetch=(0,c.getDefaultSetting)("disableAutoFetch"),e.disableStream=(0,c.getDefaultSetting)("disableStream"),e.chunkedViewerLoading=!!n,n&&(e.length=n.length,e.initialData=n.initialData),t.messageHandler.sendWithPromise("GetDocRequest",{docId:r,source:e,disableRange:(0,c.getDefaultSetting)("disableRange"),maxImageSize:(0,c.getDefaultSetting)("maxImageSize"),disableFontFace:(0,c.getDefaultSetting)("disableFontFace"),disableCreateObjectURL:(0,c.getDefaultSetting)("disableCreateObjectURL"),postMessageTransfers:(0,c.getDefaultSetting)("postMessageTransfers")&&!p,docBaseUrl:e.docBaseUrl,disableNativeImageDecoder:e.disableNativeImageDecoder,ignoreErrors:e.ignoreErrors}).then(function(e){if(t.destroyed)throw new Error("Worker was destroyed");return e}))}Object.defineProperty(e,"__esModule",{value:!0}),e.build=e.version=e._UnsupportedManager=e.PDFPageProxy=e.PDFDocumentProxy=e.PDFWorker=e.PDFDataRangeTransport=e.getDocument=void 0;var a,s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},o=n(0),c=n(1),l=n(11),h=n(10),u=n(7),d=65536,f=!1,p=!1,g="undefined"!=typeof document&&document.currentScript?document.currentScript.src:null,m=null,A=!1;if("undefined"==typeof __pdfjsdev_webpack__){"undefined"==typeof window?(f=!0,void 0===require.ensure&&(require.ensure=require("node-ensure")),A=!0):"undefined"!=typeof require&&"function"==typeof require.ensure&&(A=!0),"undefined"!=typeof requirejs&&requirejs.toUrl&&(a=requirejs.toUrl("pdfjs-dist/build/pdf.worker.js"));var v="undefined"!=typeof requirejs&&requirejs.load;m=A?function(t){require.ensure([],function(){var e=require("./pdf.worker.js");t(e.WorkerMessageHandler)})}:v?function(t){requirejs(["pdfjs-dist/build/pdf.worker"],function(e){t(e.WorkerMessageHandler)})}:null}var b,y,S=function(){function t(){this._capability=(0,o.createPromiseCapability)(),this._transport=null,this._worker=null,this.docId="d"+e++,this.destroyed=!1,this.onPassword=null,this.onProgress=null,this.onUnsupportedFeature=null}var e=0;return t.prototype={get promise(){return this._capability.promise},destroy:function(){return this.destroyed=!0,(this._transport?this._transport.destroy():Promise.resolve()).then(function(){this._transport=null,this._worker&&(this._worker.destroy(),this._worker=null)}.bind(this))},then:function(t,e){return this.promise.then.apply(this.promise,arguments)}},t}(),x=function(){function t(t,e){this.length=t,this.initialData=e,this._rangeListeners=[],this._progressListeners=[],this._progressiveReadListeners=[],this._readyCapability=(0,o.createPromiseCapability)()}return t.prototype={addRangeListener:function(t){this._rangeListeners.push(t)},addProgressListener:function(t){this._progressListeners.push(t)},addProgressiveReadListener:function(t){this._progressiveReadListeners.push(t)},onDataRange:function(t,e){for(var n=this._rangeListeners,r=0,i=n.length;r=0&&a.renderTasks.splice(e,1),h.cleanupAfterRender&&(h.pendingCleanup=!0),h._tryCleanup(),t?s.capability.reject(t):s.capability.resolve(),n.timeEnd("Rendering"),n.timeEnd("Overall")}var n=this.stats;n.time("Overall"),this.pendingCleanup=!1;var r="print"===t.intent?"print":"display",i=t.canvasFactory||new c.DOMCanvasFactory;this.intentStates[r]||(this.intentStates[r]=Object.create(null));var a=this.intentStates[r];a.displayReadyCapability||(a.receivingOperatorList=!0,a.displayReadyCapability=(0,o.createPromiseCapability)(),a.operatorList={fnArray:[],argsArray:[],lastChunk:!1},this.stats.time("Page Request"),this.transport.messageHandler.send("RenderPageRequest",{pageIndex:this.pageNumber-1,intent:r,renderInteractiveForms:!0===t.renderInteractiveForms}));var s=new L(e,t,this.objs,this.commonObjs,a.operatorList,this.pageNumber,i);s.useRequestAnimationFrame="print"!==r,a.renderTasks||(a.renderTasks=[]),a.renderTasks.push(s);var l=s.task;t.continueCallback&&((0,o.deprecated)("render is used with continueCallback parameter"),l.onContinue=t.continueCallback);var h=this;return a.displayReadyCapability.promise.then(function(t){if(h.pendingCleanup)return void e();n.time("Rendering"),s.initializeGraphics(t),s.operatorListChanged()},function(t){e(t)}),l},getOperatorList:function(){function t(){if(n.operatorList.lastChunk){n.opListReadCapability.resolve(n.operatorList);var t=n.renderTasks.indexOf(e);t>=0&&n.renderTasks.splice(t,1)}}this.intentStates.oplist||(this.intentStates.oplist=Object.create(null));var e,n=this.intentStates.oplist;return n.opListReadCapability||(e={},e.operatorListChanged=t,n.receivingOperatorList=!0,n.opListReadCapability=(0,o.createPromiseCapability)(),n.renderTasks=[],n.renderTasks.push(e),n.operatorList={fnArray:[],argsArray:[],lastChunk:!1},this.transport.messageHandler.send("RenderPageRequest",{pageIndex:this.pageIndex,intent:"oplist"})),n.opListReadCapability.promise},getTextContent:function(t){return t=t||{},this.transport.messageHandler.sendWithPromise("GetTextContent",{pageIndex:this.pageNumber-1,normalizeWhitespace:!0===t.normalizeWhitespace,combineTextItems:!0!==t.disableCombineTextItems})},_destroy:function(){this.destroyed=!0,this.transport.pageCache[this.pageIndex]=null;var t=[];return Object.keys(this.intentStates).forEach(function(e){if("oplist"!==e){this.intentStates[e].renderTasks.forEach(function(e){var n=e.capability.promise.catch(function(){});t.push(n),e.cancel()})}},this),this.objs.clear(),this.annotationsPromise=null,this.pendingCleanup=!1,Promise.all(t)},destroy:function(){(0,o.deprecated)("page destroy method, use cleanup() instead"),this.cleanup()},cleanup:function(){this.pendingCleanup=!0,this._tryCleanup()},_tryCleanup:function(){this.pendingCleanup&&!Object.keys(this.intentStates).some(function(t){var e=this.intentStates[t];return 0!==e.renderTasks.length||e.receivingOperatorList},this)&&(Object.keys(this.intentStates).forEach(function(t){delete this.intentStates[t]},this),this.objs.clear(),this.annotationsPromise=null,this.pendingCleanup=!1)},_startRenderPage:function(t,e){var n=this.intentStates[e];n.displayReadyCapability&&n.displayReadyCapability.resolve(t)},_renderPageChunk:function(t,e){var n,r,i=this.intentStates[e];for(n=0,r=t.length;n=0;return i=t===a?t:c?new t.constructor(a,t.byteOffset,t.byteLength):new t.constructor(t),r.set(t,i),i}i=(0,o.isArray)(t)?[]:{},r.set(t,i);for(var l in t){for(var h,u=t;!(h=Object.getOwnPropertyDescriptor(u,l));)u=Object.getPrototypeOf(u);void 0!==h.value&&"function"!=typeof h.value&&(i[l]=n(h.value))}return i}if(!this._defer)return void this._listeners.forEach(function(e){e.call(this,{data:t})},this);var r=new WeakMap,i={data:n(t)};this._deferred.then(function(){this._listeners.forEach(function(t){t.call(this,i)},this)}.bind(this))},addEventListener:function(t,e){this._listeners.push(e)},removeEventListener:function(t,e){var n=this._listeners.indexOf(e);this._listeners.splice(n,1)},terminate:function(){this._listeners=[]}},i.prototype={get promise(){return this._readyCapability.promise},get port(){return this._port},get messageHandler(){return this._messageHandler},_initializeFromPort:function(t){this._port=t,this._messageHandler=new o.MessageHandler("main","worker",t),this._messageHandler.on("ready",function(){}),this._readyCapability.resolve()},_initialize:function(){if(!f&&!(0,c.getDefaultSetting)("disableWorker")&&"undefined"!=typeof Worker){var e=t();try{(0,o.isSameOrigin)(window.location.href,e)||(e=r(new URL(e,window.location).href));var n=new Worker(e),i=new o.MessageHandler("main","worker",n),a=function(){n.removeEventListener("error",s),i.destroy(),n.terminate(),this.destroyed?this._readyCapability.reject(new Error("Worker was destroyed")):this._setupFakeWorker()}.bind(this),s=function(t){this._webWorker||a()}.bind(this);n.addEventListener("error",s),i.on("test",function(t){if(n.removeEventListener("error",s),this.destroyed)return void a();t&&t.supportTypedArray?(this._messageHandler=i,this._port=n,this._webWorker=n,t.supportTransfers||(p=!0),this._readyCapability.resolve(),i.send("configure",{verbosity:(0,o.getVerbosityLevel)()})):(this._setupFakeWorker(),i.destroy(),n.terminate())}.bind(this)),i.on("console_log",function(t){console.log.apply(console,t)}),i.on("console_error",function(t){console.error.apply(console,t)}),i.on("ready",function(t){if(n.removeEventListener("error",s),this.destroyed)return void a();try{l()}catch(t){this._setupFakeWorker()}}.bind(this));var l=function(){var t=(0,c.getDefaultSetting)("postMessageTransfers")&&!p,e=new Uint8Array([t?255:0]);try{i.send("test",e,[e.buffer])}catch(t){(0,o.info)("Cannot use postMessage transfers"),e[0]=0,i.send("test",e)}};return void l()}catch(t){(0,o.info)("The worker has been disabled.")}}this._setupFakeWorker()},_setupFakeWorker:function(){f||(0,c.getDefaultSetting)("disableWorker")||((0,o.warn)("Setting up fake worker."),f=!0),e().then(function(t){if(this.destroyed)return void this._readyCapability.reject(new Error("Worker was destroyed"));var e=Uint8Array!==Float32Array,r=new n(e);this._port=r;var i="fake"+h++,a=new o.MessageHandler(i+"_worker",i,r);t.setup(a,r);var s=new o.MessageHandler(i,i+"_worker",r);this._messageHandler=s,this._readyCapability.resolve()}.bind(this))},destroy:function(){this.destroyed=!0,this._webWorker&&(this._webWorker.terminate(),this._webWorker=null),this._port=null,this._messageHandler&&(this._messageHandler.destroy(),this._messageHandler=null)}},i}(),C=function(){function t(t,e,n,r){this.messageHandler=t,this.loadingTask=e,this.pdfDataRangeTransport=n,this.commonObjs=new k,this.fontLoader=new l.FontLoader(e.docId),this.CMapReaderFactory=new r({baseUrl:(0,c.getDefaultSetting)("cMapUrl"),isCompressed:(0,c.getDefaultSetting)("cMapPacked")}),this.destroyed=!1,this.destroyCapability=null,this._passwordCapability=null,this.pageCache=[],this.pagePromises=[],this.downloadInfoCapability=(0,o.createPromiseCapability)(),this.setupMessageHandler()}return t.prototype={destroy:function(){if(this.destroyCapability)return this.destroyCapability.promise;this.destroyed=!0,this.destroyCapability=(0,o.createPromiseCapability)(),this._passwordCapability&&this._passwordCapability.reject(new Error("Worker was destroyed during onPassword callback"));var t=[];this.pageCache.forEach(function(e){e&&t.push(e._destroy())}),this.pageCache=[],this.pagePromises=[];var e=this,n=this.messageHandler.sendWithPromise("Terminate",null);return t.push(n),Promise.all(t).then(function(){e.fontLoader.clear(),e.pdfDataRangeTransport&&(e.pdfDataRangeTransport.abort(),e.pdfDataRangeTransport=null),e.messageHandler&&(e.messageHandler.destroy(),e.messageHandler=null),e.destroyCapability.resolve()},this.destroyCapability.reject),this.destroyCapability.promise},setupMessageHandler:function(){var t=this.messageHandler,e=this.loadingTask,n=this.pdfDataRangeTransport;n&&(n.addRangeListener(function(e,n){t.send("OnDataRange",{begin:e,chunk:n})}),n.addProgressListener(function(e){t.send("OnDataProgress",{loaded:e})}),n.addProgressiveReadListener(function(e){t.send("OnDataRange",{chunk:e})}),t.on("RequestDataRange",function(t){n.requestDataRange(t.begin,t.end)},this)),t.on("GetDoc",function(t){var e=t.pdfInfo;this.numPages=t.pdfInfo.numPages;var n=this.loadingTask,r=new w(e,this,n);this.pdfDocument=r,n._capability.resolve(r)},this),t.on("PasswordRequest",function(t){if(this._passwordCapability=(0,o.createPromiseCapability)(),e.onPassword){var n=function(t){this._passwordCapability.resolve({password:t})}.bind(this);e.onPassword(n,t.code)}else this._passwordCapability.reject(new o.PasswordException(t.message,t.code));return this._passwordCapability.promise},this),t.on("PasswordException",function(t){e._capability.reject(new o.PasswordException(t.message,t.code))},this),t.on("InvalidPDF",function(t){this.loadingTask._capability.reject(new o.InvalidPDFException(t.message))},this),t.on("MissingPDF",function(t){this.loadingTask._capability.reject(new o.MissingPDFException(t.message))},this),t.on("UnexpectedResponse",function(t){this.loadingTask._capability.reject(new o.UnexpectedResponseException(t.message,t.status))},this),t.on("UnknownError",function(t){this.loadingTask._capability.reject(new o.UnknownErrorException(t.message,t.details))},this),t.on("DataLoaded",function(t){this.downloadInfoCapability.resolve(t)},this),t.on("PDFManagerReady",function(t){this.pdfDataRangeTransport&&this.pdfDataRangeTransport.transportReady()},this),t.on("StartRenderPage",function(t){if(!this.destroyed){var e=this.pageCache[t.pageIndex];e.stats.timeEnd("Page Request"),e._startRenderPage(t.transparency,t.intent)}},this),t.on("RenderPageChunk",function(t){if(!this.destroyed){this.pageCache[t.pageIndex]._renderPageChunk(t.operatorList,t.intent)}},this),t.on("commonobj",function(t){if(!this.destroyed){var e=t[0],n=t[1];if(!this.commonObjs.hasData(e))switch(n){case"Font":var r=t[2];if("error"in r){var i=r.error;(0,o.warn)("Error during font loading: "+i),this.commonObjs.resolve(e,i);break}var a=null;(0,c.getDefaultSetting)("pdfBug")&&o.globalScope.FontInspector&&o.globalScope.FontInspector.enabled&&(a={registerFont:function(t,e){o.globalScope.FontInspector.fontAdded(t,e)}});var s=new l.FontFaceObject(r,{isEvalSuported:(0,c.getDefaultSetting)("isEvalSupported"),disableFontFace:(0,c.getDefaultSetting)("disableFontFace"),fontRegistry:a});this.fontLoader.bind([s],function(t){this.commonObjs.resolve(e,s)}.bind(this));break;case"FontPath":this.commonObjs.resolve(e,t[2]);break;default:(0,o.error)("Got unknown common object type "+n)}}},this),t.on("obj",function(t){if(!this.destroyed){var e,n=t[0],r=t[1],i=t[2],a=this.pageCache[r];if(!a.objs.hasData(n))switch(i){case"JpegStream":e=t[3],(0,o.loadJpegStream)(n,e,a.objs);break;case"Image":e=t[3],a.objs.resolve(n,e);e&&"data"in e&&e.data.length>8e6&&(a.cleanupAfterRender=!0);break;default:(0,o.error)("Got unknown object type "+i)}}},this),t.on("DocProgress",function(t){if(!this.destroyed){var e=this.loadingTask;e.onProgress&&e.onProgress({loaded:t.loaded,total:t.total})}},this),t.on("PageError",function(t){if(!this.destroyed){var e=this.pageCache[t.pageNum-1],n=e.intentStates[t.intent];if(n.displayReadyCapability?n.displayReadyCapability.reject(t.error):(0,o.error)(t.error),n.operatorList){n.operatorList.lastChunk=!0;for(var r=0;rthis.numPages)return Promise.reject(new Error("Invalid page request"));var n=t-1;if(n in this.pagePromises)return this.pagePromises[n];var r=this.messageHandler.sendWithPromise("GetPage",{pageIndex:n}).then(function(t){if(this.destroyed)throw new Error("Transport destroyed");var e=new _(n,t,this);return this.pageCache[n]=e,e}.bind(this));return this.pagePromises[n]=r,r},getPageIndex:function(t){return this.messageHandler.sendWithPromise("GetPageIndex",{ref:t}).catch(function(t){return Promise.reject(new Error(t))})},getAnnotations:function(t,e){return this.messageHandler.sendWithPromise("GetAnnotations",{pageIndex:t,intent:e})},getDestinations:function(){return this.messageHandler.sendWithPromise("GetDestinations",null)},getDestination:function(t){return this.messageHandler.sendWithPromise("GetDestination",{id:t})},getPageLabels:function(){return this.messageHandler.sendWithPromise("GetPageLabels",null)},getAttachments:function(){return this.messageHandler.sendWithPromise("GetAttachments",null)},getJavaScript:function(){return this.messageHandler.sendWithPromise("GetJavaScript",null)},getOutline:function(){return this.messageHandler.sendWithPromise("GetOutline",null)},getMetadata:function(){return this.messageHandler.sendWithPromise("GetMetadata",null).then(function(t){return{info:t[0],metadata:t[1]?new u.Metadata(t[1]):null}})},getStats:function(){return this.messageHandler.sendWithPromise("GetStats",null)},startCleanup:function(){this.messageHandler.sendWithPromise("Cleanup",null).then(function(){for(var t=0,e=this.pageCache.length;t>>8^o[a]}return-1^r}function e(e,n,r,i){var a=i,s=n.length;r[a]=s>>24&255,r[a+1]=s>>16&255,r[a+2]=s>>8&255,r[a+3]=255&s,a+=4,r[a]=255&e.charCodeAt(0),r[a+1]=255&e.charCodeAt(1),r[a+2]=255&e.charCodeAt(2),r[a+3]=255&e.charCodeAt(3),a+=4,r.set(n,a),a+=n.length;var o=t(r,i+4,a);r[a]=o>>24&255,r[a+1]=o>>16&255,r[a+2]=o>>8&255,r[a+3]=255&o}function n(t,e,n){for(var r=1,i=0,a=e;a>3;break;case r.ImageKind.RGB_24BPP:l=2,c=8,h=3*u;break;case r.ImageKind.RGBA_32BPP:l=6,c=8,h=4*u;break;default:throw new Error("invalid format")}var p,g,m=new Uint8Array((1+h)*d),A=0,v=0;for(p=0;p>24&255,u>>16&255,u>>8&255,255&u,d>>24&255,d>>16&255,d>>8&255,255&d,c,l,0,0,0]),y=m.length,S=Math.ceil(y/65535),x=new Uint8Array(2+y+5*S+4),w=0;x[w++]=120,x[w++]=156;for(var _=0;y>65535;)x[w++]=0,x[w++]=255,x[w++]=255,x[w++]=0,x[w++]=0,x.set(m.subarray(_,_+65535),w),w+=65535,_+=65535,y-=65535;x[w++]=1,x[w++]=255&y,x[w++]=y>>8&255,x[w++]=255&~y,x[w++]=(65535&~y)>>8&255,x.set(m.subarray(_),w),w+=m.length-_;var T=n(m,0,m.length);x[w++]=T>>24&255,x[w++]=T>>16&255,x[w++]=T>>8&255,x[w++]=255&T;var C=a.length+3*s+b.length+x.length,k=new Uint8Array(C),P=0;return k.set(a,P),P+=a.length,e("IHDR",b,k,P),P+=s+b.length,e("IDATA",x,k,P),P+=s+x.length,e("IEND",new Uint8Array(0),k,P),(0,r.createObjectURL)(k,"image/png",o)}for(var a=new Uint8Array([137,80,78,71,13,10,26,10]),s=12,o=new Int32Array(256),c=0;c<256;c++){for(var l=c,h=0;h<8;h++)l=1&l?3988292384^l>>1&2147483647:l>>1&2147483647;o[c]=l}return function(t,e){return i(t,void 0===t.kind?r.ImageKind.GRAYSCALE_1BPP:t.kind,e)}}(),o=function(){function t(){this.fontSizeScale=1,this.fontWeight=a.fontWeight,this.fontSize=0,this.textMatrix=r.IDENTITY_MATRIX,this.fontMatrix=r.FONT_IDENTITY_MATRIX,this.leading=0,this.x=0,this.y=0,this.lineX=0,this.lineY=0,this.charSpacing=0,this.wordSpacing=0,this.textHScale=1,this.textRise=0,this.fillColor=a.fillColor,this.strokeColor="#000000",this.fillAlpha=1,this.strokeAlpha=1,this.lineWidth=1,this.lineJoin="",this.lineCap="",this.miterLimit=0,this.dashArray=[],this.dashPhase=0,this.dependencies=[],this.activeClipUrl=null,this.clipGroup=null,this.maskId=""}return t.prototype={clone:function(){return Object.create(this)},setCurrentPoint:function(t,e){this.x=t,this.y=e}},t}();e.SVGGraphics=i=function(){function t(t){for(var e=[],n=[],r=t.length,i=0;i1&&(h.vertical?o.canvasWidth=n.height*e._viewport.scale:o.canvasWidth=n.width*e._viewport.scale),e._textDivProperties.set(s,o),e._enhanceTextSelection){var m=1,A=0;0!==l&&(m=Math.cos(l),A=Math.sin(l));var v,b,y=(h.vertical?n.height:n.width)*e._viewport.scale,S=u;0!==l?(v=[m,A,-A,m,p,g],b=r.Util.getAxialAlignedBoundingBox([0,0,y,S],v)):b=[p,g,p+y,g+S],e._bounds.push({left:b[0],top:b[1],right:b[2],bottom:b[3],div:s,size:[y,S],m:v})}}function n(t){if(!t._canceled){var e=t._container,n=t._textDivs,r=t._capability,a=n.length;if(a>h)return t._renderingDone=!0,void r.resolve();var s=document.createElement("canvas");s.mozOpaque=!0;for(var o,c,l=s.getContext("2d",{alpha:!1}),u=0;u0&&(f.scale=f.canvasWidth/m,A="scaleX("+f.scale+")"),0!==f.angle&&(A="rotate("+f.angle+"deg) "+A),""!==A&&(f.originalTransform=A,i.CustomStyle.setProp("transform",d,A)),t._textDivProperties.set(d,f)}}t._renderingDone=!0,r.resolve()}}function a(t){for(var e=t._bounds,n=t._viewport,i=s(n.width,n.height,e),a=0;a0&&(r=r?Math.min(a,r):a)}return r},A=1+Math.min(Math.abs(d),Math.abs(f));c.paddingLeft=m(g,32,16)/A,c.paddingTop=m(g,48,16)/A,c.paddingRight=m(g,0,16)/A,c.paddingBottom=m(g,16,16)/A,t._textDivProperties.set(o,c)}else c.paddingLeft=e[a].left-i[a].left,c.paddingTop=e[a].top-i[a].top,c.paddingRight=i[a].right-e[a].right,c.paddingBottom=i[a].bottom-e[a].bottom,t._textDivProperties.set(o,c)}}function s(t,e,n){var r=n.map(function(t,e){return{x1:t.left,y1:t.top,x2:t.right,y2:t.bottom,index:e,x1New:void 0,x2New:void 0}});o(t,r);var i=new Array(n.length);return r.forEach(function(t){var e=t.index;i[e]={left:t.x1New,top:0,right:t.x2New,bottom:0}}),n.map(function(e,n){var a=i[n],s=r[n];s.x1=e.top,s.y1=t-a.right,s.x2=e.bottom,s.y2=t-a.left,s.index=n,s.x1New=void 0,s.x2New=void 0}),o(e,r),r.forEach(function(t){var e=t.index;i[e].top=t.x1New,i[e].bottom=t.x2New}),i}function o(t,e){e.sort(function(t,e){return t.x1-e.x1||t.index-e.index});var n={x1:-1/0,y1:-1/0,x2:0,y2:1/0,index:-1,x1New:0,x2New:0},r=[{start:-1/0,end:1/0,boundary:n}];e.forEach(function(t){for(var e=0;e=0&&r[n].start>=t.y2;)n--;var i,a,s,o,c=-1/0;for(s=e;s<=n;s++){i=r[s],a=i.boundary;var l;l=a.x2>t.x1?a.index>t.index?a.x1New:t.x1:void 0===a.x2New?(a.x2+t.x1)/2:a.x2New,l>c&&(c=l)}for(t.x1New=c,s=e;s<=n;s++)i=r[s],a=i.boundary,void 0===a.x2New?a.x2>t.x1?a.index>t.index&&(a.x2New=a.x2):a.x2New=c:a.x2New>c&&(a.x2New=Math.max(c,a.x2));var h=[],u=null;for(s=e;s<=n;s++){i=r[s],a=i.boundary;var d=a.x2>t.x2?a:t;u===d?h[h.length-1].end=i.end:(h.push({start:i.start,end:i.end,boundary:d}),u=d)}for(r[e].start=0&&r[o].start>=a.y1;o--)f=r[o].boundary===a;for(o=n+1;!f&&o\\376\\377([^<]+)/g,function(t,e){for(var n=e.replace(/\\([0-3])([0-7])([0-7])/g,function(t,e,n,r){return String.fromCharCode(64*e+8*n+1*r)}),r="",i=0;i=32&&a<127&&60!==a&&62!==a&&38!==a?String.fromCharCode(a):"&#x"+(65536+a).toString(16).substring(1)+";"}return">"+r})}function i(t){if("string"==typeof t){t=r(t);t=(new DOMParser).parseFromString(t,"application/xml")}else t instanceof Document||(0,a.error)("Metadata: Invalid metadata object");this.metaDocument=t,this.metadata=Object.create(null),this.parse()}Object.defineProperty(e,"__esModule",{value:!0}),e.Metadata=void 0;var a=n(0);i.prototype={parse:function(){var t=this.metaDocument,e=t.documentElement;if("rdf:rdf"!==e.nodeName.toLowerCase())for(e=e.firstChild;e&&"rdf:rdf"!==e.nodeName.toLowerCase();)e=e.nextSibling;var n=e?e.nodeName.toLowerCase():null;if(e&&"rdf:rdf"===n&&e.hasChildNodes()){var r,i,a,s,o,c,l,h=e.childNodes;for(s=0,c=h.length;s0;)d[f++]=g&p?0:255,p>>=1;var m=0;for(f=0,0!==d[f]&&(c[0]=1,++m),n=1;n>2)+(d[f+1]?4:0)+(d[f-h+1]?8:0),l[A]&&(c[r+n]=l[A],++m),f++;if(d[f-h]!==d[f]&&(c[r+n]=d[f]?2:4,++m),m>1e3)return null}for(f=h*(s-1),r=e*o,0!==d[f]&&(c[r]=8,++m),n=1;n1e3)return null;var v=new Int32Array([0,o,-1,0,-o,0,0,0,1]),b=[];for(e=0;m&&e<=s;e++){for(var y=e*o,S=y+a;y>4,c[y]&=_>>2|_<<2),w.push(y%o),w.push(y/o|0),--m}while(T!==y);b.push(w),--e}}return function(t){t.save(),t.scale(1/a,-1/s),t.translate(0,-s),t.beginPath();for(var e=0,n=b.length;e>2),S=y.length,x=u+7>>3,w=4294967295,_=l.value?4278190080:255;for(r=0;rx?u:8*T-7,P=-8&k,L=0,E=0;C>=1}for(;n=f&&(s=d,o=u*s),n=0,i=o;i--;)v[n++]=A[m++],v[n++]=A[m++],v[n++]=A[m++],v[n++]=255;t.putImageData(g,0,r*c)}else(0,a.error)("bad image kind: "+e.kind)}function n(t,e){for(var n=e.height,r=e.width,i=n%c,a=(n-i)/c,s=0===i?a:a+1,o=t.createImageData(r,c),l=0,h=e.data,u=o.data,d=0;d>=1}t.putImageData(o,0,d*c)}}function d(t,e){for(var n=["strokeStyle","fillStyle","fillRule","globalAlpha","lineWidth","lineCap","lineJoin","miterLimit","globalCompositeOperation","font"],r=0,i=n.length;r>8,t[a-2]=t[a-2]*s+n*o>>8,t[a-1]=t[a-1]*s+r*o>>8}}}function p(t,e,n){for(var r=t.length,i=3;i>8]>>8:e[i]*a>>16}}function m(t,e,n,r,i,a,s){var o,c=!!a,l=c?a[0]:0,h=c?a[1]:0,u=c?a[2]:0;o="Luminosity"===i?g:p;for(var d=Math.min(r,Math.ceil(1048576/n)),m=0;m10&&"function"==typeof n,u=h?Date.now()+15:0,d=0,f=this.commonObjs,p=this.objs;;){if(void 0!==r&&o===r.nextBreakPoint)return r.breakIt(o,n),o;if((l=s[o])!==a.OPS.dependency)this[l].apply(this,i[o]);else for(var g=i[o],m=0,A=g.length;m10){if(Date.now()>u)return n(),o;d=0}}},endDrawing:function(){null!==this.current.activeSMask&&this.endSMaskGroup(),this.ctx.restore(),this.transparentCanvas&&(this.ctx=this.compositeCtx,this.ctx.save(),this.ctx.setTransform(1,0,0,1,0,0),this.ctx.drawImage(this.transparentCanvas,0,0),this.ctx.restore(),this.transparentCanvas=null),this.cachedCanvases.clear(),o.WebGLUtils.clear(),this.imageLayer&&this.imageLayer.endLayout()},setLineWidth:function(t){this.current.lineWidth=t,this.ctx.lineWidth=t},setLineCap:function(t){this.ctx.lineCap=v[t]},setLineJoin:function(t){this.ctx.lineJoin=b[t]},setMiterLimit:function(t){this.ctx.miterLimit=t},setDash:function(t,e){var n=this.ctx;void 0!==n.setLineDash&&(n.setLineDash(t),n.lineDashOffset=e)},setRenderingIntent:function(t){},setFlatness:function(t){},setGState:function(t){for(var e=0,n=t.length;e0&&this.stateStack[this.stateStack.length-1].activeSMask===this.current.activeSMask?this.suspendSMaskGroup():this.endSMaskGroup()),this.current.activeSMask=a?this.tempSMask:null,this.current.activeSMask&&this.beginSMaskGroup(),this.tempSMask=null}}},beginSMaskGroup:function(){var t=this.current.activeSMask,e=t.canvas.width,n=t.canvas.height,r="smaskGroupAt"+this.groupLevel,i=this.cachedCanvases.getCanvas(r,e,n,!0),a=this.ctx,s=a.mozCurrentTransform;this.ctx.save();var o=i.context;o.scale(1/t.scaleX,1/t.scaleY),o.translate(-t.offsetX,-t.offsetY),o.transform.apply(o,s),t.startTransformInverse=o.mozCurrentTransformInverse,d(a,o),this.ctx=o,this.setGState([["BM","source-over"],["ca",1],["CA",1]]),this.groupStack.push(a),this.groupLevel++},suspendSMaskGroup:function(){var t=this.ctx;this.groupLevel--,this.ctx=this.groupStack.pop(),A(this.ctx,this.current.activeSMask,t),this.ctx.restore(),this.ctx.save(),d(t,this.ctx),this.current.resumeSMaskCtx=t;var e=a.Util.transform(this.current.activeSMask.startTransformInverse,t.mozCurrentTransform);this.ctx.transform.apply(this.ctx,e),t.save(),t.setTransform(1,0,0,1,0,0),t.clearRect(0,0,t.canvas.width,t.canvas.height),t.restore()},resumeSMaskGroup:function(){var t=this.current.resumeSMaskCtx,e=this.ctx;this.ctx=t,this.groupStack.push(e),this.groupLevel++},endSMaskGroup:function(){var t=this.ctx;this.groupLevel--,this.ctx=this.groupStack.pop(),A(this.ctx,this.current.activeSMask,t),this.ctx.restore(),d(t,this.ctx);var e=a.Util.transform(this.current.activeSMask.startTransformInverse,t.mozCurrentTransform);this.ctx.transform.apply(this.ctx,e)},save:function(){this.ctx.save();var t=this.current;this.stateStack.push(t),this.current=t.clone(),this.current.resumeSMaskCtx=null},restore:function(){this.current.resumeSMaskCtx&&this.resumeSMaskGroup(),null===this.current.activeSMask||0!==this.stateStack.length&&this.stateStack[this.stateStack.length-1].activeSMask===this.current.activeSMask||this.endSMaskGroup(),0!==this.stateStack.length&&(this.current=this.stateStack.pop(),this.ctx.restore(),this.pendingClip=null,this.cachedGetSinglePixelWidth=null)},transform:function(t,e,n,r,i,a){this.ctx.transform(t,e,n,r,i,a),this.cachedGetSinglePixelWidth=null},constructPath:function(t,e){for(var n=this.ctx,r=this.current,i=r.x,s=r.y,o=0,c=0,l=t.length;o100?100:e;this.current.fontSizeScale=e/l;var h=o+" "+s+" "+l+"px "+c;this.ctx.font=h}},setTextRenderingMode:function(t){this.current.textRenderingMode=t},setTextRise:function(t){this.current.textRise=t},moveText:function(t,e){this.current.x=this.current.lineX+=t,this.current.y=this.current.lineY+=e},setLeadingMoveText:function(t,e){this.setLeading(-e),this.moveText(t,e)},setTextMatrix:function(t,e,n,r,i,a){this.current.textMatrix=[t,e,n,r,i,a],this.current.textMatrixScale=Math.sqrt(t*t+e*e),this.current.x=this.current.lineX=0,this.current.y=this.current.lineY=0},nextLine:function(){this.moveText(0,this.current.leading)},paintChar:function(t,e,n){var r,i=this.ctx,s=this.current,o=s.font,c=s.textRenderingMode,l=s.fontSize/s.fontSizeScale,h=c&a.TextRenderingMode.FILL_STROKE_MASK,u=!!(c&a.TextRenderingMode.ADD_TO_PATH_FLAG);if((o.disableFontFace||u)&&(r=o.getPathGenerator(this.commonObjs,t)),o.disableFontFace?(i.save(),i.translate(e,n),i.beginPath(),r(i,l),h!==a.TextRenderingMode.FILL&&h!==a.TextRenderingMode.FILL_STROKE||i.fill(),h!==a.TextRenderingMode.STROKE&&h!==a.TextRenderingMode.FILL_STROKE||i.stroke(),i.restore()):(h!==a.TextRenderingMode.FILL&&h!==a.TextRenderingMode.FILL_STROKE||i.fillText(t,e,n),h!==a.TextRenderingMode.STROKE&&h!==a.TextRenderingMode.FILL_STROKE||i.strokeText(t,e,n)),u){(this.pendingTextPaths||(this.pendingTextPaths=[])).push({transform:i.mozCurrentTransform,x:e,y:n,fontSize:l,addToPath:r})}},get isFontSubpixelAAEnabled(){var t=this.canvasFactory.create(10,10).context;t.scale(1.5,1),t.fillText("I",0,10);for(var e=t.getImageData(0,0,10,10).data,n=!1,r=3;r0&&e[r]<255){n=!0;break}return(0,a.shadow)(this,"isFontSubpixelAAEnabled",n)},showText:function(t){var e=this.current,n=e.font;if(n.isType3Font)return this.showType3Text(t);var r=e.fontSize;if(0!==r){var i=this.ctx,s=e.fontSizeScale,o=e.charSpacing,c=e.wordSpacing,l=e.fontDirection,h=e.textHScale*l,u=t.length,d=n.vertical,f=d?1:-1,p=n.defaultVMetrics,g=r*e.fontMatrix[0],m=e.textRenderingMode===a.TextRenderingMode.FILL&&!n.disableFontFace;i.save(),i.transform.apply(i,e.textMatrix),i.translate(e.x,e.y+e.textRise),e.patternFill&&(i.fillStyle=e.fillColor.getPattern(i,this)),l>0?i.scale(h,-1):i.scale(h,1);var A=e.lineWidth,v=e.textMatrixScale;if(0===v||0===A){var b=e.textRenderingMode&a.TextRenderingMode.FILL_STROKE_MASK;b!==a.TextRenderingMode.STROKE&&b!==a.TextRenderingMode.FILL_STROKE||(this.cachedGetSinglePixelWidth=null,A=.65*this.getSinglePixelWidth())}else A/=v;1!==s&&(i.scale(s,s),A/=s),i.lineWidth=A;var y,S=0;for(y=0;y0){var M=1e3*i.measureText(L).width/r*s;if(R4096&&(h=c/4096,c=4096),l>4096&&(u=l/4096,l=4096);var f="groupAt"+this.groupLevel;t.smask&&(f+="_smask_"+this.smaskCounter++%2);var p=this.cachedCanvases.getCanvas(f,c,l,!0),g=p.context;g.scale(1/h,1/u),g.translate(-s,-o),g.transform.apply(g,n),t.smask?this.smaskStack.push({canvas:p.canvas,context:g,offsetX:s,offsetY:o,scaleX:h,scaleY:u,subtype:t.smask.subtype,backdrop:t.smask.backdrop,transferMap:t.smask.transferMap||null,startTransformInverse:null}):(e.setTransform(1,0,0,1,0,0),e.translate(s,o),e.scale(h,u)),d(e,g),this.ctx=g,this.setGState([["BM","source-over"],["ca",1],["CA",1]]),this.groupStack.push(e),this.groupLevel++,this.current.activeSMask=null},endGroup:function(t){this.groupLevel--;var e=this.ctx;this.ctx=this.groupStack.pop(),void 0!==this.ctx.imageSmoothingEnabled?this.ctx.imageSmoothingEnabled=!1:this.ctx.mozImageSmoothingEnabled=!1,t.smask?this.tempSMask=this.smaskStack.pop():this.ctx.drawImage(e.canvas,0,0),this.restore()},beginAnnotations:function(){this.save(),this.current=new u,this.baseTransform&&this.ctx.setTransform.apply(this.ctx,this.baseTransform)},endAnnotations:function(){this.restore()},beginAnnotation:function(t,e,n){if(this.save(),(0,a.isArray)(t)&&4===t.length){var r=t[2]-t[0],i=t[3]-t[1];this.ctx.rect(t[0],t[1],r,i),this.clip(),this.endPath()}this.transform.apply(this,e),this.transform.apply(this,n)},endAnnotation:function(){this.restore()},paintJpegXObject:function(t,e,n){var r=this.objs.get(t);if(!r)return void(0,a.warn)("Dependent image isn't ready yet");this.save();var i=this.ctx;if(i.scale(1/e,-1/n),i.drawImage(r,0,0,r.width,r.height,0,-n,e,n),this.imageLayer){var s=i.mozCurrentTransformInverse,o=this.getCanvasPosition(0,0);this.imageLayer.appendImage({objId:t,left:o[0],top:o[1],width:e/s[0],height:n/s[3]})}this.restore()}, +paintImageMaskXObject:function(t){var e=this.ctx,r=t.width,a=t.height,s=this.current.fillColor,o=this.current.patternFill,c=this.processingType3;if(c&&void 0===c.compiled&&(c.compiled=r<=1e3&&a<=1e3?i({data:t.data,width:r,height:a}):null),c&&c.compiled)return void c.compiled(e);var l=this.cachedCanvases.getCanvas("maskCanvas",r,a),h=l.context;h.save(),n(h,t),h.globalCompositeOperation="source-in",h.fillStyle=o?s.getPattern(h,this):s,h.fillRect(0,0,r,a),h.restore(),this.paintInlineImageXObject(l.canvas)},paintImageMaskXObjectRepeat:function(t,e,r,i){var a=t.width,s=t.height,o=this.current.fillColor,c=this.current.patternFill,l=this.cachedCanvases.getCanvas("maskCanvas",a,s),h=l.context;h.save(),n(h,t),h.globalCompositeOperation="source-in",h.fillStyle=c?o.getPattern(h,this):o,h.fillRect(0,0,a,s),h.restore();for(var u=this.ctx,d=0,f=i.length;d2&&g>1||f>2&&m>1;){var v=g,b=m;h>2&&g>1&&(v=Math.ceil(g/2),h/=g/v),f>2&&m>1&&(b=Math.ceil(m/2),f/=m/b),s=this.cachedCanvases.getCanvas(A,v,b),p=s.context,p.clearRect(0,0,v,b),p.drawImage(a,0,0,g,m,0,0,v,b),a=s.canvas,g=v,m=b,A="prescale1"===A?"prescale2":"prescale1"}if(i.drawImage(a,0,0,g,m,0,-r,n,r),this.imageLayer){var y=this.getCanvasPosition(0,-r);this.imageLayer.appendImage({imgData:t,left:y[0],top:y[1],width:n/o[0],height:r/o[3]})}this.restore()},paintInlineImageXObjectGroup:function(t,n){var r=this.ctx,i=t.width,a=t.height,s=this.cachedCanvases.getCanvas("inlineImage",i,a);e(s.context,t);for(var o=0,c=n.length;o0&&!r.isSyncFontLoadingSupported?this.prepareFontLoadEvent(n,a,f):f.complete()},r.prototype.queueLoadingCallback=function(t){function e(){for((0,i.assert)(!a.end,"completeRequest() cannot be called twice"),a.end=Date.now();n.requests.length>0&&n.requests[0].end;){var t=n.requests.shift();setTimeout(t.callback,0)}}var n=this.loadingContext,r="pdfjs-font-loading-"+n.nextRequestId++,a={id:r,complete:e,callback:t,started:Date.now()};return n.requests.push(a),a},r.prototype.prepareFontLoadEvent=function(t,e,n){function r(t,e){return t.charCodeAt(e)<<24|t.charCodeAt(e+1)<<16|t.charCodeAt(e+2)<<8|255&t.charCodeAt(e+3)}function a(t,e,n,r){return t.substr(0,e)+r+t.substr(e+n)}function s(t,e){return++u>30?((0,i.warn)("Load test font never loaded."),void e()):(h.font="30px "+t,h.fillText(".",0,20),h.getImageData(0,0,1,1).data[3]>0?void e():void setTimeout(s.bind(null,t,e)))}var o,c,l=document.createElement("canvas");l.width=1,l.height=1;var h=l.getContext("2d"),u=0,d="lt"+Date.now()+this.loadTestFontId++,f=this.loadTestFont;f=a(f,976,d.length,d);var p=r(f,16);for(o=0,c=d.length-3;o=14&&(t=!0),t};Object.defineProperty(r,"isSyncFontLoadingSupported",{get:function(){return(0,i.shadow)(r,"isSyncFontLoadingSupported",s())},enumerable:!0,configurable:!0});var o={get value(){return(0,i.shadow)(this,"value",(0,i.isEvalSupported)())}},c=function(){function t(t,e){this.compiledGlyphs=Object.create(null);for(var n in t)this[n]=t[n];this.options=e}return t.prototype={createNativeFontFace:function(){if(!this.data)return null;if(this.options.disableFontFace)return this.disableFontFace=!0,null;var t=new FontFace(this.loadedName,this.data,{});return this.options.fontRegistry&&this.options.fontRegistry.registerFont(this),t},createFontFaceRule:function(){if(!this.data)return null;if(this.options.disableFontFace)return this.disableFontFace=!0,null;var t=(0,i.bytesToString)(new Uint8Array(this.data)),e=this.loadedName,n="url(data:"+this.mimetype+";base64,"+btoa(t)+");",r='@font-face { font-family:"'+e+'";src:'+n+"}";return this.options.fontRegistry&&this.options.fontRegistry.registerFont(this,n),r},getPathGenerator:function(t,e){if(!(e in this.compiledGlyphs)){var n,r,i,a=t.get(this.loadedName+"_path_"+e);if(this.options.isEvalSupported&&o.value){var s,c="";for(r=0,i=a.length;rl[r+1]&&(c=n,n=r,r=c,c=a,a=s,s=c),l[r+1]>l[i+1]&&(c=r,r=i,i=c,c=s,s=o,o=c),l[n+1]>l[r+1]&&(c=n,n=r,r=c,c=a,a=s,s=c);var f=(l[n]+e.offsetX)*e.scaleX,p=(l[n+1]+e.offsetY)*e.scaleY,g=(l[r]+e.offsetX)*e.scaleX,m=(l[r+1]+e.offsetY)*e.scaleY,A=(l[i]+e.offsetX)*e.scaleX,v=(l[i+1]+e.offsetY)*e.scaleY;if(!(p>=v))for(var b,y,S,x,w,_,T,C,k,P=h[a],L=h[a+1],E=h[a+2],R=h[s],O=h[s+1],I=h[s+2],F=h[o],M=h[o+1],D=h[o+2],N=Math.round(p),j=Math.round(v),U=N;U<=j;U++){Uv?1:m===v?0:(m-U)/(m-v),b=g-(g-A)*k,y=R-(R-F)*k,S=O-(O-M)*k,x=I-(I-D)*k),k=Uv?1:(p-U)/(p-v),w=f-(f-A)*k,_=P-(P-F)*k,T=L-(L-M)*k,C=E-(E-D)*k;for(var B=Math.round(Math.min(b,w)),W=Math.round(Math.max(b,w)),G=d*U+4*B,X=B;X<=W;X++)k=(b-X)/(b-w),k=k<0?0:k>1?1:k,u[G++]=y-(y-_)*k|0,u[G++]=S-(S-T)*k|0,u[G++]=x-(x-C)*k|0,u[G++]=255}}function e(e,n,r){var a,s,o=n.coords,c=n.colors;switch(n.type){case"lattice":var l=n.verticesPerRow,h=Math.floor(o.length/l)-1,u=l-1;for(a=0;a=0,c=/Chrome\/(39|40)\./.test(r),l=r.indexOf("CriOS")>=0,h=r.indexOf("Trident")>=0,u=/\b(iPad|iPhone|iPod)(?=;)/.test(r),d=r.indexOf("Opera")>=0,f=/Safari\//.test(r)&&!/(Chrome\/|Android\s)/.test(r),p="object"===("undefined"==typeof window?"undefined":e(window))&&"object"===("undefined"==typeof document?"undefined":e(document));"undefined"==typeof PDFJS&&(n.PDFJS={}),PDFJS.compatibilityChecked=!0,function(){function t(t,e){return new o(this.slice(t,e))}function r(t,e){arguments.length<2&&(e=0);for(var n=0,r=t.length;n>>0},set:function(e){var n=this.buffer,r=t<<2;n[r]=255&e,n[r+1]=e>>8&255,n[r+2]=e>>16&255,n[r+3]=e>>>24&255}}}function s(t){for(;c>2,l=(3&a)<<4|s>>4,h=n+1>6:64,u=n+2>(-2*r&6)):0)n="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=".indexOf(n);return a}}}(),function(){void 0===Function.prototype.bind&&(Function.prototype.bind=function(t){var e=this,n=Array.prototype.slice.call(arguments,1);return function(){var r=n.concat(Array.prototype.slice.call(arguments));return e.apply(t,r)}})}(),function(){if(p){"dataset"in document.createElement("div")||Object.defineProperty(HTMLElement.prototype,"dataset",{get:function(){if(this._dataset)return this._dataset;for(var t={},e=0,n=this.attributes.length;e=0&&r&&a.splice(s,1),t.className=a.join(" "),s>=0}if(p){if(!("classList"in document.createElement("div"))){var e={add:function(e){t(this.element,e,!0,!1)},contains:function(e){return t(this.element,e,!1,!1)},remove:function(e){t(this.element,e,!1,!0)},toggle:function(e){t(this.element,e,!0,!0)}};Object.defineProperty(HTMLElement.prototype,"classList",{get:function(){if(this._classList)return this._classList;var t=Object.create(e,{element:{value:this,writable:!1,enumerable:!0}});return Object.defineProperty(this,"_classList",{value:t,writable:!1,enumerable:!1}),t},enumerable:!0})}}}(),function(){if(!("undefined"==typeof importScripts||"console"in n)){var t={},e={log:function(){var t=Array.prototype.slice.call(arguments);n.postMessage({targetName:"main",action:"console_log",data:t})},error:function(){var t=Array.prototype.slice.call(arguments);n.postMessage({targetName:"main",action:"console_error",data:t})},time:function(e){t[e]=Date.now()},timeEnd:function(e){var n=t[e];if(!n)throw new Error("Unknown timer name "+e);this.log("Timer:",e,Date.now()-n)}};n.console=e}}(),function(){if(p)"console"in window?"bind"in console.log||(console.log=function(t){return function(e){return t(e)}}(console.log),console.error=function(t){return function(e){return t(e)}}(console.error),console.warn=function(t){return function(e){return t(e)}}(console.warn)):window.console={log:function(){},error:function(){},warn:function(){}}}(),function(){function t(t){e(t.target)&&t.stopPropagation()}function e(t){return t.disabled||t.parentNode&&e(t.parentNode)}d&&document.addEventListener("click",t,!0)}(),function(){(h||l)&&(PDFJS.disableCreateObjectURL=!0)}(),function(){"undefined"!=typeof navigator&&("language"in navigator||(PDFJS.locale=navigator.userLanguage||"en-US"))}(),function(){(f||a||c||u)&&(PDFJS.disableRange=!0,PDFJS.disableStream=!0)}(),function(){p&&(history.pushState&&!a||(PDFJS.disableHistory=!0))}(),function(){if(p)if(window.CanvasPixelArray)"function"!=typeof window.CanvasPixelArray.prototype.set&&(window.CanvasPixelArray.prototype.set=function(t){for(var e=0,n=this.length;e0;){var n=this.handlers.shift(),r=n.thisPromise._status,i=n.thisPromise._value;try{1===r?"function"==typeof n.onResolve&&(i=n.onResolve(i)):"function"==typeof n.onReject&&(i=n.onReject(i),r=1,n.thisPromise._unhandledRejection&&this.removeUnhandeledRejection(n.thisPromise))}catch(e){r=t,i=e}if(n.nextPromise._updateStatus(r,i),Date.now()>=e)break}if(this.handlers.length>0)return void setTimeout(this.runHandlers.bind(this),0);this.running=!1},addUnhandledRejection:function(t){this.unhandledRejections.push({promise:t,time:Date.now()}),this.scheduleRejectionCheck()},removeUnhandeledRejection:function(t){t._unhandledRejection=!1;for(var e=0;e500){var n=this.unhandledRejections[e].promise._value,r="Unhandled rejection: "+n;n.stack&&(r+="\n"+n.stack);try{throw new Error(r)}catch(t){console.warn(r)}this.unhandledRejections.splice(e),e--}this.unhandledRejections.length&&this.scheduleRejectionCheck()}.bind(this),500))}},r=function(t){this._status=0,this._handlers=[];try{t.call(this,this._resolve.bind(this),this._reject.bind(this))}catch(t){this._reject(t)}};r.all=function(e){function n(e){s._status!==t&&(c=[],a(e))}var i,a,s=new r(function(t,e){i=t,a=e}),o=e.length,c=[];if(0===o)return i(c),s;for(var l=0,h=e.length;l32&&e<127&&-1===[34,35,60,62,63,96].indexOf(e)?t:encodeURIComponent(t)}function s(t){var e=t.charCodeAt(0);return e>32&&e<127&&-1===[34,35,60,62,96].indexOf(e)?t:encodeURIComponent(t)}function o(e,n,o){function c(t){b.push(t)}var l=n||"scheme start",h=0,u="",A=!1,v=!1,b=[];t:for(;(e[h-1]!==p||0===h)&&!this._isInvalid;){var y=e[h];switch(l){case"scheme start":if(!y||!g.test(y)){if(n){c("Invalid scheme.");break t}u="",l="no scheme";continue}u+=y.toLowerCase(),l="scheme";break;case"scheme":if(y&&m.test(y))u+=y.toLowerCase();else{if(":"!==y){if(n){if(y===p)break t;c("Code point not allowed in scheme: "+y);break t}u="",h=0,l="no scheme";continue}if(this._scheme=u,u="",n)break t;t(this._scheme)&&(this._isRelative=!0),l="file"===this._scheme?"relative":this._isRelative&&o&&o._scheme===this._scheme?"relative or authority":this._isRelative?"authority first slash":"scheme data"}break;case"scheme data":"?"===y?(this._query="?",l="query"):"#"===y?(this._fragment="#", +l="fragment"):y!==p&&"\t"!==y&&"\n"!==y&&"\r"!==y&&(this._schemeData+=a(y));break;case"no scheme":if(o&&t(o._scheme)){l="relative";continue}c("Missing scheme."),r.call(this);break;case"relative or authority":if("/"!==y||"/"!==e[h+1]){c("Expected /, got: "+y),l="relative";continue}l="authority ignore slashes";break;case"relative":if(this._isRelative=!0,"file"!==this._scheme&&(this._scheme=o._scheme),y===p){this._host=o._host,this._port=o._port,this._path=o._path.slice(),this._query=o._query,this._username=o._username,this._password=o._password;break t}if("/"===y||"\\"===y)"\\"===y&&c("\\ is an invalid code point."),l="relative slash";else if("?"===y)this._host=o._host,this._port=o._port,this._path=o._path.slice(),this._query="?",this._username=o._username,this._password=o._password,l="query";else{if("#"!==y){var S=e[h+1],x=e[h+2];("file"!==this._scheme||!g.test(y)||":"!==S&&"|"!==S||x!==p&&"/"!==x&&"\\"!==x&&"?"!==x&&"#"!==x)&&(this._host=o._host,this._port=o._port,this._username=o._username,this._password=o._password,this._path=o._path.slice(),this._path.pop()),l="relative path";continue}this._host=o._host,this._port=o._port,this._path=o._path.slice(),this._query=o._query,this._fragment="#",this._username=o._username,this._password=o._password,l="fragment"}break;case"relative slash":if("/"!==y&&"\\"!==y){"file"!==this._scheme&&(this._host=o._host,this._port=o._port,this._username=o._username,this._password=o._password),l="relative path";continue}"\\"===y&&c("\\ is an invalid code point."),l="file"===this._scheme?"file host":"authority ignore slashes";break;case"authority first slash":if("/"!==y){c("Expected '/', got: "+y),l="authority ignore slashes";continue}l="authority second slash";break;case"authority second slash":if(l="authority ignore slashes","/"!==y){c("Expected '/', got: "+y);continue}break;case"authority ignore slashes":if("/"!==y&&"\\"!==y){l="authority";continue}c("Expected authority, got: "+y);break;case"authority":if("@"===y){A&&(c("@ already seen."),u+="%40"),A=!0;for(var w=0;w 0) { container.style.borderWidth = data.borderStyle.width + 'px'; - if (data.borderStyle.style !== AnnotationBorderStyleType.UNDERLINE) { + if (data.borderStyle.style !== _util.AnnotationBorderStyleType.UNDERLINE) { width = width - 2 * data.borderStyle.width; height = height - 2 * data.borderStyle.width; } @@ -108,29 +105,29 @@ var AnnotationElement = function AnnotationElementClosure() { var verticalRadius = data.borderStyle.verticalCornerRadius; if (horizontalRadius > 0 || verticalRadius > 0) { var radius = horizontalRadius + 'px / ' + verticalRadius + 'px'; - CustomStyle.setProp('borderRadius', container, radius); + _dom_utils.CustomStyle.setProp('borderRadius', container, radius); } switch (data.borderStyle.style) { - case AnnotationBorderStyleType.SOLID: + case _util.AnnotationBorderStyleType.SOLID: container.style.borderStyle = 'solid'; break; - case AnnotationBorderStyleType.DASHED: + case _util.AnnotationBorderStyleType.DASHED: container.style.borderStyle = 'dashed'; break; - case AnnotationBorderStyleType.BEVELED: - warn('Unimplemented border style: beveled'); + case _util.AnnotationBorderStyleType.BEVELED: + (0, _util.warn)('Unimplemented border style: beveled'); break; - case AnnotationBorderStyleType.INSET: - warn('Unimplemented border style: inset'); + case _util.AnnotationBorderStyleType.INSET: + (0, _util.warn)('Unimplemented border style: inset'); break; - case AnnotationBorderStyleType.UNDERLINE: + case _util.AnnotationBorderStyleType.UNDERLINE: container.style.borderBottomStyle = 'solid'; break; default: break; } if (data.color) { - container.style.borderColor = Util.makeCssRgb(data.color[0] | 0, data.color[1] | 0, data.color[2] | 0); + container.style.borderColor = _util.Util.makeCssRgb(data.color[0] | 0, data.color[1] | 0, data.color[2] | 0); } else { container.style.borderWidth = 0; } @@ -170,13 +167,13 @@ var LinkAnnotationElement = function LinkAnnotationElementClosure() { function LinkAnnotationElement(parameters) { AnnotationElement.call(this, parameters, true); } - Util.inherit(LinkAnnotationElement, AnnotationElement, { + _util.Util.inherit(LinkAnnotationElement, AnnotationElement, { render: function LinkAnnotationElement_render() { this.container.className = 'linkAnnotation'; var link = document.createElement('a'); - addLinkAttributes(link, { + (0, _dom_utils.addLinkAttributes)(link, { url: this.data.url, - target: this.data.newWindow ? LinkTarget.BLANK : undefined + target: this.data.newWindow ? _dom_utils.LinkTarget.BLANK : undefined }); if (!this.data.url) { if (this.data.action) { @@ -218,7 +215,7 @@ var TextAnnotationElement = function TextAnnotationElementClosure() { var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents); AnnotationElement.call(this, parameters, isRenderable); } - Util.inherit(TextAnnotationElement, AnnotationElement, { + _util.Util.inherit(TextAnnotationElement, AnnotationElement, { render: function TextAnnotationElement_render() { this.container.className = 'textAnnotation'; var image = document.createElement('img'); @@ -241,7 +238,7 @@ var WidgetAnnotationElement = function WidgetAnnotationElementClosure() { function WidgetAnnotationElement(parameters, isRenderable) { AnnotationElement.call(this, parameters, isRenderable); } - Util.inherit(WidgetAnnotationElement, AnnotationElement, { + _util.Util.inherit(WidgetAnnotationElement, AnnotationElement, { render: function WidgetAnnotationElement_render() { return this.container; } @@ -254,7 +251,7 @@ var TextWidgetAnnotationElement = function TextWidgetAnnotationElementClosure() var isRenderable = parameters.renderInteractiveForms || !parameters.data.hasAppearance && !!parameters.data.fieldValue; WidgetAnnotationElement.call(this, parameters, isRenderable); } - Util.inherit(TextWidgetAnnotationElement, WidgetAnnotationElement, { + _util.Util.inherit(TextWidgetAnnotationElement, WidgetAnnotationElement, { render: function TextWidgetAnnotationElement_render() { this.container.className = 'textWidgetAnnotation'; var element = null; @@ -314,7 +311,7 @@ var CheckboxWidgetAnnotationElement = function CheckboxWidgetAnnotationElementCl function CheckboxWidgetAnnotationElement(parameters) { WidgetAnnotationElement.call(this, parameters, parameters.renderInteractiveForms); } - Util.inherit(CheckboxWidgetAnnotationElement, WidgetAnnotationElement, { + _util.Util.inherit(CheckboxWidgetAnnotationElement, WidgetAnnotationElement, { render: function CheckboxWidgetAnnotationElement_render() { this.container.className = 'buttonWidgetAnnotation checkBox'; var element = document.createElement('input'); @@ -333,7 +330,7 @@ var RadioButtonWidgetAnnotationElement = function RadioButtonWidgetAnnotationEle function RadioButtonWidgetAnnotationElement(parameters) { WidgetAnnotationElement.call(this, parameters, parameters.renderInteractiveForms); } - Util.inherit(RadioButtonWidgetAnnotationElement, WidgetAnnotationElement, { + _util.Util.inherit(RadioButtonWidgetAnnotationElement, WidgetAnnotationElement, { render: function RadioButtonWidgetAnnotationElement_render() { this.container.className = 'buttonWidgetAnnotation radioButton'; var element = document.createElement('input'); @@ -353,7 +350,7 @@ var ChoiceWidgetAnnotationElement = function ChoiceWidgetAnnotationElementClosur function ChoiceWidgetAnnotationElement(parameters) { WidgetAnnotationElement.call(this, parameters, parameters.renderInteractiveForms); } - Util.inherit(ChoiceWidgetAnnotationElement, WidgetAnnotationElement, { + _util.Util.inherit(ChoiceWidgetAnnotationElement, WidgetAnnotationElement, { render: function ChoiceWidgetAnnotationElement_render() { this.container.className = 'choiceWidgetAnnotation'; var selectElement = document.createElement('select'); @@ -386,7 +383,7 @@ var PopupAnnotationElement = function PopupAnnotationElementClosure() { var isRenderable = !!(parameters.data.title || parameters.data.contents); AnnotationElement.call(this, parameters, isRenderable); } - Util.inherit(PopupAnnotationElement, AnnotationElement, { + _util.Util.inherit(PopupAnnotationElement, AnnotationElement, { render: function PopupAnnotationElement_render() { this.container.className = 'popupAnnotation'; if (IGNORE_TYPES.indexOf(this.data.parentType) >= 0) { @@ -406,7 +403,7 @@ var PopupAnnotationElement = function PopupAnnotationElementClosure() { }); var parentLeft = parseFloat(parentElement.style.left); var parentWidth = parseFloat(parentElement.style.width); - CustomStyle.setProp('transformOrigin', this.container, -(parentLeft + parentWidth) + 'px -' + parentElement.style.top); + _dom_utils.CustomStyle.setProp('transformOrigin', this.container, -(parentLeft + parentWidth) + 'px -' + parentElement.style.top); this.container.style.left = parentLeft + parentWidth + 'px'; this.container.appendChild(popup.render()); return this.container; @@ -438,7 +435,7 @@ var PopupElement = function PopupElementClosure() { var r = BACKGROUND_ENLIGHT * (255 - color[0]) + color[0]; var g = BACKGROUND_ENLIGHT * (255 - color[1]) + color[1]; var b = BACKGROUND_ENLIGHT * (255 - color[2]) + color[2]; - popup.style.backgroundColor = Util.makeCssRgb(r | 0, g | 0, b | 0); + popup.style.backgroundColor = _util.Util.makeCssRgb(r | 0, g | 0, b | 0); } var contents = this._formatContents(this.contents); var title = document.createElement('h1'); @@ -498,7 +495,7 @@ var LineAnnotationElement = function LineAnnotationElementClosure() { var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents); AnnotationElement.call(this, parameters, isRenderable, true); } - Util.inherit(LineAnnotationElement, AnnotationElement, { + _util.Util.inherit(LineAnnotationElement, AnnotationElement, { render: function LineAnnotationElement_render() { this.container.className = 'lineAnnotation'; var data = this.data; @@ -530,7 +527,7 @@ var HighlightAnnotationElement = function HighlightAnnotationElementClosure() { var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents); AnnotationElement.call(this, parameters, isRenderable, true); } - Util.inherit(HighlightAnnotationElement, AnnotationElement, { + _util.Util.inherit(HighlightAnnotationElement, AnnotationElement, { render: function HighlightAnnotationElement_render() { this.container.className = 'highlightAnnotation'; if (!this.data.hasPopup) { @@ -546,7 +543,7 @@ var UnderlineAnnotationElement = function UnderlineAnnotationElementClosure() { var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents); AnnotationElement.call(this, parameters, isRenderable, true); } - Util.inherit(UnderlineAnnotationElement, AnnotationElement, { + _util.Util.inherit(UnderlineAnnotationElement, AnnotationElement, { render: function UnderlineAnnotationElement_render() { this.container.className = 'underlineAnnotation'; if (!this.data.hasPopup) { @@ -562,7 +559,7 @@ var SquigglyAnnotationElement = function SquigglyAnnotationElementClosure() { var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents); AnnotationElement.call(this, parameters, isRenderable, true); } - Util.inherit(SquigglyAnnotationElement, AnnotationElement, { + _util.Util.inherit(SquigglyAnnotationElement, AnnotationElement, { render: function SquigglyAnnotationElement_render() { this.container.className = 'squigglyAnnotation'; if (!this.data.hasPopup) { @@ -578,7 +575,7 @@ var StrikeOutAnnotationElement = function StrikeOutAnnotationElementClosure() { var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents); AnnotationElement.call(this, parameters, isRenderable, true); } - Util.inherit(StrikeOutAnnotationElement, AnnotationElement, { + _util.Util.inherit(StrikeOutAnnotationElement, AnnotationElement, { render: function StrikeOutAnnotationElement_render() { this.container.className = 'strikeoutAnnotation'; if (!this.data.hasPopup) { @@ -593,15 +590,15 @@ var FileAttachmentAnnotationElement = function FileAttachmentAnnotationElementCl function FileAttachmentAnnotationElement(parameters) { AnnotationElement.call(this, parameters, true); var file = this.data.file; - this.filename = getFilenameFromUrl(file.filename); + this.filename = (0, _dom_utils.getFilenameFromUrl)(file.filename); this.content = file.content; this.linkService.onFileAttachmentAnnotation({ - id: stringToPDFString(file.filename), + id: (0, _util.stringToPDFString)(file.filename), filename: file.filename, content: file.content }); } - Util.inherit(FileAttachmentAnnotationElement, AnnotationElement, { + _util.Util.inherit(FileAttachmentAnnotationElement, AnnotationElement, { render: function FileAttachmentAnnotationElement_render() { this.container.className = 'fileAttachmentAnnotation'; var trigger = document.createElement('div'); @@ -616,7 +613,7 @@ var FileAttachmentAnnotationElement = function FileAttachmentAnnotationElementCl }, _download: function FileAttachmentAnnotationElement_download() { if (!this.downloadManager) { - warn('Download cannot be started due to unavailable download manager'); + (0, _util.warn)('Download cannot be started due to unavailable download manager'); return; } this.downloadManager.downloadData(this.content, this.filename, ''); @@ -640,7 +637,7 @@ var AnnotationLayer = function AnnotationLayerClosure() { viewport: parameters.viewport, linkService: parameters.linkService, downloadManager: parameters.downloadManager, - imageResourcesPath: parameters.imageResourcesPath || getDefaultSetting('imageResourcesPath'), + imageResourcesPath: parameters.imageResourcesPath || (0, _dom_utils.getDefaultSetting)('imageResourcesPath'), renderInteractiveForms: parameters.renderInteractiveForms || false }); if (element.isRenderable) { @@ -653,7 +650,7 @@ var AnnotationLayer = function AnnotationLayerClosure() { var data = parameters.annotations[i]; var element = parameters.div.querySelector('[data-annotation-id="' + data.id + '"]'); if (element) { - CustomStyle.setProp('transform', element, 'matrix(' + parameters.viewport.transform.join(',') + ')'); + _dom_utils.CustomStyle.setProp('transform', element, 'matrix(' + parameters.viewport.transform.join(',') + ')'); } } parameters.div.removeAttribute('hidden'); diff --git a/lib/display/api.js b/lib/display/api.js index d27ce8a08..2455add0e 100644 --- a/lib/display/api.js +++ b/lib/display/api.js @@ -14,44 +14,23 @@ */ 'use strict'; +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.build = exports.version = exports._UnsupportedManager = exports.PDFPageProxy = exports.PDFDocumentProxy = exports.PDFWorker = exports.PDFDataRangeTransport = exports.getDocument = undefined; + var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; -var sharedUtil = require('../shared/util.js'); -var displayFontLoader = require('./font_loader.js'); -var displayCanvas = require('./canvas.js'); -var displayMetadata = require('./metadata.js'); -var displayDOMUtils = require('./dom_utils.js'); -var amdRequire; -var InvalidPDFException = sharedUtil.InvalidPDFException; -var MessageHandler = sharedUtil.MessageHandler; -var MissingPDFException = sharedUtil.MissingPDFException; -var PageViewport = sharedUtil.PageViewport; -var PasswordException = sharedUtil.PasswordException; -var StatTimer = sharedUtil.StatTimer; -var UnexpectedResponseException = sharedUtil.UnexpectedResponseException; -var UnknownErrorException = sharedUtil.UnknownErrorException; -var Util = sharedUtil.Util; -var createPromiseCapability = sharedUtil.createPromiseCapability; -var error = sharedUtil.error; -var deprecated = sharedUtil.deprecated; -var getVerbosityLevel = sharedUtil.getVerbosityLevel; -var info = sharedUtil.info; -var isInt = sharedUtil.isInt; -var isArray = sharedUtil.isArray; -var isArrayBuffer = sharedUtil.isArrayBuffer; -var isSameOrigin = sharedUtil.isSameOrigin; -var loadJpegStream = sharedUtil.loadJpegStream; -var stringToBytes = sharedUtil.stringToBytes; -var globalScope = sharedUtil.globalScope; -var warn = sharedUtil.warn; -var FontFaceObject = displayFontLoader.FontFaceObject; -var FontLoader = displayFontLoader.FontLoader; -var CanvasGraphics = displayCanvas.CanvasGraphics; -var Metadata = displayMetadata.Metadata; -var RenderingCancelledException = displayDOMUtils.RenderingCancelledException; -var getDefaultSetting = displayDOMUtils.getDefaultSetting; -var DOMCanvasFactory = displayDOMUtils.DOMCanvasFactory; -var DOMCMapReaderFactory = displayDOMUtils.DOMCMapReaderFactory; +var _util = require('../shared/util'); + +var _dom_utils = require('./dom_utils'); + +var _font_loader = require('./font_loader'); + +var _canvas = require('./canvas'); + +var _metadata = require('./metadata'); + var DEFAULT_RANGE_CHUNK_SIZE = 65536; var isWorkerDisabled = false; var workerSrc; @@ -87,7 +66,7 @@ if (typeof __pdfjsdev_webpack__ === 'undefined') { function getDocument(src, pdfDataRangeTransport, passwordCallback, progressCallback) { var task = new PDFDocumentLoadingTask(); if (arguments.length > 1) { - deprecated('getDocument is called with pdfDataRangeTransport, ' + 'passwordCallback or progressCallback argument'); + (0, _util.deprecated)('getDocument is called with pdfDataRangeTransport, ' + 'passwordCallback or progressCallback argument'); } if (pdfDataRangeTransport) { if (!(pdfDataRangeTransport instanceof PDFDataRangeTransport)) { @@ -106,16 +85,16 @@ function getDocument(src, pdfDataRangeTransport, passwordCallback, progressCallb var source; if (typeof src === 'string') { source = { url: src }; - } else if (isArrayBuffer(src)) { + } else if ((0, _util.isArrayBuffer)(src)) { source = { data: src }; } else if (src instanceof PDFDataRangeTransport) { source = { range: src }; } else { if ((typeof src === 'undefined' ? 'undefined' : _typeof(src)) !== 'object') { - error('Invalid parameter in getDocument, need either Uint8Array, ' + 'string or a parameter object'); + (0, _util.error)('Invalid parameter in getDocument, need either Uint8Array, ' + 'string or a parameter object'); } if (!src.url && !src.data && !src.range) { - error('Invalid parameter object: need either .data, .range or .url'); + (0, _util.error)('Invalid parameter object: need either .data, .range or .url'); } source = src; } @@ -135,13 +114,13 @@ function getDocument(src, pdfDataRangeTransport, passwordCallback, progressCallb } else if (key === 'data' && !(source[key] instanceof Uint8Array)) { var pdfBytes = source[key]; if (typeof pdfBytes === 'string') { - params[key] = stringToBytes(pdfBytes); + params[key] = (0, _util.stringToBytes)(pdfBytes); } else if ((typeof pdfBytes === 'undefined' ? 'undefined' : _typeof(pdfBytes)) === 'object' && pdfBytes !== null && !isNaN(pdfBytes.length)) { params[key] = new Uint8Array(pdfBytes); - } else if (isArrayBuffer(pdfBytes)) { + } else if ((0, _util.isArrayBuffer)(pdfBytes)) { params[key] = new Uint8Array(pdfBytes); } else { - error('Invalid PDF binary data: either typed array, string or ' + 'array-like object is expected in the data property.'); + (0, _util.error)('Invalid PDF binary data: either typed array, string or ' + 'array-like object is expected in the data property.'); } continue; } @@ -150,9 +129,9 @@ function getDocument(src, pdfDataRangeTransport, passwordCallback, progressCallb params.rangeChunkSize = params.rangeChunkSize || DEFAULT_RANGE_CHUNK_SIZE; params.disableNativeImageDecoder = params.disableNativeImageDecoder === true; params.ignoreErrors = params.stopAtErrors !== true; - var CMapReaderFactory = params.CMapReaderFactory || DOMCMapReaderFactory; + var CMapReaderFactory = params.CMapReaderFactory || _dom_utils.DOMCMapReaderFactory; if (!worker) { - var workerPort = getDefaultSetting('workerPort'); + var workerPort = (0, _dom_utils.getDefaultSetting)('workerPort'); worker = workerPort ? new PDFWorker(null, workerPort) : new PDFWorker(); task._worker = worker; } @@ -165,7 +144,7 @@ function getDocument(src, pdfDataRangeTransport, passwordCallback, progressCallb if (task.destroyed) { throw new Error('Loading aborted'); } - var messageHandler = new MessageHandler(docId, workerId, worker.port); + var messageHandler = new _util.MessageHandler(docId, workerId, worker.port); var transport = new WorkerTransport(messageHandler, task, rangeTransport, CMapReaderFactory); task._transport = transport; messageHandler.send('Ready', null); @@ -177,8 +156,8 @@ function _fetchDocument(worker, source, pdfDataRangeTransport, docId) { if (worker.destroyed) { return Promise.reject(new Error('Worker was destroyed')); } - source.disableAutoFetch = getDefaultSetting('disableAutoFetch'); - source.disableStream = getDefaultSetting('disableStream'); + source.disableAutoFetch = (0, _dom_utils.getDefaultSetting)('disableAutoFetch'); + source.disableStream = (0, _dom_utils.getDefaultSetting)('disableStream'); source.chunkedViewerLoading = !!pdfDataRangeTransport; if (pdfDataRangeTransport) { source.length = pdfDataRangeTransport.length; @@ -187,11 +166,11 @@ function _fetchDocument(worker, source, pdfDataRangeTransport, docId) { return worker.messageHandler.sendWithPromise('GetDocRequest', { docId: docId, source: source, - disableRange: getDefaultSetting('disableRange'), - maxImageSize: getDefaultSetting('maxImageSize'), - disableFontFace: getDefaultSetting('disableFontFace'), - disableCreateObjectURL: getDefaultSetting('disableCreateObjectURL'), - postMessageTransfers: getDefaultSetting('postMessageTransfers') && !isPostMessageTransfersDisabled, + disableRange: (0, _dom_utils.getDefaultSetting)('disableRange'), + maxImageSize: (0, _dom_utils.getDefaultSetting)('maxImageSize'), + disableFontFace: (0, _dom_utils.getDefaultSetting)('disableFontFace'), + disableCreateObjectURL: (0, _dom_utils.getDefaultSetting)('disableCreateObjectURL'), + postMessageTransfers: (0, _dom_utils.getDefaultSetting)('postMessageTransfers') && !isPostMessageTransfersDisabled, docBaseUrl: source.docBaseUrl, disableNativeImageDecoder: source.disableNativeImageDecoder, ignoreErrors: source.ignoreErrors @@ -205,7 +184,7 @@ function _fetchDocument(worker, source, pdfDataRangeTransport, docId) { var PDFDocumentLoadingTask = function PDFDocumentLoadingTaskClosure() { var nextDocumentId = 0; function PDFDocumentLoadingTask() { - this._capability = createPromiseCapability(); + this._capability = (0, _util.createPromiseCapability)(); this._transport = null; this._worker = null; this.docId = 'd' + nextDocumentId++; @@ -242,7 +221,7 @@ var PDFDataRangeTransport = function pdfDataRangeTransportClosure() { this._rangeListeners = []; this._progressListeners = []; this._progressiveReadListeners = []; - this._readyCapability = createPromiseCapability(); + this._readyCapability = (0, _util.createPromiseCapability)(); } PDFDataRangeTransport.prototype = { addRangeListener: function PDFDataRangeTransport_addRangeListener(listener) { @@ -349,8 +328,8 @@ var PDFPageProxy = function PDFPageProxyClosure() { this.pageIndex = pageIndex; this.pageInfo = pageInfo; this.transport = transport; - this.stats = new StatTimer(); - this.stats.enabled = getDefaultSetting('enableStats'); + this.stats = new _util.StatTimer(); + this.stats.enabled = (0, _dom_utils.getDefaultSetting)('enableStats'); this.commonObjs = transport.commonObjs; this.objs = new PDFObjects(); this.cleanupAfterRender = false; @@ -378,7 +357,7 @@ var PDFPageProxy = function PDFPageProxyClosure() { if (arguments.length < 2) { rotate = this.rotate; } - return new PageViewport(this.view, scale, rotate, 0, 0); + return new _util.PageViewport(this.view, scale, rotate, 0, 0); }, getAnnotations: function PDFPageProxy_getAnnotations(params) { var intent = params && params.intent || null; @@ -393,14 +372,14 @@ var PDFPageProxy = function PDFPageProxyClosure() { stats.time('Overall'); this.pendingCleanup = false; var renderingIntent = params.intent === 'print' ? 'print' : 'display'; - var canvasFactory = params.canvasFactory || new DOMCanvasFactory(); + var canvasFactory = params.canvasFactory || new _dom_utils.DOMCanvasFactory(); if (!this.intentStates[renderingIntent]) { this.intentStates[renderingIntent] = Object.create(null); } var intentState = this.intentStates[renderingIntent]; if (!intentState.displayReadyCapability) { intentState.receivingOperatorList = true; - intentState.displayReadyCapability = createPromiseCapability(); + intentState.displayReadyCapability = (0, _util.createPromiseCapability)(); intentState.operatorList = { fnArray: [], argsArray: [], @@ -421,7 +400,7 @@ var PDFPageProxy = function PDFPageProxyClosure() { intentState.renderTasks.push(internalRenderTask); var renderTask = internalRenderTask.task; if (params.continueCallback) { - deprecated('render is used with continueCallback parameter'); + (0, _util.deprecated)('render is used with continueCallback parameter'); renderTask.onContinue = params.continueCallback; } var self = this; @@ -475,7 +454,7 @@ var PDFPageProxy = function PDFPageProxyClosure() { opListTask = {}; opListTask.operatorListChanged = operatorListChanged; intentState.receivingOperatorList = true; - intentState.opListReadCapability = createPromiseCapability(); + intentState.opListReadCapability = (0, _util.createPromiseCapability)(); intentState.renderTasks = []; intentState.renderTasks.push(opListTask); intentState.operatorList = { @@ -519,7 +498,7 @@ var PDFPageProxy = function PDFPageProxyClosure() { return Promise.all(waitOn); }, destroy: function destroy() { - deprecated('page destroy method, use cleanup() instead'); + (0, _util.deprecated)('page destroy method, use cleanup() instead'); this.cleanup(); }, cleanup: function PDFPageProxy_cleanup() { @@ -571,13 +550,13 @@ var PDFWorker = function PDFWorkerClosure() { if (typeof workerSrc !== 'undefined') { return workerSrc; } - if (getDefaultSetting('workerSrc')) { - return getDefaultSetting('workerSrc'); + if ((0, _dom_utils.getDefaultSetting)('workerSrc')) { + return (0, _dom_utils.getDefaultSetting)('workerSrc'); } if (pdfjsFilePath) { return pdfjsFilePath.replace(/(\.(?:min\.)?js)$/i, '.worker$1'); } - error('No PDFJS.workerSrc specified'); + (0, _util.error)('No PDFJS.workerSrc specified'); } var fakeWorkerFilesLoadedCapability; function setupFakeWorkerGlobal() { @@ -585,9 +564,9 @@ var PDFWorker = function PDFWorkerClosure() { if (fakeWorkerFilesLoadedCapability) { return fakeWorkerFilesLoadedCapability.promise; } - fakeWorkerFilesLoadedCapability = createPromiseCapability(); + fakeWorkerFilesLoadedCapability = (0, _util.createPromiseCapability)(); var loader = fakeWorkerFilesLoader || function (callback) { - Util.loadScript(getWorkerSrc(), function () { + _util.Util.loadScript(getWorkerSrc(), function () { callback(window.pdfjsDistBuildPdfWorker.WorkerMessageHandler); }); }; @@ -610,7 +589,7 @@ var PDFWorker = function PDFWorkerClosure() { } var result; var buffer; - if ((buffer = value.buffer) && isArrayBuffer(buffer)) { + if ((buffer = value.buffer) && (0, _util.isArrayBuffer)(buffer)) { var transferable = transfers && transfers.indexOf(buffer) >= 0; if (value === buffer) { result = value; @@ -622,7 +601,7 @@ var PDFWorker = function PDFWorkerClosure() { cloned.set(value, result); return result; } - result = isArray(value) ? [] : {}; + result = (0, _util.isArray)(value) ? [] : {}; cloned.set(value, result); for (var i in value) { var desc, @@ -669,7 +648,7 @@ var PDFWorker = function PDFWorkerClosure() { function PDFWorker(name, port) { this.name = name; this.destroyed = false; - this._readyCapability = createPromiseCapability(); + this._readyCapability = (0, _util.createPromiseCapability)(); this._port = null; this._webWorker = null; this._messageHandler = null; @@ -691,19 +670,19 @@ var PDFWorker = function PDFWorkerClosure() { }, _initializeFromPort: function PDFWorker_initializeFromPort(port) { this._port = port; - this._messageHandler = new MessageHandler('main', 'worker', port); + this._messageHandler = new _util.MessageHandler('main', 'worker', port); this._messageHandler.on('ready', function () {}); this._readyCapability.resolve(); }, _initialize: function PDFWorker_initialize() { - if (!isWorkerDisabled && !getDefaultSetting('disableWorker') && typeof Worker !== 'undefined') { + if (!isWorkerDisabled && !(0, _dom_utils.getDefaultSetting)('disableWorker') && typeof Worker !== 'undefined') { var workerSrc = getWorkerSrc(); try { - if (!isSameOrigin(window.location.href, workerSrc)) { + if (!(0, _util.isSameOrigin)(window.location.href, workerSrc)) { workerSrc = createCDNWrapper(new URL(workerSrc, window.location).href); } var worker = new Worker(workerSrc); - var messageHandler = new MessageHandler('main', 'worker', worker); + var messageHandler = new _util.MessageHandler('main', 'worker', worker); var terminateEarly = function () { worker.removeEventListener('error', onWorkerError); messageHandler.destroy(); @@ -735,7 +714,7 @@ var PDFWorker = function PDFWorkerClosure() { isPostMessageTransfersDisabled = true; } this._readyCapability.resolve(); - messageHandler.send('configure', { verbosity: getVerbosityLevel() }); + messageHandler.send('configure', { verbosity: (0, _util.getVerbosityLevel)() }); } else { this._setupFakeWorker(); messageHandler.destroy(); @@ -761,12 +740,12 @@ var PDFWorker = function PDFWorkerClosure() { } }.bind(this)); var sendTest = function sendTest() { - var postMessageTransfers = getDefaultSetting('postMessageTransfers') && !isPostMessageTransfersDisabled; + var postMessageTransfers = (0, _dom_utils.getDefaultSetting)('postMessageTransfers') && !isPostMessageTransfersDisabled; var testObj = new Uint8Array([postMessageTransfers ? 255 : 0]); try { messageHandler.send('test', testObj, [testObj.buffer]); } catch (ex) { - info('Cannot use postMessage transfers'); + (0, _util.info)('Cannot use postMessage transfers'); testObj[0] = 0; messageHandler.send('test', testObj); } @@ -774,14 +753,14 @@ var PDFWorker = function PDFWorkerClosure() { sendTest(); return; } catch (e) { - info('The worker has been disabled.'); + (0, _util.info)('The worker has been disabled.'); } } this._setupFakeWorker(); }, _setupFakeWorker: function PDFWorker_setupFakeWorker() { - if (!isWorkerDisabled && !getDefaultSetting('disableWorker')) { - warn('Setting up fake worker.'); + if (!isWorkerDisabled && !(0, _dom_utils.getDefaultSetting)('disableWorker')) { + (0, _util.warn)('Setting up fake worker.'); isWorkerDisabled = true; } setupFakeWorkerGlobal().then(function (WorkerMessageHandler) { @@ -793,9 +772,9 @@ var PDFWorker = function PDFWorkerClosure() { var port = new FakeWorkerPort(isTypedArraysPresent); this._port = port; var id = 'fake' + nextFakeWorkerId++; - var workerHandler = new MessageHandler(id + '_worker', id, port); + var workerHandler = new _util.MessageHandler(id + '_worker', id, port); WorkerMessageHandler.setup(workerHandler, port); - var messageHandler = new MessageHandler(id, id + '_worker', port); + var messageHandler = new _util.MessageHandler(id, id + '_worker', port); this._messageHandler = messageHandler; this._readyCapability.resolve(); }.bind(this)); @@ -821,17 +800,17 @@ var WorkerTransport = function WorkerTransportClosure() { this.loadingTask = loadingTask; this.pdfDataRangeTransport = pdfDataRangeTransport; this.commonObjs = new PDFObjects(); - this.fontLoader = new FontLoader(loadingTask.docId); + this.fontLoader = new _font_loader.FontLoader(loadingTask.docId); this.CMapReaderFactory = new CMapReaderFactory({ - baseUrl: getDefaultSetting('cMapUrl'), - isCompressed: getDefaultSetting('cMapPacked') + baseUrl: (0, _dom_utils.getDefaultSetting)('cMapUrl'), + isCompressed: (0, _dom_utils.getDefaultSetting)('cMapPacked') }); this.destroyed = false; this.destroyCapability = null; this._passwordCapability = null; this.pageCache = []; this.pagePromises = []; - this.downloadInfoCapability = createPromiseCapability(); + this.downloadInfoCapability = (0, _util.createPromiseCapability)(); this.setupMessageHandler(); } WorkerTransport.prototype = { @@ -840,7 +819,7 @@ var WorkerTransport = function WorkerTransportClosure() { return this.destroyCapability.promise; } this.destroyed = true; - this.destroyCapability = createPromiseCapability(); + this.destroyCapability = (0, _util.createPromiseCapability)(); if (this._passwordCapability) { this._passwordCapability.reject(new Error('Worker was destroyed during onPassword callback')); } @@ -899,31 +878,31 @@ var WorkerTransport = function WorkerTransportClosure() { loadingTask._capability.resolve(pdfDocument); }, this); messageHandler.on('PasswordRequest', function transportPasswordRequest(exception) { - this._passwordCapability = createPromiseCapability(); + this._passwordCapability = (0, _util.createPromiseCapability)(); if (loadingTask.onPassword) { var updatePassword = function (password) { this._passwordCapability.resolve({ password: password }); }.bind(this); loadingTask.onPassword(updatePassword, exception.code); } else { - this._passwordCapability.reject(new PasswordException(exception.message, exception.code)); + this._passwordCapability.reject(new _util.PasswordException(exception.message, exception.code)); } return this._passwordCapability.promise; }, this); messageHandler.on('PasswordException', function transportPasswordException(exception) { - loadingTask._capability.reject(new PasswordException(exception.message, exception.code)); + loadingTask._capability.reject(new _util.PasswordException(exception.message, exception.code)); }, this); messageHandler.on('InvalidPDF', function transportInvalidPDF(exception) { - this.loadingTask._capability.reject(new InvalidPDFException(exception.message)); + this.loadingTask._capability.reject(new _util.InvalidPDFException(exception.message)); }, this); messageHandler.on('MissingPDF', function transportMissingPDF(exception) { - this.loadingTask._capability.reject(new MissingPDFException(exception.message)); + this.loadingTask._capability.reject(new _util.MissingPDFException(exception.message)); }, this); messageHandler.on('UnexpectedResponse', function transportUnexpectedResponse(exception) { - this.loadingTask._capability.reject(new UnexpectedResponseException(exception.message, exception.status)); + this.loadingTask._capability.reject(new _util.UnexpectedResponseException(exception.message, exception.status)); }, this); messageHandler.on('UnknownError', function transportUnknownError(exception) { - this.loadingTask._capability.reject(new UnknownErrorException(exception.message, exception.details)); + this.loadingTask._capability.reject(new _util.UnknownErrorException(exception.message, exception.details)); }, this); messageHandler.on('DataLoaded', function transportPage(data) { this.downloadInfoCapability.resolve(data); @@ -962,21 +941,21 @@ var WorkerTransport = function WorkerTransportClosure() { var exportedData = data[2]; if ('error' in exportedData) { var exportedError = exportedData.error; - warn('Error during font loading: ' + exportedError); + (0, _util.warn)('Error during font loading: ' + exportedError); this.commonObjs.resolve(id, exportedError); break; } var fontRegistry = null; - if (getDefaultSetting('pdfBug') && globalScope.FontInspector && globalScope['FontInspector'].enabled) { + if ((0, _dom_utils.getDefaultSetting)('pdfBug') && _util.globalScope.FontInspector && _util.globalScope['FontInspector'].enabled) { fontRegistry = { registerFont: function registerFont(font, url) { - globalScope['FontInspector'].fontAdded(font, url); + _util.globalScope['FontInspector'].fontAdded(font, url); } }; } - var font = new FontFaceObject(exportedData, { - isEvalSuported: getDefaultSetting('isEvalSupported'), - disableFontFace: getDefaultSetting('disableFontFace'), + var font = new _font_loader.FontFaceObject(exportedData, { + isEvalSuported: (0, _dom_utils.getDefaultSetting)('isEvalSupported'), + disableFontFace: (0, _dom_utils.getDefaultSetting)('disableFontFace'), fontRegistry: fontRegistry }); this.fontLoader.bind([font], function fontReady(fontObjs) { @@ -987,7 +966,7 @@ var WorkerTransport = function WorkerTransportClosure() { this.commonObjs.resolve(id, data[2]); break; default: - error('Got unknown common object type ' + type); + (0, _util.error)('Got unknown common object type ' + type); } }, this); messageHandler.on('obj', function transportObj(data) { @@ -1005,7 +984,7 @@ var WorkerTransport = function WorkerTransportClosure() { switch (type) { case 'JpegStream': imageData = data[3]; - loadJpegStream(id, imageData, pageProxy.objs); + (0, _util.loadJpegStream)(id, imageData, pageProxy.objs); break; case 'Image': imageData = data[3]; @@ -1016,7 +995,7 @@ var WorkerTransport = function WorkerTransportClosure() { } break; default: - error('Got unknown object type ' + type); + (0, _util.error)('Got unknown object type ' + type); } }, this); messageHandler.on('DocProgress', function transportDocProgress(data) { @@ -1040,7 +1019,7 @@ var WorkerTransport = function WorkerTransportClosure() { if (intentState.displayReadyCapability) { intentState.displayReadyCapability.reject(data.error); } else { - error(data.error); + (0, _util.error)(data.error); } if (intentState.operatorList) { intentState.operatorList.lastChunk = true; @@ -1121,7 +1100,7 @@ var WorkerTransport = function WorkerTransportClosure() { return this.messageHandler.sendWithPromise('GetData', null); }, getPage: function WorkerTransport_getPage(pageNumber, capability) { - if (!isInt(pageNumber) || pageNumber <= 0 || pageNumber > this.numPages) { + if (!(0, _util.isInt)(pageNumber) || pageNumber <= 0 || pageNumber > this.numPages) { return Promise.reject(new Error('Invalid page request')); } var pageIndex = pageNumber - 1; @@ -1172,7 +1151,7 @@ var WorkerTransport = function WorkerTransportClosure() { return this.messageHandler.sendWithPromise('GetMetadata', null).then(function transportMetadata(results) { return { info: results[0], - metadata: results[1] ? new Metadata(results[1]) : null + metadata: results[1] ? new _metadata.Metadata(results[1]) : null }; }); }, @@ -1204,7 +1183,7 @@ var PDFObjects = function PDFObjectsClosure() { return this.objs[objId]; } var obj = { - capability: createPromiseCapability(), + capability: (0, _util.createPromiseCapability)(), data: null, resolved: false }; @@ -1218,7 +1197,7 @@ var PDFObjects = function PDFObjectsClosure() { } var obj = this.objs[objId]; if (!obj || !obj.resolved) { - error('Requesting object that isn\'t resolved yet ' + objId); + (0, _util.error)('Requesting object that isn\'t resolved yet ' + objId); } return obj.data; }, @@ -1284,7 +1263,7 @@ var InternalRenderTask = function InternalRenderTaskClosure() { this.graphicsReady = false; this.useRequestAnimationFrame = false; this.cancelled = false; - this.capability = createPromiseCapability(); + this.capability = (0, _util.createPromiseCapability)(); this.task = new RenderTask(this); this._continueBound = this._continue.bind(this); this._scheduleNextBound = this._scheduleNext.bind(this); @@ -1295,13 +1274,13 @@ var InternalRenderTask = function InternalRenderTaskClosure() { if (this.cancelled) { return; } - if (getDefaultSetting('pdfBug') && globalScope.StepperManager && globalScope.StepperManager.enabled) { - this.stepper = globalScope.StepperManager.create(this.pageNumber - 1); + if ((0, _dom_utils.getDefaultSetting)('pdfBug') && _util.globalScope.StepperManager && _util.globalScope.StepperManager.enabled) { + this.stepper = _util.globalScope.StepperManager.create(this.pageNumber - 1); this.stepper.init(this.operatorList); this.stepper.nextBreakPoint = this.stepper.getNextBreakPoint(); } var params = this.params; - this.gfx = new CanvasGraphics(params.canvasContext, this.commonObjs, this.objs, this.canvasFactory, params.imageLayer); + this.gfx = new _canvas.CanvasGraphics(params.canvasContext, this.commonObjs, this.objs, this.canvasFactory, params.imageLayer); this.gfx.beginDrawing(params.transform, params.viewport, transparency); this.operatorListIdx = 0; this.graphicsReady = true; @@ -1312,8 +1291,8 @@ var InternalRenderTask = function InternalRenderTaskClosure() { cancel: function InternalRenderTask_cancel() { this.running = false; this.cancelled = true; - if (getDefaultSetting('pdfjsNext')) { - this.callback(new RenderingCancelledException('Rendering cancelled, page ' + this.pageNumber, 'canvas')); + if ((0, _dom_utils.getDefaultSetting)('pdfjsNext')) { + this.callback(new _dom_utils.RenderingCancelledException('Rendering cancelled, page ' + this.pageNumber, 'canvas')); } else { this.callback('cancelled'); } @@ -1371,7 +1350,7 @@ var _UnsupportedManager = function UnsupportedManagerClosure() { var listeners = []; return { listen: function listen(cb) { - deprecated('Global UnsupportedManager.listen is used: ' + ' use PDFDocumentLoadingTask.onUnsupportedFeature instead'); + (0, _util.deprecated)('Global UnsupportedManager.listen is used: ' + ' use PDFDocumentLoadingTask.onUnsupportedFeature instead'); listeners.push(cb); }, notify: function notify(featureId) { @@ -1381,11 +1360,16 @@ var _UnsupportedManager = function UnsupportedManagerClosure() { } }; }(); -exports.version = '1.8.213'; -exports.build = 'c6e8ca86'; +var version, build; +{ + exports.version = version = '1.8.233'; + exports.build = build = '19321937'; +} exports.getDocument = getDocument; exports.PDFDataRangeTransport = PDFDataRangeTransport; exports.PDFWorker = PDFWorker; exports.PDFDocumentProxy = PDFDocumentProxy; exports.PDFPageProxy = PDFPageProxy; -exports._UnsupportedManager = _UnsupportedManager; \ No newline at end of file +exports._UnsupportedManager = _UnsupportedManager; +exports.version = version; +exports.build = build; \ No newline at end of file diff --git a/lib/display/canvas.js b/lib/display/canvas.js index 71ca78f28..2e876ba21 100644 --- a/lib/display/canvas.js +++ b/lib/display/canvas.js @@ -14,27 +14,17 @@ */ 'use strict'; -var sharedUtil = require('../shared/util.js'); -var displayDOMUtils = require('./dom_utils.js'); -var displayPatternHelper = require('./pattern_helper.js'); -var displayWebGL = require('./webgl.js'); -var FONT_IDENTITY_MATRIX = sharedUtil.FONT_IDENTITY_MATRIX; -var IDENTITY_MATRIX = sharedUtil.IDENTITY_MATRIX; -var ImageKind = sharedUtil.ImageKind; -var OPS = sharedUtil.OPS; -var TextRenderingMode = sharedUtil.TextRenderingMode; -var Util = sharedUtil.Util; -var assert = sharedUtil.assert; -var info = sharedUtil.info; -var isNum = sharedUtil.isNum; -var isArray = sharedUtil.isArray; -var isLittleEndian = sharedUtil.isLittleEndian; -var error = sharedUtil.error; -var shadow = sharedUtil.shadow; -var warn = sharedUtil.warn; -var TilingPattern = displayPatternHelper.TilingPattern; -var getShadingPatternFromIR = displayPatternHelper.getShadingPatternFromIR; -var WebGLUtils = displayWebGL.WebGLUtils; +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.CanvasGraphics = undefined; + +var _util = require('../shared/util'); + +var _pattern_helper = require('./pattern_helper'); + +var _webgl = require('./webgl'); + var MIN_FONT_SIZE = 16; var MAX_FONT_SIZE = 100; var MAX_GROUP_SIZE = 4096; @@ -44,7 +34,7 @@ var MAX_SIZE_TO_COMPILE = 1000; var FULL_CHUNK_HEIGHT = 16; var IsLittleEndianCached = { get value() { - return shadow(IsLittleEndianCached, 'value', isLittleEndian()); + return (0, _util.shadow)(IsLittleEndianCached, 'value', (0, _util.isLittleEndian)()); } }; function addContextCurrentTransform(ctx) { @@ -295,9 +285,9 @@ var CanvasExtraState = function CanvasExtraStateClosure() { this.alphaIsShape = false; this.fontSize = 0; this.fontSizeScale = 1; - this.textMatrix = IDENTITY_MATRIX; + this.textMatrix = _util.IDENTITY_MATRIX; this.textMatrixScale = 1; - this.fontMatrix = FONT_IDENTITY_MATRIX; + this.fontMatrix = _util.FONT_IDENTITY_MATRIX; this.leading = 0; this.x = 0; this.y = 0; @@ -306,7 +296,7 @@ var CanvasExtraState = function CanvasExtraStateClosure() { this.charSpacing = 0; this.wordSpacing = 0; this.textHScale = 1; - this.textRenderingMode = TextRenderingMode.FILL; + this.textRenderingMode = _util.TextRenderingMode.FILL; this.textRise = 0; this.fillColor = '#000000'; this.strokeColor = '#000000'; @@ -374,7 +364,7 @@ var CanvasGraphics = function CanvasGraphicsClosure() { var src = imgData.data; var dest = chunkImgData.data; var i, j, thisChunkHeight, elemsInThisChunk; - if (imgData.kind === ImageKind.GRAYSCALE_1BPP) { + if (imgData.kind === _util.ImageKind.GRAYSCALE_1BPP) { var srcLength = src.byteLength; var dest32 = new Uint32Array(dest.buffer, 0, dest.byteLength >> 2); var dest32DataLength = dest32.length; @@ -416,7 +406,7 @@ var CanvasGraphics = function CanvasGraphicsClosure() { } ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT); } - } else if (imgData.kind === ImageKind.RGBA_32BPP) { + } else if (imgData.kind === _util.ImageKind.RGBA_32BPP) { j = 0; elemsInThisChunk = width * FULL_CHUNK_HEIGHT * 4; for (i = 0; i < fullChunks; i++) { @@ -430,7 +420,7 @@ var CanvasGraphics = function CanvasGraphicsClosure() { dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk)); ctx.putImageData(chunkImgData, 0, j); } - } else if (imgData.kind === ImageKind.RGB_24BPP) { + } else if (imgData.kind === _util.ImageKind.RGB_24BPP) { thisChunkHeight = FULL_CHUNK_HEIGHT; elemsInThisChunk = width * thisChunkHeight; for (i = 0; i < totalChunks; i++) { @@ -448,7 +438,7 @@ var CanvasGraphics = function CanvasGraphicsClosure() { ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT); } } else { - error('bad image kind: ' + imgData.kind); + (0, _util.error)('bad image kind: ' + imgData.kind); } } function putBinaryImageMask(ctx, imgData) { @@ -552,8 +542,8 @@ var CanvasGraphics = function CanvasGraphicsClosure() { var maskCtx = smask.context; ctx.setTransform(smask.scaleX, 0, 0, smask.scaleY, smask.offsetX, smask.offsetY); var backdrop = smask.backdrop || null; - if (!smask.transferMap && WebGLUtils.isEnabled) { - var composed = WebGLUtils.composeSMask(layerCtx.canvas, mask, { + if (!smask.transferMap && _webgl.WebGLUtils.isEnabled) { + var composed = _webgl.WebGLUtils.composeSMask(layerCtx.canvas, mask, { subtype: smask.subtype, backdrop: backdrop }); @@ -614,7 +604,7 @@ var CanvasGraphics = function CanvasGraphicsClosure() { return i; } fnId = fnArray[i]; - if (fnId !== OPS.dependency) { + if (fnId !== _util.OPS.dependency) { this[fnId].apply(this, argsArray[i]); } else { var deps = argsArray[i]; @@ -655,7 +645,7 @@ var CanvasGraphics = function CanvasGraphicsClosure() { this.transparentCanvas = null; } this.cachedCanvases.clear(); - WebGLUtils.clear(); + _webgl.WebGLUtils.clear(); if (this.imageLayer) { this.imageLayer.endLayout(); } @@ -768,7 +758,7 @@ var CanvasGraphics = function CanvasGraphicsClosure() { this.ctx.save(); copyCtxState(groupCtx, this.ctx); this.current.resumeSMaskCtx = groupCtx; - var deltaTransform = Util.transform(this.current.activeSMask.startTransformInverse, groupCtx.mozCurrentTransform); + var deltaTransform = _util.Util.transform(this.current.activeSMask.startTransformInverse, groupCtx.mozCurrentTransform); this.ctx.transform.apply(this.ctx, deltaTransform); groupCtx.save(); groupCtx.setTransform(1, 0, 0, 1, 0, 0); @@ -789,7 +779,7 @@ var CanvasGraphics = function CanvasGraphicsClosure() { composeSMask(this.ctx, this.current.activeSMask, groupCtx); this.ctx.restore(); copyCtxState(groupCtx, this.ctx); - var deltaTransform = Util.transform(this.current.activeSMask.startTransformInverse, groupCtx.mozCurrentTransform); + var deltaTransform = _util.Util.transform(this.current.activeSMask.startTransformInverse, groupCtx.mozCurrentTransform); this.ctx.transform.apply(this.ctx, deltaTransform); }, save: function CanvasGraphics_save() { @@ -824,7 +814,7 @@ var CanvasGraphics = function CanvasGraphicsClosure() { y = current.y; for (var i = 0, j = 0, ii = ops.length; i < ii; i++) { switch (ops[i] | 0) { - case OPS.rectangle: + case _util.OPS.rectangle: x = args[j++]; y = args[j++]; var width = args[j++]; @@ -844,35 +834,35 @@ var CanvasGraphics = function CanvasGraphicsClosure() { this.ctx.lineTo(x, y); this.ctx.closePath(); break; - case OPS.moveTo: + case _util.OPS.moveTo: x = args[j++]; y = args[j++]; ctx.moveTo(x, y); break; - case OPS.lineTo: + case _util.OPS.lineTo: x = args[j++]; y = args[j++]; ctx.lineTo(x, y); break; - case OPS.curveTo: + case _util.OPS.curveTo: x = args[j + 4]; y = args[j + 5]; ctx.bezierCurveTo(args[j], args[j + 1], args[j + 2], args[j + 3], x, y); j += 6; break; - case OPS.curveTo2: + case _util.OPS.curveTo2: ctx.bezierCurveTo(x, y, args[j], args[j + 1], args[j + 2], args[j + 3]); x = args[j + 2]; y = args[j + 3]; j += 4; break; - case OPS.curveTo3: + case _util.OPS.curveTo3: x = args[j + 2]; y = args[j + 3]; ctx.bezierCurveTo(args[j], args[j + 1], x, y, x, y); j += 4; break; - case OPS.closePath: + case _util.OPS.closePath: ctx.closePath(); break; } @@ -964,7 +954,7 @@ var CanvasGraphics = function CanvasGraphicsClosure() { this.pendingClip = EO_CLIP; }, beginText: function CanvasGraphics_beginText() { - this.current.textMatrix = IDENTITY_MATRIX; + this.current.textMatrix = _util.IDENTITY_MATRIX; this.current.textMatrixScale = 1; this.current.x = this.current.lineX = 0; this.current.y = this.current.lineY = 0; @@ -1005,11 +995,11 @@ var CanvasGraphics = function CanvasGraphicsClosure() { var fontObj = this.commonObjs.get(fontRefName); var current = this.current; if (!fontObj) { - error('Can\'t find font for ' + fontRefName); + (0, _util.error)('Can\'t find font for ' + fontRefName); } - current.fontMatrix = fontObj.fontMatrix ? fontObj.fontMatrix : FONT_IDENTITY_MATRIX; + current.fontMatrix = fontObj.fontMatrix ? fontObj.fontMatrix : _util.FONT_IDENTITY_MATRIX; if (current.fontMatrix[0] === 0 || current.fontMatrix[3] === 0) { - warn('Invalid font matrix for font ' + fontRefName); + (0, _util.warn)('Invalid font matrix for font ' + fontRefName); } if (size < 0) { size = -size; @@ -1060,8 +1050,8 @@ var CanvasGraphics = function CanvasGraphicsClosure() { var font = current.font; var textRenderingMode = current.textRenderingMode; var fontSize = current.fontSize / current.fontSizeScale; - var fillStrokeMode = textRenderingMode & TextRenderingMode.FILL_STROKE_MASK; - var isAddToPathSet = !!(textRenderingMode & TextRenderingMode.ADD_TO_PATH_FLAG); + var fillStrokeMode = textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK; + var isAddToPathSet = !!(textRenderingMode & _util.TextRenderingMode.ADD_TO_PATH_FLAG); var addToPath; if (font.disableFontFace || isAddToPathSet) { addToPath = font.getPathGenerator(this.commonObjs, character); @@ -1071,18 +1061,18 @@ var CanvasGraphics = function CanvasGraphicsClosure() { ctx.translate(x, y); ctx.beginPath(); addToPath(ctx, fontSize); - if (fillStrokeMode === TextRenderingMode.FILL || fillStrokeMode === TextRenderingMode.FILL_STROKE) { + if (fillStrokeMode === _util.TextRenderingMode.FILL || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) { ctx.fill(); } - if (fillStrokeMode === TextRenderingMode.STROKE || fillStrokeMode === TextRenderingMode.FILL_STROKE) { + if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) { ctx.stroke(); } ctx.restore(); } else { - if (fillStrokeMode === TextRenderingMode.FILL || fillStrokeMode === TextRenderingMode.FILL_STROKE) { + if (fillStrokeMode === _util.TextRenderingMode.FILL || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) { ctx.fillText(character, x, y); } - if (fillStrokeMode === TextRenderingMode.STROKE || fillStrokeMode === TextRenderingMode.FILL_STROKE) { + if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) { ctx.strokeText(character, x, y); } } @@ -1109,7 +1099,7 @@ var CanvasGraphics = function CanvasGraphicsClosure() { break; } } - return shadow(this, 'isFontSubpixelAAEnabled', enabled); + return (0, _util.shadow)(this, 'isFontSubpixelAAEnabled', enabled); }, showText: function CanvasGraphics_showText(glyphs) { var current = this.current; @@ -1132,7 +1122,7 @@ var CanvasGraphics = function CanvasGraphicsClosure() { var spacingDir = vertical ? 1 : -1; var defaultVMetrics = font.defaultVMetrics; var widthAdvanceScale = fontSize * current.fontMatrix[0]; - var simpleFillText = current.textRenderingMode === TextRenderingMode.FILL && !font.disableFontFace; + var simpleFillText = current.textRenderingMode === _util.TextRenderingMode.FILL && !font.disableFontFace; ctx.save(); ctx.transform.apply(ctx, current.textMatrix); ctx.translate(current.x, current.y + current.textRise); @@ -1147,8 +1137,8 @@ var CanvasGraphics = function CanvasGraphicsClosure() { var lineWidth = current.lineWidth; var scale = current.textMatrixScale; if (scale === 0 || lineWidth === 0) { - var fillStrokeMode = current.textRenderingMode & TextRenderingMode.FILL_STROKE_MASK; - if (fillStrokeMode === TextRenderingMode.STROKE || fillStrokeMode === TextRenderingMode.FILL_STROKE) { + var fillStrokeMode = current.textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK; + if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) { this.cachedGetSinglePixelWidth = null; lineWidth = this.getSinglePixelWidth() * MIN_WIDTH_FACTOR; } @@ -1164,7 +1154,7 @@ var CanvasGraphics = function CanvasGraphicsClosure() { i; for (i = 0; i < glyphsLength; ++i) { var glyph = glyphs[i]; - if (isNum(glyph)) { + if ((0, _util.isNum)(glyph)) { x += spacingDir * glyph * fontSize / 1000; continue; } @@ -1234,9 +1224,9 @@ var CanvasGraphics = function CanvasGraphicsClosure() { var charSpacing = current.charSpacing; var wordSpacing = current.wordSpacing; var textHScale = current.textHScale * fontDirection; - var fontMatrix = current.fontMatrix || FONT_IDENTITY_MATRIX; + var fontMatrix = current.fontMatrix || _util.FONT_IDENTITY_MATRIX; var glyphsLength = glyphs.length; - var isTextInvisible = current.textRenderingMode === TextRenderingMode.INVISIBLE; + var isTextInvisible = current.textRenderingMode === _util.TextRenderingMode.INVISIBLE; var i, glyph, width, spacingLength; if (isTextInvisible || fontSize === 0) { return; @@ -1248,7 +1238,7 @@ var CanvasGraphics = function CanvasGraphicsClosure() { ctx.scale(textHScale, fontDirection); for (i = 0; i < glyphsLength; ++i) { glyph = glyphs[i]; - if (isNum(glyph)) { + if ((0, _util.isNum)(glyph)) { spacingLength = spacingDir * glyph * fontSize / 1000; this.ctx.translate(spacingLength, 0); current.x += spacingLength * textHScale; @@ -1257,7 +1247,7 @@ var CanvasGraphics = function CanvasGraphicsClosure() { var spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing; var operatorList = font.charProcOperatorList[glyph.operatorListId]; if (!operatorList) { - warn('Type3 character \"' + glyph.operatorListId + '\" is not available'); + (0, _util.warn)('Type3 character \"' + glyph.operatorListId + '\" is not available'); continue; } this.processingType3 = glyph; @@ -1266,7 +1256,7 @@ var CanvasGraphics = function CanvasGraphicsClosure() { ctx.transform.apply(ctx, fontMatrix); this.executeOperatorList(operatorList); this.restore(); - var transformed = Util.applyTransform([glyph.width, 0], fontMatrix); + var transformed = _util.Util.applyTransform([glyph.width, 0], fontMatrix); width = transformed[0] * fontSize + spacing; ctx.translate(width, 0); current.x += width * textHScale; @@ -1291,9 +1281,9 @@ var CanvasGraphics = function CanvasGraphicsClosure() { return new CanvasGraphics(ctx, self.commonObjs, self.objs, self.canvasFactory); } }; - pattern = new TilingPattern(IR, color, this.ctx, canvasGraphicsFactory, baseTransform); + pattern = new _pattern_helper.TilingPattern(IR, color, this.ctx, canvasGraphicsFactory, baseTransform); } else { - pattern = getShadingPatternFromIR(IR); + pattern = (0, _pattern_helper.getShadingPatternFromIR)(IR); } return pattern; }, @@ -1305,12 +1295,12 @@ var CanvasGraphics = function CanvasGraphicsClosure() { this.current.patternFill = true; }, setStrokeRGBColor: function CanvasGraphics_setStrokeRGBColor(r, g, b) { - var color = Util.makeCssRgb(r, g, b); + var color = _util.Util.makeCssRgb(r, g, b); this.ctx.strokeStyle = color; this.current.strokeColor = color; }, setFillRGBColor: function CanvasGraphics_setFillRGBColor(r, g, b) { - var color = Util.makeCssRgb(r, g, b); + var color = _util.Util.makeCssRgb(r, g, b); this.ctx.fillStyle = color; this.current.fillColor = color; this.current.patternFill = false; @@ -1318,17 +1308,17 @@ var CanvasGraphics = function CanvasGraphicsClosure() { shadingFill: function CanvasGraphics_shadingFill(patternIR) { var ctx = this.ctx; this.save(); - var pattern = getShadingPatternFromIR(patternIR); + var pattern = (0, _pattern_helper.getShadingPatternFromIR)(patternIR); ctx.fillStyle = pattern.getPattern(ctx, this, true); var inv = ctx.mozCurrentTransformInverse; if (inv) { var canvas = ctx.canvas; var width = canvas.width; var height = canvas.height; - var bl = Util.applyTransform([0, 0], inv); - var br = Util.applyTransform([0, height], inv); - var ul = Util.applyTransform([width, 0], inv); - var ur = Util.applyTransform([width, height], inv); + var bl = _util.Util.applyTransform([0, 0], inv); + var br = _util.Util.applyTransform([0, height], inv); + var ul = _util.Util.applyTransform([width, 0], inv); + var ur = _util.Util.applyTransform([width, height], inv); var x0 = Math.min(bl[0], br[0], ul[0], ur[0]); var y0 = Math.min(bl[1], br[1], ul[1], ur[1]); var x1 = Math.max(bl[0], br[0], ul[0], ur[0]); @@ -1340,19 +1330,19 @@ var CanvasGraphics = function CanvasGraphicsClosure() { this.restore(); }, beginInlineImage: function CanvasGraphics_beginInlineImage() { - error('Should not call beginInlineImage'); + (0, _util.error)('Should not call beginInlineImage'); }, beginImageData: function CanvasGraphics_beginImageData() { - error('Should not call beginImageData'); + (0, _util.error)('Should not call beginImageData'); }, paintFormXObjectBegin: function CanvasGraphics_paintFormXObjectBegin(matrix, bbox) { this.save(); this.baseTransformStack.push(this.baseTransform); - if (isArray(matrix) && matrix.length === 6) { + if ((0, _util.isArray)(matrix) && matrix.length === 6) { this.transform.apply(this, matrix); } this.baseTransform = this.ctx.mozCurrentTransform; - if (isArray(bbox) && bbox.length === 4) { + if ((0, _util.isArray)(bbox) && bbox.length === 4) { var width = bbox[2] - bbox[0]; var height = bbox[3] - bbox[1]; this.ctx.rect(bbox[0], bbox[1], width, height); @@ -1368,19 +1358,19 @@ var CanvasGraphics = function CanvasGraphicsClosure() { this.save(); var currentCtx = this.ctx; if (!group.isolated) { - info('TODO: Support non-isolated groups.'); + (0, _util.info)('TODO: Support non-isolated groups.'); } if (group.knockout) { - warn('Knockout groups not supported.'); + (0, _util.warn)('Knockout groups not supported.'); } var currentTransform = currentCtx.mozCurrentTransform; if (group.matrix) { currentCtx.transform.apply(currentCtx, group.matrix); } - assert(group.bbox, 'Bounding box is required.'); - var bounds = Util.getAxialAlignedBoundingBox(group.bbox, currentCtx.mozCurrentTransform); + (0, _util.assert)(group.bbox, 'Bounding box is required.'); + var bounds = _util.Util.getAxialAlignedBoundingBox(group.bbox, currentCtx.mozCurrentTransform); var canvasBounds = [0, 0, currentCtx.canvas.width, currentCtx.canvas.height]; - bounds = Util.intersect(bounds, canvasBounds) || [0, 0, 0, 0]; + bounds = _util.Util.intersect(bounds, canvasBounds) || [0, 0, 0, 0]; var offsetX = Math.floor(bounds[0]); var offsetY = Math.floor(bounds[1]); var drawnWidth = Math.max(Math.ceil(bounds[2]) - offsetX, 1); @@ -1457,7 +1447,7 @@ var CanvasGraphics = function CanvasGraphicsClosure() { }, beginAnnotation: function CanvasGraphics_beginAnnotation(rect, transform, matrix) { this.save(); - if (isArray(rect) && rect.length === 4) { + if ((0, _util.isArray)(rect) && rect.length === 4) { var width = rect[2] - rect[0]; var height = rect[3] - rect[1]; this.ctx.rect(rect[0], rect[1], width, height); @@ -1473,7 +1463,7 @@ var CanvasGraphics = function CanvasGraphicsClosure() { paintJpegXObject: function CanvasGraphics_paintJpegXObject(objId, w, h) { var domImage = this.objs.get(objId); if (!domImage) { - warn('Dependent image isn\'t ready yet'); + (0, _util.warn)('Dependent image isn\'t ready yet'); return; } this.save(); @@ -1573,7 +1563,7 @@ var CanvasGraphics = function CanvasGraphicsClosure() { paintImageXObject: function CanvasGraphics_paintImageXObject(objId) { var imgData = this.objs.get(objId); if (!imgData) { - warn('Dependent image isn\'t ready yet'); + (0, _util.warn)('Dependent image isn\'t ready yet'); return; } this.paintInlineImageXObject(imgData); @@ -1581,7 +1571,7 @@ var CanvasGraphics = function CanvasGraphicsClosure() { paintImageXObjectRepeat: function CanvasGraphics_paintImageXObjectRepeat(objId, scaleX, scaleY, positions) { var imgData = this.objs.get(objId); if (!imgData) { - warn('Dependent image isn\'t ready yet'); + (0, _util.warn)('Dependent image isn\'t ready yet'); return; } var width = imgData.width; @@ -1686,7 +1676,7 @@ var CanvasGraphics = function CanvasGraphicsClosure() { this.ctx.fillRect(0, 0, 1, 1); }, paintXObject: function CanvasGraphics_paintXObject() { - warn('Unsupported \'paintXObject\' command.'); + (0, _util.warn)('Unsupported \'paintXObject\' command.'); }, markPoint: function CanvasGraphics_markPoint(tag) {}, markPointProps: function CanvasGraphics_markPointProps(tag, properties) {}, @@ -1721,8 +1711,8 @@ var CanvasGraphics = function CanvasGraphicsClosure() { return [transform[0] * x + transform[2] * y + transform[4], transform[1] * x + transform[3] * y + transform[5]]; } }; - for (var op in OPS) { - CanvasGraphics.prototype[OPS[op]] = CanvasGraphics.prototype[op]; + for (var op in _util.OPS) { + CanvasGraphics.prototype[_util.OPS[op]] = CanvasGraphics.prototype[op]; } return CanvasGraphics; }(); diff --git a/lib/display/dom_utils.js b/lib/display/dom_utils.js index 2568f0210..8e67a1667 100644 --- a/lib/display/dom_utils.js +++ b/lib/display/dom_utils.js @@ -14,19 +14,18 @@ */ 'use strict'; -var sharedUtil = require('../shared/util.js'); -var assert = sharedUtil.assert; -var removeNullCharacters = sharedUtil.removeNullCharacters; -var warn = sharedUtil.warn; -var deprecated = sharedUtil.deprecated; -var createValidAbsoluteUrl = sharedUtil.createValidAbsoluteUrl; -var stringToBytes = sharedUtil.stringToBytes; -var CMapCompressionType = sharedUtil.CMapCompressionType; +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.DOMCMapReaderFactory = exports.DOMCanvasFactory = exports.DEFAULT_LINK_REL = exports.getDefaultSetting = exports.LinkTarget = exports.getFilenameFromUrl = exports.isValidUrl = exports.isExternalLinkTargetSet = exports.addLinkAttributes = exports.RenderingCancelledException = exports.CustomStyle = undefined; + +var _util = require('../shared/util'); + var DEFAULT_LINK_REL = 'noopener noreferrer nofollow'; function DOMCanvasFactory() {} DOMCanvasFactory.prototype = { create: function DOMCanvasFactory_create(width, height) { - assert(width > 0 && height > 0, 'invalid canvas size'); + (0, _util.assert)(width > 0 && height > 0, 'invalid canvas size'); var canvas = document.createElement('canvas'); var context = canvas.getContext('2d'); canvas.width = width; @@ -37,13 +36,13 @@ DOMCanvasFactory.prototype = { }; }, reset: function DOMCanvasFactory_reset(canvasAndContextPair, width, height) { - assert(canvasAndContextPair.canvas, 'canvas is not specified'); - assert(width > 0 && height > 0, 'invalid canvas size'); + (0, _util.assert)(canvasAndContextPair.canvas, 'canvas is not specified'); + (0, _util.assert)(width > 0 && height > 0, 'invalid canvas size'); canvasAndContextPair.canvas.width = width; canvasAndContextPair.canvas.height = height; }, destroy: function DOMCanvasFactory_destroy(canvasAndContextPair) { - assert(canvasAndContextPair.canvas, 'canvas is not specified'); + (0, _util.assert)(canvasAndContextPair.canvas, 'canvas is not specified'); canvasAndContextPair.canvas.width = 0; canvasAndContextPair.canvas.height = 0; canvasAndContextPair.canvas = null; @@ -77,12 +76,12 @@ var DOMCMapReaderFactory = function DOMCMapReaderFactoryClosure() { if (this.isCompressed && request.response) { data = new Uint8Array(request.response); } else if (!this.isCompressed && request.responseText) { - data = stringToBytes(request.responseText); + data = (0, _util.stringToBytes)(request.responseText); } if (data) { resolve({ cMapData: data, - compressionType: this.isCompressed ? CMapCompressionType.BINARY : CMapCompressionType.NONE + compressionType: this.isCompressed ? _util.CMapCompressionType.BINARY : _util.CMapCompressionType.NONE }); return; } @@ -147,7 +146,7 @@ var LinkTarget = { var LinkTargetStringMap = ['', '_self', '_blank', '_parent', '_top']; function addLinkAttributes(link, params) { var url = params && params.url; - link.href = link.title = url ? removeNullCharacters(url) : ''; + link.href = link.title = url ? (0, _util.removeNullCharacters)(url) : ''; if (url) { var target = params.target; if (typeof target === 'undefined') { @@ -168,7 +167,7 @@ function getFilenameFromUrl(url) { return url.substring(url.lastIndexOf('/', end) + 1, end); } function getDefaultSetting(id) { - var globalSettings = sharedUtil.globalScope.PDFJS; + var globalSettings = _util.globalScope.PDFJS; switch (id) { case 'pdfBug': return globalSettings ? globalSettings.pdfBug : false; @@ -214,7 +213,7 @@ function getDefaultSetting(id) { case LinkTarget.TOP: return globalSettings.externalLinkTarget; } - warn('PDFJS.externalLinkTarget is invalid: ' + globalSettings.externalLinkTarget); + (0, _util.warn)('PDFJS.externalLinkTarget is invalid: ' + globalSettings.externalLinkTarget); globalSettings.externalLinkTarget = LinkTarget.NONE; return LinkTarget.NONE; case 'externalLinkRel': @@ -240,17 +239,17 @@ function isExternalLinkTargetSet() { } } function isValidUrl(url, allowRelative) { - deprecated('isValidUrl(), please use createValidAbsoluteUrl() instead.'); + (0, _util.deprecated)('isValidUrl(), please use createValidAbsoluteUrl() instead.'); var baseUrl = allowRelative ? 'http://example.com' : null; - return createValidAbsoluteUrl(url, baseUrl) !== null; + return (0, _util.createValidAbsoluteUrl)(url, baseUrl) !== null; } exports.CustomStyle = CustomStyle; +exports.RenderingCancelledException = RenderingCancelledException; exports.addLinkAttributes = addLinkAttributes; exports.isExternalLinkTargetSet = isExternalLinkTargetSet; exports.isValidUrl = isValidUrl; exports.getFilenameFromUrl = getFilenameFromUrl; exports.LinkTarget = LinkTarget; -exports.RenderingCancelledException = RenderingCancelledException; exports.getDefaultSetting = getDefaultSetting; exports.DEFAULT_LINK_REL = DEFAULT_LINK_REL; exports.DOMCanvasFactory = DOMCanvasFactory; diff --git a/lib/display/font_loader.js b/lib/display/font_loader.js index a9f1e1931..4a831bfd1 100644 --- a/lib/display/font_loader.js +++ b/lib/display/font_loader.js @@ -14,12 +14,13 @@ */ 'use strict'; -var sharedUtil = require('../shared/util.js'); -var assert = sharedUtil.assert; -var bytesToString = sharedUtil.bytesToString; -var string32 = sharedUtil.string32; -var shadow = sharedUtil.shadow; -var warn = sharedUtil.warn; +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.FontLoader = exports.FontFaceObject = undefined; + +var _util = require('../shared/util'); + function FontLoader(docId) { this.docId = docId; this.styleElement = null; @@ -52,170 +53,176 @@ FontLoader.prototype = { this.nativeFontFaces.length = 0; } }; -var getLoadTestFont = function getLoadTestFont() { - return atob('T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQAFQ' + 'AABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAAALwA' + 'AAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgAAAAGbm' + 'FtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1AAsD6AAA' + 'AADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD6AAAAAAD6A' + 'ABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACMAooCvAAAAeAA' + 'MQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4DIP84AFoDIQAAAA' + 'AAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAAAAEAAQAAAAEAAAAA' + 'AAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUAAQAAAAEAAAAAAAYAAQ' + 'AAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgABAAMAAQQJAAMAAgABAAMA' + 'AQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABYAAAAAAAAAwAAAAMAAAAcAA' + 'EAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAAAC7////TAAEAAAAAAAABBgAA' + 'AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAA' + 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' + 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' + 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' + 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAA' + 'AAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAAAAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgc' + 'A/gXBIwMAYuL+nz5tQXkD5j3CBLnEQACAQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWF' + 'hYWFhYWFhYAAABAQAADwACAQEEE/t3Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQA' + 'AAAAAAABAAAAAMmJbzEAAAAAzgTjFQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAg' + 'ABAAAAAAAAAAAD6AAAAAAAAA=='); -}; -Object.defineProperty(FontLoader.prototype, 'loadTestFont', { - get: function get() { - return shadow(this, 'loadTestFont', getLoadTestFont()); - }, - configurable: true -}); -FontLoader.prototype.addNativeFontFace = function fontLoader_addNativeFontFace(nativeFontFace) { - this.nativeFontFaces.push(nativeFontFace); - document.fonts.add(nativeFontFace); -}; -FontLoader.prototype.bind = function fontLoaderBind(fonts, callback) { - var rules = []; - var fontsToLoad = []; - var fontLoadPromises = []; - var getNativeFontPromise = function getNativeFontPromise(nativeFontFace) { - return nativeFontFace.loaded.catch(function (e) { - warn('Failed to load font "' + nativeFontFace.family + '": ' + e); - }); +{ + var getLoadTestFont = function getLoadTestFont() { + return atob('T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQAFQ' + 'AABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAAALwA' + 'AAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgAAAAGbm' + 'FtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1AAsD6AAA' + 'AADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD6AAAAAAD6A' + 'ABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACMAooCvAAAAeAA' + 'MQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4DIP84AFoDIQAAAA' + 'AAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAAAAEAAQAAAAEAAAAA' + 'AAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUAAQAAAAEAAAAAAAYAAQ' + 'AAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgABAAMAAQQJAAMAAgABAAMA' + 'AQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABYAAAAAAAAAwAAAAMAAAAcAA' + 'EAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAAAC7////TAAEAAAAAAAABBgAA' + 'AQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAA' + 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' + 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' + 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA' + 'AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAA' + 'AAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAAAAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgc' + 'A/gXBIwMAYuL+nz5tQXkD5j3CBLnEQACAQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWF' + 'hYWFhYWFhYAAABAQAADwACAQEEE/t3Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQA' + 'AAAAAAABAAAAAMmJbzEAAAAAzgTjFQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAg' + 'ABAAAAAAAAAAAD6AAAAAAAAA=='); + }; + Object.defineProperty(FontLoader.prototype, 'loadTestFont', { + get: function get() { + return (0, _util.shadow)(this, 'loadTestFont', getLoadTestFont()); + }, + configurable: true + }); + FontLoader.prototype.addNativeFontFace = function fontLoader_addNativeFontFace(nativeFontFace) { + this.nativeFontFaces.push(nativeFontFace); + document.fonts.add(nativeFontFace); }; - var isFontLoadingAPISupported = FontLoader.isFontLoadingAPISupported && !FontLoader.isSyncFontLoadingSupported; - for (var i = 0, ii = fonts.length; i < ii; i++) { - var font = fonts[i]; - if (font.attached || font.loading === false) { - continue; + FontLoader.prototype.bind = function fontLoaderBind(fonts, callback) { + var rules = []; + var fontsToLoad = []; + var fontLoadPromises = []; + var getNativeFontPromise = function getNativeFontPromise(nativeFontFace) { + return nativeFontFace.loaded.catch(function (e) { + (0, _util.warn)('Failed to load font "' + nativeFontFace.family + '": ' + e); + }); + }; + var isFontLoadingAPISupported = FontLoader.isFontLoadingAPISupported && !FontLoader.isSyncFontLoadingSupported; + for (var i = 0, ii = fonts.length; i < ii; i++) { + var font = fonts[i]; + if (font.attached || font.loading === false) { + continue; + } + font.attached = true; + if (isFontLoadingAPISupported) { + var nativeFontFace = font.createNativeFontFace(); + if (nativeFontFace) { + this.addNativeFontFace(nativeFontFace); + fontLoadPromises.push(getNativeFontPromise(nativeFontFace)); + } + } else { + var rule = font.createFontFaceRule(); + if (rule) { + this.insertRule(rule); + rules.push(rule); + fontsToLoad.push(font); + } + } } - font.attached = true; + var request = this.queueLoadingCallback(callback); if (isFontLoadingAPISupported) { - var nativeFontFace = font.createNativeFontFace(); - if (nativeFontFace) { - this.addNativeFontFace(nativeFontFace); - fontLoadPromises.push(getNativeFontPromise(nativeFontFace)); - } + Promise.all(fontLoadPromises).then(function () { + request.complete(); + }); + } else if (rules.length > 0 && !FontLoader.isSyncFontLoadingSupported) { + this.prepareFontLoadEvent(rules, fontsToLoad, request); } else { - var rule = font.createFontFaceRule(); - if (rule) { - this.insertRule(rule); - rules.push(rule); - fontsToLoad.push(font); + request.complete(); + } + }; + FontLoader.prototype.queueLoadingCallback = function FontLoader_queueLoadingCallback(callback) { + function LoadLoader_completeRequest() { + (0, _util.assert)(!request.end, 'completeRequest() cannot be called twice'); + request.end = Date.now(); + while (context.requests.length > 0 && context.requests[0].end) { + var otherRequest = context.requests.shift(); + setTimeout(otherRequest.callback, 0); } } - } - var request = this.queueLoadingCallback(callback); - if (isFontLoadingAPISupported) { - Promise.all(fontLoadPromises).then(function () { + var context = this.loadingContext; + var requestId = 'pdfjs-font-loading-' + context.nextRequestId++; + var request = { + id: requestId, + complete: LoadLoader_completeRequest, + callback: callback, + started: Date.now() + }; + context.requests.push(request); + return request; + }; + FontLoader.prototype.prepareFontLoadEvent = function fontLoaderPrepareFontLoadEvent(rules, fonts, request) { + function int32(data, offset) { + return data.charCodeAt(offset) << 24 | data.charCodeAt(offset + 1) << 16 | data.charCodeAt(offset + 2) << 8 | data.charCodeAt(offset + 3) & 0xff; + } + function spliceString(s, offset, remove, insert) { + var chunk1 = s.substr(0, offset); + var chunk2 = s.substr(offset + remove); + return chunk1 + insert + chunk2; + } + var i, ii; + var canvas = document.createElement('canvas'); + canvas.width = 1; + canvas.height = 1; + var ctx = canvas.getContext('2d'); + var called = 0; + function isFontReady(name, callback) { + called++; + if (called > 30) { + (0, _util.warn)('Load test font never loaded.'); + callback(); + return; + } + ctx.font = '30px ' + name; + ctx.fillText('.', 0, 20); + var imageData = ctx.getImageData(0, 0, 1, 1); + if (imageData.data[3] > 0) { + callback(); + return; + } + setTimeout(isFontReady.bind(null, name, callback)); + } + var loadTestFontId = 'lt' + Date.now() + this.loadTestFontId++; + var data = this.loadTestFont; + var COMMENT_OFFSET = 976; + data = spliceString(data, COMMENT_OFFSET, loadTestFontId.length, loadTestFontId); + var CFF_CHECKSUM_OFFSET = 16; + var XXXX_VALUE = 0x58585858; + var checksum = int32(data, CFF_CHECKSUM_OFFSET); + for (i = 0, ii = loadTestFontId.length - 3; i < ii; i += 4) { + checksum = checksum - XXXX_VALUE + int32(loadTestFontId, i) | 0; + } + if (i < loadTestFontId.length) { + checksum = checksum - XXXX_VALUE + int32(loadTestFontId + 'XXX', i) | 0; + } + data = spliceString(data, CFF_CHECKSUM_OFFSET, 4, (0, _util.string32)(checksum)); + var url = 'url(data:font/opentype;base64,' + btoa(data) + ');'; + var rule = '@font-face { font-family:"' + loadTestFontId + '";src:' + url + '}'; + this.insertRule(rule); + var names = []; + for (i = 0, ii = fonts.length; i < ii; i++) { + names.push(fonts[i].loadedName); + } + names.push(loadTestFontId); + var div = document.createElement('div'); + div.setAttribute('style', 'visibility: hidden;' + 'width: 10px; height: 10px;' + 'position: absolute; top: 0px; left: 0px;'); + for (i = 0, ii = names.length; i < ii; ++i) { + var span = document.createElement('span'); + span.textContent = 'Hi'; + span.style.fontFamily = names[i]; + div.appendChild(span); + } + document.body.appendChild(div); + isFontReady(loadTestFontId, function () { + document.body.removeChild(div); request.complete(); }); - } else if (rules.length > 0 && !FontLoader.isSyncFontLoadingSupported) { - this.prepareFontLoadEvent(rules, fontsToLoad, request); - } else { - request.complete(); - } -}; -FontLoader.prototype.queueLoadingCallback = function FontLoader_queueLoadingCallback(callback) { - function LoadLoader_completeRequest() { - assert(!request.end, 'completeRequest() cannot be called twice'); - request.end = Date.now(); - while (context.requests.length > 0 && context.requests[0].end) { - var otherRequest = context.requests.shift(); - setTimeout(otherRequest.callback, 0); - } - } - var context = this.loadingContext; - var requestId = 'pdfjs-font-loading-' + context.nextRequestId++; - var request = { - id: requestId, - complete: LoadLoader_completeRequest, - callback: callback, - started: Date.now() }; - context.requests.push(request); - return request; -}; -FontLoader.prototype.prepareFontLoadEvent = function fontLoaderPrepareFontLoadEvent(rules, fonts, request) { - function int32(data, offset) { - return data.charCodeAt(offset) << 24 | data.charCodeAt(offset + 1) << 16 | data.charCodeAt(offset + 2) << 8 | data.charCodeAt(offset + 3) & 0xff; - } - function spliceString(s, offset, remove, insert) { - var chunk1 = s.substr(0, offset); - var chunk2 = s.substr(offset + remove); - return chunk1 + insert + chunk2; - } - var i, ii; - var canvas = document.createElement('canvas'); - canvas.width = 1; - canvas.height = 1; - var ctx = canvas.getContext('2d'); - var called = 0; - function isFontReady(name, callback) { - called++; - if (called > 30) { - warn('Load test font never loaded.'); - callback(); - return; +} +{ + FontLoader.isFontLoadingAPISupported = typeof document !== 'undefined' && !!document.fonts; +} +{ + var isSyncFontLoadingSupported = function isSyncFontLoadingSupported() { + if (typeof navigator === 'undefined') { + return true; } - ctx.font = '30px ' + name; - ctx.fillText('.', 0, 20); - var imageData = ctx.getImageData(0, 0, 1, 1); - if (imageData.data[3] > 0) { - callback(); - return; + var supported = false; + var m = /Mozilla\/5.0.*?rv:(\d+).*? Gecko/.exec(navigator.userAgent); + if (m && m[1] >= 14) { + supported = true; } - setTimeout(isFontReady.bind(null, name, callback)); - } - var loadTestFontId = 'lt' + Date.now() + this.loadTestFontId++; - var data = this.loadTestFont; - var COMMENT_OFFSET = 976; - data = spliceString(data, COMMENT_OFFSET, loadTestFontId.length, loadTestFontId); - var CFF_CHECKSUM_OFFSET = 16; - var XXXX_VALUE = 0x58585858; - var checksum = int32(data, CFF_CHECKSUM_OFFSET); - for (i = 0, ii = loadTestFontId.length - 3; i < ii; i += 4) { - checksum = checksum - XXXX_VALUE + int32(loadTestFontId, i) | 0; - } - if (i < loadTestFontId.length) { - checksum = checksum - XXXX_VALUE + int32(loadTestFontId + 'XXX', i) | 0; - } - data = spliceString(data, CFF_CHECKSUM_OFFSET, 4, string32(checksum)); - var url = 'url(data:font/opentype;base64,' + btoa(data) + ');'; - var rule = '@font-face { font-family:"' + loadTestFontId + '";src:' + url + '}'; - this.insertRule(rule); - var names = []; - for (i = 0, ii = fonts.length; i < ii; i++) { - names.push(fonts[i].loadedName); - } - names.push(loadTestFontId); - var div = document.createElement('div'); - div.setAttribute('style', 'visibility: hidden;' + 'width: 10px; height: 10px;' + 'position: absolute; top: 0px; left: 0px;'); - for (i = 0, ii = names.length; i < ii; ++i) { - var span = document.createElement('span'); - span.textContent = 'Hi'; - span.style.fontFamily = names[i]; - div.appendChild(span); - } - document.body.appendChild(div); - isFontReady(loadTestFontId, function () { - document.body.removeChild(div); - request.complete(); + return supported; + }; + Object.defineProperty(FontLoader, 'isSyncFontLoadingSupported', { + get: function get() { + return (0, _util.shadow)(FontLoader, 'isSyncFontLoadingSupported', isSyncFontLoadingSupported()); + }, + enumerable: true, + configurable: true }); -}; -FontLoader.isFontLoadingAPISupported = typeof document !== 'undefined' && !!document.fonts; -var isSyncFontLoadingSupported = function isSyncFontLoadingSupported() { - if (typeof navigator === 'undefined') { - return true; - } - var supported = false; - var m = /Mozilla\/5.0.*?rv:(\d+).*? Gecko/.exec(navigator.userAgent); - if (m && m[1] >= 14) { - supported = true; - } - return supported; -}; -Object.defineProperty(FontLoader, 'isSyncFontLoadingSupported', { - get: function get() { - return shadow(FontLoader, 'isSyncFontLoadingSupported', isSyncFontLoadingSupported()); - }, - enumerable: true, - configurable: true -}); +} var IsEvalSupportedCached = { get value() { - return shadow(this, 'value', sharedUtil.isEvalSupported()); + return (0, _util.shadow)(this, 'value', (0, _util.isEvalSupported)()); } }; var FontFaceObject = function FontFaceObjectClosure() { @@ -249,7 +256,7 @@ var FontFaceObject = function FontFaceObjectClosure() { this.disableFontFace = true; return null; } - var data = bytesToString(new Uint8Array(this.data)); + var data = (0, _util.bytesToString)(new Uint8Array(this.data)); var fontName = this.loadedName; var url = 'url(data:' + this.mimetype + ';base64,' + btoa(data) + ');'; var rule = '@font-face { font-family:"' + fontName + '";src:' + url + '}'; diff --git a/lib/display/global.js b/lib/display/global.js index 6e000e7ef..3d5e0dd02 100644 --- a/lib/display/global.js +++ b/lib/display/global.js @@ -14,66 +14,74 @@ */ 'use strict'; -var sharedUtil = require('../shared/util.js'); -var displayDOMUtils = require('./dom_utils.js'); -var displayAPI = require('./api.js'); -var displayAnnotationLayer = require('./annotation_layer.js'); -var displayTextLayer = require('./text_layer.js'); -var displayMetadata = require('./metadata.js'); -var displaySVG = require('./svg.js'); -var globalScope = sharedUtil.globalScope; -var deprecated = sharedUtil.deprecated; -var warn = sharedUtil.warn; -var LinkTarget = displayDOMUtils.LinkTarget; -var DEFAULT_LINK_REL = displayDOMUtils.DEFAULT_LINK_REL; +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.PDFJS = exports.isWorker = exports.globalScope = undefined; + +var _api = require('./api'); + +var _dom_utils = require('./dom_utils'); + +var _util = require('../shared/util'); + +var _annotation_layer = require('./annotation_layer'); + +var _metadata = require('./metadata'); + +var _text_layer = require('./text_layer'); + +var _svg = require('./svg'); + var isWorker = typeof window === 'undefined'; -if (!globalScope.PDFJS) { - globalScope.PDFJS = {}; +if (!_util.globalScope.PDFJS) { + _util.globalScope.PDFJS = {}; +} +var PDFJS = _util.globalScope.PDFJS; +{ + PDFJS.version = '1.8.233'; + PDFJS.build = '19321937'; } -var PDFJS = globalScope.PDFJS; -PDFJS.version = '1.8.213'; -PDFJS.build = 'c6e8ca86'; PDFJS.pdfBug = false; if (PDFJS.verbosity !== undefined) { - sharedUtil.setVerbosityLevel(PDFJS.verbosity); + (0, _util.setVerbosityLevel)(PDFJS.verbosity); } delete PDFJS.verbosity; Object.defineProperty(PDFJS, 'verbosity', { get: function get() { - return sharedUtil.getVerbosityLevel(); + return (0, _util.getVerbosityLevel)(); }, set: function set(level) { - sharedUtil.setVerbosityLevel(level); + (0, _util.setVerbosityLevel)(level); }, enumerable: true, configurable: true }); -PDFJS.VERBOSITY_LEVELS = sharedUtil.VERBOSITY_LEVELS; -PDFJS.OPS = sharedUtil.OPS; -PDFJS.UNSUPPORTED_FEATURES = sharedUtil.UNSUPPORTED_FEATURES; -PDFJS.isValidUrl = displayDOMUtils.isValidUrl; -PDFJS.shadow = sharedUtil.shadow; -PDFJS.createBlob = sharedUtil.createBlob; +PDFJS.VERBOSITY_LEVELS = _util.VERBOSITY_LEVELS; +PDFJS.OPS = _util.OPS; +PDFJS.UNSUPPORTED_FEATURES = _util.UNSUPPORTED_FEATURES; +PDFJS.isValidUrl = _dom_utils.isValidUrl; +PDFJS.shadow = _util.shadow; +PDFJS.createBlob = _util.createBlob; PDFJS.createObjectURL = function PDFJS_createObjectURL(data, contentType) { - return sharedUtil.createObjectURL(data, contentType, PDFJS.disableCreateObjectURL); + return (0, _util.createObjectURL)(data, contentType, PDFJS.disableCreateObjectURL); }; Object.defineProperty(PDFJS, 'isLittleEndian', { configurable: true, get: function PDFJS_isLittleEndian() { - var value = sharedUtil.isLittleEndian(); - return sharedUtil.shadow(PDFJS, 'isLittleEndian', value); + return (0, _util.shadow)(PDFJS, 'isLittleEndian', (0, _util.isLittleEndian)()); } }); -PDFJS.removeNullCharacters = sharedUtil.removeNullCharacters; -PDFJS.PasswordResponses = sharedUtil.PasswordResponses; -PDFJS.PasswordException = sharedUtil.PasswordException; -PDFJS.UnknownErrorException = sharedUtil.UnknownErrorException; -PDFJS.InvalidPDFException = sharedUtil.InvalidPDFException; -PDFJS.MissingPDFException = sharedUtil.MissingPDFException; -PDFJS.UnexpectedResponseException = sharedUtil.UnexpectedResponseException; -PDFJS.Util = sharedUtil.Util; -PDFJS.PageViewport = sharedUtil.PageViewport; -PDFJS.createPromiseCapability = sharedUtil.createPromiseCapability; +PDFJS.removeNullCharacters = _util.removeNullCharacters; +PDFJS.PasswordResponses = _util.PasswordResponses; +PDFJS.PasswordException = _util.PasswordException; +PDFJS.UnknownErrorException = _util.UnknownErrorException; +PDFJS.InvalidPDFException = _util.InvalidPDFException; +PDFJS.MissingPDFException = _util.MissingPDFException; +PDFJS.UnexpectedResponseException = _util.UnexpectedResponseException; +PDFJS.Util = _util.Util; +PDFJS.PageViewport = _util.PageViewport; +PDFJS.createPromiseCapability = _util.createPromiseCapability; PDFJS.maxImageSize = PDFJS.maxImageSize === undefined ? -1 : PDFJS.maxImageSize; PDFJS.cMapUrl = PDFJS.cMapUrl === undefined ? null : PDFJS.cMapUrl; PDFJS.cMapPacked = PDFJS.cMapPacked === undefined ? false : PDFJS.cMapPacked; @@ -89,46 +97,48 @@ PDFJS.pdfBug = PDFJS.pdfBug === undefined ? false : PDFJS.pdfBug; PDFJS.postMessageTransfers = PDFJS.postMessageTransfers === undefined ? true : PDFJS.postMessageTransfers; PDFJS.disableCreateObjectURL = PDFJS.disableCreateObjectURL === undefined ? false : PDFJS.disableCreateObjectURL; PDFJS.disableWebGL = PDFJS.disableWebGL === undefined ? true : PDFJS.disableWebGL; -PDFJS.externalLinkTarget = PDFJS.externalLinkTarget === undefined ? LinkTarget.NONE : PDFJS.externalLinkTarget; -PDFJS.externalLinkRel = PDFJS.externalLinkRel === undefined ? DEFAULT_LINK_REL : PDFJS.externalLinkRel; +PDFJS.externalLinkTarget = PDFJS.externalLinkTarget === undefined ? _dom_utils.LinkTarget.NONE : PDFJS.externalLinkTarget; +PDFJS.externalLinkRel = PDFJS.externalLinkRel === undefined ? _dom_utils.DEFAULT_LINK_REL : PDFJS.externalLinkRel; PDFJS.isEvalSupported = PDFJS.isEvalSupported === undefined ? true : PDFJS.isEvalSupported; PDFJS.pdfjsNext = PDFJS.pdfjsNext === undefined ? false : PDFJS.pdfjsNext; -var savedOpenExternalLinksInNewWindow = PDFJS.openExternalLinksInNewWindow; -delete PDFJS.openExternalLinksInNewWindow; -Object.defineProperty(PDFJS, 'openExternalLinksInNewWindow', { - get: function get() { - return PDFJS.externalLinkTarget === LinkTarget.BLANK; - }, - set: function set(value) { - if (value) { - deprecated('PDFJS.openExternalLinksInNewWindow, please use ' + '"PDFJS.externalLinkTarget = PDFJS.LinkTarget.BLANK" instead.'); - } - if (PDFJS.externalLinkTarget !== LinkTarget.NONE) { - warn('PDFJS.externalLinkTarget is already initialized'); - return; - } - PDFJS.externalLinkTarget = value ? LinkTarget.BLANK : LinkTarget.NONE; - }, - enumerable: true, - configurable: true -}); -if (savedOpenExternalLinksInNewWindow) { - PDFJS.openExternalLinksInNewWindow = savedOpenExternalLinksInNewWindow; +{ + var savedOpenExternalLinksInNewWindow = PDFJS.openExternalLinksInNewWindow; + delete PDFJS.openExternalLinksInNewWindow; + Object.defineProperty(PDFJS, 'openExternalLinksInNewWindow', { + get: function get() { + return PDFJS.externalLinkTarget === _dom_utils.LinkTarget.BLANK; + }, + set: function set(value) { + if (value) { + (0, _util.deprecated)('PDFJS.openExternalLinksInNewWindow, please use ' + '"PDFJS.externalLinkTarget = PDFJS.LinkTarget.BLANK" instead.'); + } + if (PDFJS.externalLinkTarget !== _dom_utils.LinkTarget.NONE) { + (0, _util.warn)('PDFJS.externalLinkTarget is already initialized'); + return; + } + PDFJS.externalLinkTarget = value ? _dom_utils.LinkTarget.BLANK : _dom_utils.LinkTarget.NONE; + }, + enumerable: true, + configurable: true + }); + if (savedOpenExternalLinksInNewWindow) { + PDFJS.openExternalLinksInNewWindow = savedOpenExternalLinksInNewWindow; + } } -PDFJS.getDocument = displayAPI.getDocument; -PDFJS.PDFDataRangeTransport = displayAPI.PDFDataRangeTransport; -PDFJS.PDFWorker = displayAPI.PDFWorker; +PDFJS.getDocument = _api.getDocument; +PDFJS.PDFDataRangeTransport = _api.PDFDataRangeTransport; +PDFJS.PDFWorker = _api.PDFWorker; PDFJS.hasCanvasTypedArrays = true; -PDFJS.CustomStyle = displayDOMUtils.CustomStyle; -PDFJS.LinkTarget = LinkTarget; -PDFJS.addLinkAttributes = displayDOMUtils.addLinkAttributes; -PDFJS.getFilenameFromUrl = displayDOMUtils.getFilenameFromUrl; -PDFJS.isExternalLinkTargetSet = displayDOMUtils.isExternalLinkTargetSet; -PDFJS.AnnotationLayer = displayAnnotationLayer.AnnotationLayer; -PDFJS.renderTextLayer = displayTextLayer.renderTextLayer; -PDFJS.Metadata = displayMetadata.Metadata; -PDFJS.SVGGraphics = displaySVG.SVGGraphics; -PDFJS.UnsupportedManager = displayAPI._UnsupportedManager; -exports.globalScope = globalScope; +PDFJS.CustomStyle = _dom_utils.CustomStyle; +PDFJS.LinkTarget = _dom_utils.LinkTarget; +PDFJS.addLinkAttributes = _dom_utils.addLinkAttributes; +PDFJS.getFilenameFromUrl = _dom_utils.getFilenameFromUrl; +PDFJS.isExternalLinkTargetSet = _dom_utils.isExternalLinkTargetSet; +PDFJS.AnnotationLayer = _annotation_layer.AnnotationLayer; +PDFJS.renderTextLayer = _text_layer.renderTextLayer; +PDFJS.Metadata = _metadata.Metadata; +PDFJS.SVGGraphics = _svg.SVGGraphics; +PDFJS.UnsupportedManager = _api._UnsupportedManager; +exports.globalScope = _util.globalScope; exports.isWorker = isWorker; -exports.PDFJS = globalScope.PDFJS; \ No newline at end of file +exports.PDFJS = PDFJS; \ No newline at end of file diff --git a/lib/display/metadata.js b/lib/display/metadata.js index e484c0b4c..2d4efd519 100644 --- a/lib/display/metadata.js +++ b/lib/display/metadata.js @@ -14,8 +14,13 @@ */ 'use strict'; -var sharedUtil = require('../shared/util.js'); -var error = sharedUtil.error; +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.Metadata = undefined; + +var _util = require('../shared/util'); + function fixMetadata(meta) { return meta.replace(/>\\376\\377([^<]+)/g, function (all, codes) { var bytes = codes.replace(/\\([0-3])([0-7])([0-7])/g, function (code, d1, d2, d3) { @@ -35,7 +40,7 @@ function Metadata(meta) { var parser = new DOMParser(); meta = parser.parseFromString(meta, 'application/xml'); } else if (!(meta instanceof Document)) { - error('Metadata: Invalid metadata object'); + (0, _util.error)('Metadata: Invalid metadata object'); } this.metaDocument = meta; this.metadata = Object.create(null); diff --git a/lib/display/pattern_helper.js b/lib/display/pattern_helper.js index 6831adf60..6b4f22b2e 100644 --- a/lib/display/pattern_helper.js +++ b/lib/display/pattern_helper.js @@ -14,13 +14,15 @@ */ 'use strict'; -var sharedUtil = require('../shared/util.js'); -var displayWebGL = require('./webgl.js'); -var Util = sharedUtil.Util; -var info = sharedUtil.info; -var isArray = sharedUtil.isArray; -var error = sharedUtil.error; -var WebGLUtils = displayWebGL.WebGLUtils; +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.TilingPattern = exports.getShadingPatternFromIR = undefined; + +var _util = require('../shared/util'); + +var _webgl = require('./webgl'); + var ShadingIRs = {}; ShadingIRs.RadialAxial = { fromIR: function RadialAxial_fromIR(raw) { @@ -157,7 +159,7 @@ var createMeshCanvas = function createMeshCanvasClosure() { } break; default: - error('illigal figure'); + (0, _util.error)('illigal figure'); break; } } @@ -184,8 +186,8 @@ var createMeshCanvas = function createMeshCanvasClosure() { var paddedWidth = width + BORDER_SIZE * 2; var paddedHeight = height + BORDER_SIZE * 2; var canvas, tmpCanvas, i, ii; - if (WebGLUtils.isEnabled) { - canvas = WebGLUtils.drawFigures(width, height, backgroundColor, figures, context); + if (_webgl.WebGLUtils.isEnabled) { + canvas = _webgl.WebGLUtils.drawFigures(width, height, backgroundColor, figures, context); tmpCanvas = cachedCanvases.getCanvas('mesh', paddedWidth, paddedHeight, false); tmpCanvas.context.drawImage(canvas, BORDER_SIZE, BORDER_SIZE); canvas = tmpCanvas.canvas; @@ -231,11 +233,11 @@ ShadingIRs.Mesh = { getPattern: function Mesh_getPattern(ctx, owner, shadingFill) { var scale; if (shadingFill) { - scale = Util.singularValueDecompose2dScale(ctx.mozCurrentTransform); + scale = _util.Util.singularValueDecompose2dScale(ctx.mozCurrentTransform); } else { - scale = Util.singularValueDecompose2dScale(owner.baseTransform); + scale = _util.Util.singularValueDecompose2dScale(owner.baseTransform); if (matrix) { - var matrixScale = Util.singularValueDecompose2dScale(matrix); + var matrixScale = _util.Util.singularValueDecompose2dScale(matrix); scale = [scale[0] * matrixScale[0], scale[1] * matrixScale[1]]; } } @@ -266,7 +268,7 @@ ShadingIRs.Dummy = { function getShadingPatternFromIR(raw) { var shadingIR = ShadingIRs[raw[0]]; if (!shadingIR) { - error('Unknown IR type: ' + raw[0]); + (0, _util.error)('Unknown IR type: ' + raw[0]); } return shadingIR.fromIR(raw); } @@ -279,7 +281,7 @@ var TilingPattern = function TilingPatternClosure() { function TilingPattern(IR, color, ctx, canvasGraphicsFactory, baseTransform) { this.operatorList = IR[2]; this.matrix = IR[3] || [1, 0, 0, 1, 0, 0]; - this.bbox = Util.normalizeRect(IR[4]); + this.bbox = _util.Util.normalizeRect(IR[4]); this.xstep = IR[5]; this.ystep = IR[6]; this.paintType = IR[7]; @@ -300,7 +302,7 @@ var TilingPattern = function TilingPatternClosure() { var tilingType = this.tilingType; var color = this.color; var canvasGraphicsFactory = this.canvasGraphicsFactory; - info('TilingType: ' + tilingType); + (0, _util.info)('TilingType: ' + tilingType); var x0 = bbox[0], y0 = bbox[1], x1 = bbox[2], @@ -309,8 +311,8 @@ var TilingPattern = function TilingPatternClosure() { var botRight = [x0 + xstep, y0 + ystep]; var width = botRight[0] - topLeft[0]; var height = botRight[1] - topLeft[1]; - var matrixScale = Util.singularValueDecompose2dScale(this.matrix); - var curMatrixScale = Util.singularValueDecompose2dScale(this.baseTransform); + var matrixScale = _util.Util.singularValueDecompose2dScale(this.matrix); + var curMatrixScale = _util.Util.singularValueDecompose2dScale(this.baseTransform); var combinedScale = [matrixScale[0] * curMatrixScale[0], matrixScale[1] * curMatrixScale[1]]; width = Math.min(Math.ceil(Math.abs(width * combinedScale[0])), MAX_PATTERN_SIZE); height = Math.min(Math.ceil(Math.abs(height * combinedScale[1])), MAX_PATTERN_SIZE); @@ -340,7 +342,7 @@ var TilingPattern = function TilingPatternClosure() { this.ctx.scale(1 / scale[0], 1 / scale[1]); }, clipBbox: function clipBbox(graphics, bbox, x0, y0, x1, y1) { - if (isArray(bbox) && bbox.length === 4) { + if ((0, _util.isArray)(bbox) && bbox.length === 4) { var bboxWidth = x1 - x0; var bboxHeight = y1 - y0; graphics.ctx.rect(x0, y0, bboxWidth, bboxHeight); @@ -356,12 +358,12 @@ var TilingPattern = function TilingPatternClosure() { context.strokeStyle = ctx.strokeStyle; break; case PaintType.UNCOLORED: - var cssColor = Util.makeCssRgb(color[0], color[1], color[2]); + var cssColor = _util.Util.makeCssRgb(color[0], color[1], color[2]); context.fillStyle = cssColor; context.strokeStyle = cssColor; break; default: - error('Unsupported paint type: ' + paintType); + (0, _util.error)('Unsupported paint type: ' + paintType); } }, getPattern: function TilingPattern_getPattern(ctx, owner) { diff --git a/lib/display/svg.js b/lib/display/svg.js index f74e23ce2..eec8c62b4 100644 --- a/lib/display/svg.js +++ b/lib/display/svg.js @@ -14,958 +14,960 @@ */ 'use strict'; -var sharedUtil = require('../shared/util.js'); -var FONT_IDENTITY_MATRIX = sharedUtil.FONT_IDENTITY_MATRIX; -var IDENTITY_MATRIX = sharedUtil.IDENTITY_MATRIX; -var ImageKind = sharedUtil.ImageKind; -var OPS = sharedUtil.OPS; -var Util = sharedUtil.Util; -var isNum = sharedUtil.isNum; -var isArray = sharedUtil.isArray; -var warn = sharedUtil.warn; -var createObjectURL = sharedUtil.createObjectURL; -var SVG_DEFAULTS = { - fontStyle: 'normal', - fontWeight: 'normal', - fillColor: '#000000' +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.SVGGraphics = undefined; + +var _util = require('../shared/util'); + +var SVGGraphics = function SVGGraphics() { + throw new Error('Not implemented: SVGGraphics'); }; -var convertImgDataToPng = function convertImgDataToPngClosure() { - var PNG_HEADER = new Uint8Array([0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a]); - var CHUNK_WRAPPER_SIZE = 12; - var crcTable = new Int32Array(256); - for (var i = 0; i < 256; i++) { - var c = i; - for (var h = 0; h < 8; h++) { - if (c & 1) { - c = 0xedB88320 ^ c >> 1 & 0x7fffffff; - } else { - c = c >> 1 & 0x7fffffff; - } - } - crcTable[i] = c; - } - function crc32(data, start, end) { - var crc = -1; - for (var i = start; i < end; i++) { - var a = (crc ^ data[i]) & 0xff; - var b = crcTable[a]; - crc = crc >>> 8 ^ b; - } - return crc ^ -1; - } - function writePngChunk(type, body, data, offset) { - var p = offset; - var len = body.length; - data[p] = len >> 24 & 0xff; - data[p + 1] = len >> 16 & 0xff; - data[p + 2] = len >> 8 & 0xff; - data[p + 3] = len & 0xff; - p += 4; - data[p] = type.charCodeAt(0) & 0xff; - data[p + 1] = type.charCodeAt(1) & 0xff; - data[p + 2] = type.charCodeAt(2) & 0xff; - data[p + 3] = type.charCodeAt(3) & 0xff; - p += 4; - data.set(body, p); - p += body.length; - var crc = crc32(data, offset + 4, p); - data[p] = crc >> 24 & 0xff; - data[p + 1] = crc >> 16 & 0xff; - data[p + 2] = crc >> 8 & 0xff; - data[p + 3] = crc & 0xff; - } - function adler32(data, start, end) { - var a = 1; - var b = 0; - for (var i = start; i < end; ++i) { - a = (a + (data[i] & 0xff)) % 65521; - b = (b + a) % 65521; - } - return b << 16 | a; - } - function encode(imgData, kind, forceDataSchema) { - var width = imgData.width; - var height = imgData.height; - var bitDepth, colorType, lineSize; - var bytes = imgData.data; - switch (kind) { - case ImageKind.GRAYSCALE_1BPP: - colorType = 0; - bitDepth = 1; - lineSize = width + 7 >> 3; - break; - case ImageKind.RGB_24BPP: - colorType = 2; - bitDepth = 8; - lineSize = width * 3; - break; - case ImageKind.RGBA_32BPP: - colorType = 6; - bitDepth = 8; - lineSize = width * 4; - break; - default: - throw new Error('invalid format'); - } - var literals = new Uint8Array((1 + lineSize) * height); - var offsetLiterals = 0, - offsetBytes = 0; - var y, i; - for (y = 0; y < height; ++y) { - literals[offsetLiterals++] = 0; - literals.set(bytes.subarray(offsetBytes, offsetBytes + lineSize), offsetLiterals); - offsetBytes += lineSize; - offsetLiterals += lineSize; - } - if (kind === ImageKind.GRAYSCALE_1BPP) { - offsetLiterals = 0; - for (y = 0; y < height; y++) { - offsetLiterals++; - for (i = 0; i < lineSize; i++) { - literals[offsetLiterals++] ^= 0xFF; +{ + var SVG_DEFAULTS = { + fontStyle: 'normal', + fontWeight: 'normal', + fillColor: '#000000' + }; + var convertImgDataToPng = function convertImgDataToPngClosure() { + var PNG_HEADER = new Uint8Array([0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a]); + var CHUNK_WRAPPER_SIZE = 12; + var crcTable = new Int32Array(256); + for (var i = 0; i < 256; i++) { + var c = i; + for (var h = 0; h < 8; h++) { + if (c & 1) { + c = 0xedB88320 ^ c >> 1 & 0x7fffffff; + } else { + c = c >> 1 & 0x7fffffff; } } + crcTable[i] = c; } - var ihdr = new Uint8Array([width >> 24 & 0xff, width >> 16 & 0xff, width >> 8 & 0xff, width & 0xff, height >> 24 & 0xff, height >> 16 & 0xff, height >> 8 & 0xff, height & 0xff, bitDepth, colorType, 0x00, 0x00, 0x00]); - var len = literals.length; - var maxBlockLength = 0xFFFF; - var deflateBlocks = Math.ceil(len / maxBlockLength); - var idat = new Uint8Array(2 + len + deflateBlocks * 5 + 4); - var pi = 0; - idat[pi++] = 0x78; - idat[pi++] = 0x9c; - var pos = 0; - while (len > maxBlockLength) { - idat[pi++] = 0x00; - idat[pi++] = 0xff; - idat[pi++] = 0xff; - idat[pi++] = 0x00; - idat[pi++] = 0x00; - idat.set(literals.subarray(pos, pos + maxBlockLength), pi); - pi += maxBlockLength; - pos += maxBlockLength; - len -= maxBlockLength; - } - idat[pi++] = 0x01; - idat[pi++] = len & 0xff; - idat[pi++] = len >> 8 & 0xff; - idat[pi++] = ~len & 0xffff & 0xff; - idat[pi++] = (~len & 0xffff) >> 8 & 0xff; - idat.set(literals.subarray(pos), pi); - pi += literals.length - pos; - var adler = adler32(literals, 0, literals.length); - idat[pi++] = adler >> 24 & 0xff; - idat[pi++] = adler >> 16 & 0xff; - idat[pi++] = adler >> 8 & 0xff; - idat[pi++] = adler & 0xff; - var pngLength = PNG_HEADER.length + CHUNK_WRAPPER_SIZE * 3 + ihdr.length + idat.length; - var data = new Uint8Array(pngLength); - var offset = 0; - data.set(PNG_HEADER, offset); - offset += PNG_HEADER.length; - writePngChunk('IHDR', ihdr, data, offset); - offset += CHUNK_WRAPPER_SIZE + ihdr.length; - writePngChunk('IDATA', idat, data, offset); - offset += CHUNK_WRAPPER_SIZE + idat.length; - writePngChunk('IEND', new Uint8Array(0), data, offset); - return createObjectURL(data, 'image/png', forceDataSchema); - } - return function convertImgDataToPng(imgData, forceDataSchema) { - var kind = imgData.kind === undefined ? ImageKind.GRAYSCALE_1BPP : imgData.kind; - return encode(imgData, kind, forceDataSchema); - }; -}(); -var SVGExtraState = function SVGExtraStateClosure() { - function SVGExtraState() { - this.fontSizeScale = 1; - this.fontWeight = SVG_DEFAULTS.fontWeight; - this.fontSize = 0; - this.textMatrix = IDENTITY_MATRIX; - this.fontMatrix = FONT_IDENTITY_MATRIX; - this.leading = 0; - this.x = 0; - this.y = 0; - this.lineX = 0; - this.lineY = 0; - this.charSpacing = 0; - this.wordSpacing = 0; - this.textHScale = 1; - this.textRise = 0; - this.fillColor = SVG_DEFAULTS.fillColor; - this.strokeColor = '#000000'; - this.fillAlpha = 1; - this.strokeAlpha = 1; - this.lineWidth = 1; - this.lineJoin = ''; - this.lineCap = ''; - this.miterLimit = 0; - this.dashArray = []; - this.dashPhase = 0; - this.dependencies = []; - this.activeClipUrl = null; - this.clipGroup = null; - this.maskId = ''; - } - SVGExtraState.prototype = { - clone: function SVGExtraState_clone() { - return Object.create(this); - }, - setCurrentPoint: function SVGExtraState_setCurrentPoint(x, y) { - this.x = x; - this.y = y; - } - }; - return SVGExtraState; -}(); -var SVGGraphics = function SVGGraphicsClosure() { - function opListToTree(opList) { - var opTree = []; - var tmp = []; - var opListLen = opList.length; - for (var x = 0; x < opListLen; x++) { - if (opList[x].fn === 'save') { - opTree.push({ - 'fnId': 92, - 'fn': 'group', - 'items': [] - }); - tmp.push(opTree); - opTree = opTree[opTree.length - 1].items; - continue; + function crc32(data, start, end) { + var crc = -1; + for (var i = start; i < end; i++) { + var a = (crc ^ data[i]) & 0xff; + var b = crcTable[a]; + crc = crc >>> 8 ^ b; } - if (opList[x].fn === 'restore') { - opTree = tmp.pop(); - } else { - opTree.push(opList[x]); - } - } - return opTree; - } - function pf(value) { - if (value === (value | 0)) { - return value.toString(); + return crc ^ -1; } - var s = value.toFixed(10); - var i = s.length - 1; - if (s[i] !== '0') { - return s; + function writePngChunk(type, body, data, offset) { + var p = offset; + var len = body.length; + data[p] = len >> 24 & 0xff; + data[p + 1] = len >> 16 & 0xff; + data[p + 2] = len >> 8 & 0xff; + data[p + 3] = len & 0xff; + p += 4; + data[p] = type.charCodeAt(0) & 0xff; + data[p + 1] = type.charCodeAt(1) & 0xff; + data[p + 2] = type.charCodeAt(2) & 0xff; + data[p + 3] = type.charCodeAt(3) & 0xff; + p += 4; + data.set(body, p); + p += body.length; + var crc = crc32(data, offset + 4, p); + data[p] = crc >> 24 & 0xff; + data[p + 1] = crc >> 16 & 0xff; + data[p + 2] = crc >> 8 & 0xff; + data[p + 3] = crc & 0xff; } - do { - i--; - } while (s[i] === '0'); - return s.substr(0, s[i] === '.' ? i : i + 1); - } - function pm(m) { - if (m[4] === 0 && m[5] === 0) { - if (m[1] === 0 && m[2] === 0) { - if (m[0] === 1 && m[3] === 1) { - return ''; - } - return 'scale(' + pf(m[0]) + ' ' + pf(m[3]) + ')'; + function adler32(data, start, end) { + var a = 1; + var b = 0; + for (var i = start; i < end; ++i) { + a = (a + (data[i] & 0xff)) % 65521; + b = (b + a) % 65521; } - if (m[0] === m[3] && m[1] === -m[2]) { - var a = Math.acos(m[0]) * 180 / Math.PI; - return 'rotate(' + pf(a) + ')'; + return b << 16 | a; + } + function encode(imgData, kind, forceDataSchema) { + var width = imgData.width; + var height = imgData.height; + var bitDepth, colorType, lineSize; + var bytes = imgData.data; + switch (kind) { + case _util.ImageKind.GRAYSCALE_1BPP: + colorType = 0; + bitDepth = 1; + lineSize = width + 7 >> 3; + break; + case _util.ImageKind.RGB_24BPP: + colorType = 2; + bitDepth = 8; + lineSize = width * 3; + break; + case _util.ImageKind.RGBA_32BPP: + colorType = 6; + bitDepth = 8; + lineSize = width * 4; + break; + default: + throw new Error('invalid format'); } - } else { - if (m[0] === 1 && m[1] === 0 && m[2] === 0 && m[3] === 1) { - return 'translate(' + pf(m[4]) + ' ' + pf(m[5]) + ')'; + var literals = new Uint8Array((1 + lineSize) * height); + var offsetLiterals = 0, + offsetBytes = 0; + var y, i; + for (y = 0; y < height; ++y) { + literals[offsetLiterals++] = 0; + literals.set(bytes.subarray(offsetBytes, offsetBytes + lineSize), offsetLiterals); + offsetBytes += lineSize; + offsetLiterals += lineSize; } - } - return 'matrix(' + pf(m[0]) + ' ' + pf(m[1]) + ' ' + pf(m[2]) + ' ' + pf(m[3]) + ' ' + pf(m[4]) + ' ' + pf(m[5]) + ')'; - } - function SVGGraphics(commonObjs, objs, forceDataSchema) { - this.current = new SVGExtraState(); - this.transformMatrix = IDENTITY_MATRIX; - this.transformStack = []; - this.extraStack = []; - this.commonObjs = commonObjs; - this.objs = objs; - this.pendingEOFill = false; - this.embedFonts = false; - this.embeddedFonts = Object.create(null); - this.cssStyle = null; - this.forceDataSchema = !!forceDataSchema; - } - var NS = 'http://www.w3.org/2000/svg'; - var XML_NS = 'http://www.w3.org/XML/1998/namespace'; - var XLINK_NS = 'http://www.w3.org/1999/xlink'; - var LINE_CAP_STYLES = ['butt', 'round', 'square']; - var LINE_JOIN_STYLES = ['miter', 'round', 'bevel']; - var clipCount = 0; - var maskCount = 0; - SVGGraphics.prototype = { - save: function SVGGraphics_save() { - this.transformStack.push(this.transformMatrix); - var old = this.current; - this.extraStack.push(old); - this.current = old.clone(); - }, - restore: function SVGGraphics_restore() { - this.transformMatrix = this.transformStack.pop(); - this.current = this.extraStack.pop(); - this.tgrp = null; - }, - group: function SVGGraphics_group(items) { - this.save(); - this.executeOpTree(items); - this.restore(); - }, - loadDependencies: function SVGGraphics_loadDependencies(operatorList) { - var fnArray = operatorList.fnArray; - var fnArrayLen = fnArray.length; - var argsArray = operatorList.argsArray; - var self = this; - for (var i = 0; i < fnArrayLen; i++) { - if (OPS.dependency === fnArray[i]) { - var deps = argsArray[i]; - for (var n = 0, nn = deps.length; n < nn; n++) { - var obj = deps[n]; - var common = obj.substring(0, 2) === 'g_'; - var promise; - if (common) { - promise = new Promise(function (resolve) { - self.commonObjs.get(obj, resolve); - }); - } else { - promise = new Promise(function (resolve) { - self.objs.get(obj, resolve); - }); - } - this.current.dependencies.push(promise); + if (kind === _util.ImageKind.GRAYSCALE_1BPP) { + offsetLiterals = 0; + for (y = 0; y < height; y++) { + offsetLiterals++; + for (i = 0; i < lineSize; i++) { + literals[offsetLiterals++] ^= 0xFF; } } } - return Promise.all(this.current.dependencies); - }, - transform: function SVGGraphics_transform(a, b, c, d, e, f) { - var transformMatrix = [a, b, c, d, e, f]; - this.transformMatrix = Util.transform(this.transformMatrix, transformMatrix); - this.tgrp = null; - }, - getSVG: function SVGGraphics_getSVG(operatorList, viewport) { - this.viewport = viewport; - var svgElement = this._initialize(viewport); - return this.loadDependencies(operatorList).then(function () { - this.transformMatrix = IDENTITY_MATRIX; - var opTree = this.convertOpList(operatorList); - this.executeOpTree(opTree); - return svgElement; - }.bind(this)); - }, - convertOpList: function SVGGraphics_convertOpList(operatorList) { - var argsArray = operatorList.argsArray; - var fnArray = operatorList.fnArray; - var fnArrayLen = fnArray.length; - var REVOPS = []; - var opList = []; - for (var op in OPS) { - REVOPS[OPS[op]] = op; - } - for (var x = 0; x < fnArrayLen; x++) { - var fnId = fnArray[x]; - opList.push({ - 'fnId': fnId, - 'fn': REVOPS[fnId], - 'args': argsArray[x] - }); - } - return opListToTree(opList); - }, - executeOpTree: function SVGGraphics_executeOpTree(opTree) { - var opTreeLen = opTree.length; - for (var x = 0; x < opTreeLen; x++) { - var fn = opTree[x].fn; - var fnId = opTree[x].fnId; - var args = opTree[x].args; - switch (fnId | 0) { - case OPS.beginText: - this.beginText(); - break; - case OPS.setLeading: - this.setLeading(args); - break; - case OPS.setLeadingMoveText: - this.setLeadingMoveText(args[0], args[1]); - break; - case OPS.setFont: - this.setFont(args); - break; - case OPS.showText: - this.showText(args[0]); - break; - case OPS.showSpacedText: - this.showText(args[0]); - break; - case OPS.endText: - this.endText(); - break; - case OPS.moveText: - this.moveText(args[0], args[1]); - break; - case OPS.setCharSpacing: - this.setCharSpacing(args[0]); - break; - case OPS.setWordSpacing: - this.setWordSpacing(args[0]); - break; - case OPS.setHScale: - this.setHScale(args[0]); - break; - case OPS.setTextMatrix: - this.setTextMatrix(args[0], args[1], args[2], args[3], args[4], args[5]); - break; - case OPS.setLineWidth: - this.setLineWidth(args[0]); - break; - case OPS.setLineJoin: - this.setLineJoin(args[0]); - break; - case OPS.setLineCap: - this.setLineCap(args[0]); - break; - case OPS.setMiterLimit: - this.setMiterLimit(args[0]); - break; - case OPS.setFillRGBColor: - this.setFillRGBColor(args[0], args[1], args[2]); - break; - case OPS.setStrokeRGBColor: - this.setStrokeRGBColor(args[0], args[1], args[2]); - break; - case OPS.setDash: - this.setDash(args[0], args[1]); - break; - case OPS.setGState: - this.setGState(args[0]); - break; - case OPS.fill: - this.fill(); - break; - case OPS.eoFill: - this.eoFill(); - break; - case OPS.stroke: - this.stroke(); - break; - case OPS.fillStroke: - this.fillStroke(); - break; - case OPS.eoFillStroke: - this.eoFillStroke(); - break; - case OPS.clip: - this.clip('nonzero'); - break; - case OPS.eoClip: - this.clip('evenodd'); - break; - case OPS.paintSolidColorImageMask: - this.paintSolidColorImageMask(); - break; - case OPS.paintJpegXObject: - this.paintJpegXObject(args[0], args[1], args[2]); - break; - case OPS.paintImageXObject: - this.paintImageXObject(args[0]); - break; - case OPS.paintInlineImageXObject: - this.paintInlineImageXObject(args[0]); - break; - case OPS.paintImageMaskXObject: - this.paintImageMaskXObject(args[0]); - break; - case OPS.paintFormXObjectBegin: - this.paintFormXObjectBegin(args[0], args[1]); - break; - case OPS.paintFormXObjectEnd: - this.paintFormXObjectEnd(); - break; - case OPS.closePath: - this.closePath(); - break; - case OPS.closeStroke: - this.closeStroke(); - break; - case OPS.closeFillStroke: - this.closeFillStroke(); - break; - case OPS.nextLine: - this.nextLine(); - break; - case OPS.transform: - this.transform(args[0], args[1], args[2], args[3], args[4], args[5]); - break; - case OPS.constructPath: - this.constructPath(args[0], args[1]); - break; - case OPS.endPath: - this.endPath(); - break; - case 92: - this.group(opTree[x].items); - break; - default: - warn('Unimplemented operator ' + fn); - break; - } + var ihdr = new Uint8Array([width >> 24 & 0xff, width >> 16 & 0xff, width >> 8 & 0xff, width & 0xff, height >> 24 & 0xff, height >> 16 & 0xff, height >> 8 & 0xff, height & 0xff, bitDepth, colorType, 0x00, 0x00, 0x00]); + var len = literals.length; + var maxBlockLength = 0xFFFF; + var deflateBlocks = Math.ceil(len / maxBlockLength); + var idat = new Uint8Array(2 + len + deflateBlocks * 5 + 4); + var pi = 0; + idat[pi++] = 0x78; + idat[pi++] = 0x9c; + var pos = 0; + while (len > maxBlockLength) { + idat[pi++] = 0x00; + idat[pi++] = 0xff; + idat[pi++] = 0xff; + idat[pi++] = 0x00; + idat[pi++] = 0x00; + idat.set(literals.subarray(pos, pos + maxBlockLength), pi); + pi += maxBlockLength; + pos += maxBlockLength; + len -= maxBlockLength; } - }, - setWordSpacing: function SVGGraphics_setWordSpacing(wordSpacing) { - this.current.wordSpacing = wordSpacing; - }, - setCharSpacing: function SVGGraphics_setCharSpacing(charSpacing) { - this.current.charSpacing = charSpacing; - }, - nextLine: function SVGGraphics_nextLine() { - this.moveText(0, this.current.leading); - }, - setTextMatrix: function SVGGraphics_setTextMatrix(a, b, c, d, e, f) { - var current = this.current; - this.current.textMatrix = this.current.lineMatrix = [a, b, c, d, e, f]; - this.current.x = this.current.lineX = 0; - this.current.y = this.current.lineY = 0; - current.xcoords = []; - current.tspan = document.createElementNS(NS, 'svg:tspan'); - current.tspan.setAttributeNS(null, 'font-family', current.fontFamily); - current.tspan.setAttributeNS(null, 'font-size', pf(current.fontSize) + 'px'); - current.tspan.setAttributeNS(null, 'y', pf(-current.y)); - current.txtElement = document.createElementNS(NS, 'svg:text'); - current.txtElement.appendChild(current.tspan); - }, - beginText: function SVGGraphics_beginText() { - this.current.x = this.current.lineX = 0; - this.current.y = this.current.lineY = 0; - this.current.textMatrix = IDENTITY_MATRIX; - this.current.lineMatrix = IDENTITY_MATRIX; - this.current.tspan = document.createElementNS(NS, 'svg:tspan'); - this.current.txtElement = document.createElementNS(NS, 'svg:text'); - this.current.txtgrp = document.createElementNS(NS, 'svg:g'); - this.current.xcoords = []; - }, - moveText: function SVGGraphics_moveText(x, y) { - var current = this.current; - this.current.x = this.current.lineX += x; - this.current.y = this.current.lineY += y; - current.xcoords = []; - current.tspan = document.createElementNS(NS, 'svg:tspan'); - current.tspan.setAttributeNS(null, 'font-family', current.fontFamily); - current.tspan.setAttributeNS(null, 'font-size', pf(current.fontSize) + 'px'); - current.tspan.setAttributeNS(null, 'y', pf(-current.y)); - }, - showText: function SVGGraphics_showText(glyphs) { - var current = this.current; - var font = current.font; - var fontSize = current.fontSize; - if (fontSize === 0) { - return; + idat[pi++] = 0x01; + idat[pi++] = len & 0xff; + idat[pi++] = len >> 8 & 0xff; + idat[pi++] = ~len & 0xffff & 0xff; + idat[pi++] = (~len & 0xffff) >> 8 & 0xff; + idat.set(literals.subarray(pos), pi); + pi += literals.length - pos; + var adler = adler32(literals, 0, literals.length); + idat[pi++] = adler >> 24 & 0xff; + idat[pi++] = adler >> 16 & 0xff; + idat[pi++] = adler >> 8 & 0xff; + idat[pi++] = adler & 0xff; + var pngLength = PNG_HEADER.length + CHUNK_WRAPPER_SIZE * 3 + ihdr.length + idat.length; + var data = new Uint8Array(pngLength); + var offset = 0; + data.set(PNG_HEADER, offset); + offset += PNG_HEADER.length; + writePngChunk('IHDR', ihdr, data, offset); + offset += CHUNK_WRAPPER_SIZE + ihdr.length; + writePngChunk('IDATA', idat, data, offset); + offset += CHUNK_WRAPPER_SIZE + idat.length; + writePngChunk('IEND', new Uint8Array(0), data, offset); + return (0, _util.createObjectURL)(data, 'image/png', forceDataSchema); + } + return function convertImgDataToPng(imgData, forceDataSchema) { + var kind = imgData.kind === undefined ? _util.ImageKind.GRAYSCALE_1BPP : imgData.kind; + return encode(imgData, kind, forceDataSchema); + }; + }(); + var SVGExtraState = function SVGExtraStateClosure() { + function SVGExtraState() { + this.fontSizeScale = 1; + this.fontWeight = SVG_DEFAULTS.fontWeight; + this.fontSize = 0; + this.textMatrix = _util.IDENTITY_MATRIX; + this.fontMatrix = _util.FONT_IDENTITY_MATRIX; + this.leading = 0; + this.x = 0; + this.y = 0; + this.lineX = 0; + this.lineY = 0; + this.charSpacing = 0; + this.wordSpacing = 0; + this.textHScale = 1; + this.textRise = 0; + this.fillColor = SVG_DEFAULTS.fillColor; + this.strokeColor = '#000000'; + this.fillAlpha = 1; + this.strokeAlpha = 1; + this.lineWidth = 1; + this.lineJoin = ''; + this.lineCap = ''; + this.miterLimit = 0; + this.dashArray = []; + this.dashPhase = 0; + this.dependencies = []; + this.activeClipUrl = null; + this.clipGroup = null; + this.maskId = ''; + } + SVGExtraState.prototype = { + clone: function SVGExtraState_clone() { + return Object.create(this); + }, + setCurrentPoint: function SVGExtraState_setCurrentPoint(x, y) { + this.x = x; + this.y = y; } - var charSpacing = current.charSpacing; - var wordSpacing = current.wordSpacing; - var fontDirection = current.fontDirection; - var textHScale = current.textHScale * fontDirection; - var glyphsLength = glyphs.length; - var vertical = font.vertical; - var widthAdvanceScale = fontSize * current.fontMatrix[0]; - var x = 0, - i; - for (i = 0; i < glyphsLength; ++i) { - var glyph = glyphs[i]; - if (glyph === null) { - x += fontDirection * wordSpacing; - continue; - } else if (isNum(glyph)) { - x += -glyph * fontSize * 0.001; + }; + return SVGExtraState; + }(); + exports.SVGGraphics = SVGGraphics = function SVGGraphicsClosure() { + function opListToTree(opList) { + var opTree = []; + var tmp = []; + var opListLen = opList.length; + for (var x = 0; x < opListLen; x++) { + if (opList[x].fn === 'save') { + opTree.push({ + 'fnId': 92, + 'fn': 'group', + 'items': [] + }); + tmp.push(opTree); + opTree = opTree[opTree.length - 1].items; continue; } - current.xcoords.push(current.x + x * textHScale); - var width = glyph.width; - var character = glyph.fontChar; - var charWidth = width * widthAdvanceScale + charSpacing * fontDirection; - x += charWidth; - current.tspan.textContent += character; - } - if (vertical) { - current.y -= x * textHScale; - } else { - current.x += x * textHScale; - } - current.tspan.setAttributeNS(null, 'x', current.xcoords.map(pf).join(' ')); - current.tspan.setAttributeNS(null, 'y', pf(-current.y)); - current.tspan.setAttributeNS(null, 'font-family', current.fontFamily); - current.tspan.setAttributeNS(null, 'font-size', pf(current.fontSize) + 'px'); - if (current.fontStyle !== SVG_DEFAULTS.fontStyle) { - current.tspan.setAttributeNS(null, 'font-style', current.fontStyle); - } - if (current.fontWeight !== SVG_DEFAULTS.fontWeight) { - current.tspan.setAttributeNS(null, 'font-weight', current.fontWeight); - } - if (current.fillColor !== SVG_DEFAULTS.fillColor) { - current.tspan.setAttributeNS(null, 'fill', current.fillColor); - } - current.txtElement.setAttributeNS(null, 'transform', pm(current.textMatrix) + ' scale(1, -1)'); - current.txtElement.setAttributeNS(XML_NS, 'xml:space', 'preserve'); - current.txtElement.appendChild(current.tspan); - current.txtgrp.appendChild(current.txtElement); - this._ensureTransformGroup().appendChild(current.txtElement); - }, - setLeadingMoveText: function SVGGraphics_setLeadingMoveText(x, y) { - this.setLeading(-y); - this.moveText(x, y); - }, - addFontStyle: function SVGGraphics_addFontStyle(fontObj) { - if (!this.cssStyle) { - this.cssStyle = document.createElementNS(NS, 'svg:style'); - this.cssStyle.setAttributeNS(null, 'type', 'text/css'); - this.defs.appendChild(this.cssStyle); + if (opList[x].fn === 'restore') { + opTree = tmp.pop(); + } else { + opTree.push(opList[x]); + } } - var url = createObjectURL(fontObj.data, fontObj.mimetype, this.forceDataSchema); - this.cssStyle.textContent += '@font-face { font-family: "' + fontObj.loadedName + '";' + ' src: url(' + url + '); }\n'; - }, - setFont: function SVGGraphics_setFont(details) { - var current = this.current; - var fontObj = this.commonObjs.get(details[0]); - var size = details[1]; - this.current.font = fontObj; - if (this.embedFonts && fontObj.data && !this.embeddedFonts[fontObj.loadedName]) { - this.addFontStyle(fontObj); - this.embeddedFonts[fontObj.loadedName] = fontObj; + return opTree; + } + function pf(value) { + if (value === (value | 0)) { + return value.toString(); } - current.fontMatrix = fontObj.fontMatrix ? fontObj.fontMatrix : FONT_IDENTITY_MATRIX; - var bold = fontObj.black ? fontObj.bold ? 'bolder' : 'bold' : fontObj.bold ? 'bold' : 'normal'; - var italic = fontObj.italic ? 'italic' : 'normal'; - if (size < 0) { - size = -size; - current.fontDirection = -1; - } else { - current.fontDirection = 1; + var s = value.toFixed(10); + var i = s.length - 1; + if (s[i] !== '0') { + return s; } - current.fontSize = size; - current.fontFamily = fontObj.loadedName; - current.fontWeight = bold; - current.fontStyle = italic; - current.tspan = document.createElementNS(NS, 'svg:tspan'); - current.tspan.setAttributeNS(null, 'y', pf(-current.y)); - current.xcoords = []; - }, - endText: function SVGGraphics_endText() {}, - setLineWidth: function SVGGraphics_setLineWidth(width) { - this.current.lineWidth = width; - }, - setLineCap: function SVGGraphics_setLineCap(style) { - this.current.lineCap = LINE_CAP_STYLES[style]; - }, - setLineJoin: function SVGGraphics_setLineJoin(style) { - this.current.lineJoin = LINE_JOIN_STYLES[style]; - }, - setMiterLimit: function SVGGraphics_setMiterLimit(limit) { - this.current.miterLimit = limit; - }, - setStrokeRGBColor: function SVGGraphics_setStrokeRGBColor(r, g, b) { - var color = Util.makeCssRgb(r, g, b); - this.current.strokeColor = color; - }, - setFillRGBColor: function SVGGraphics_setFillRGBColor(r, g, b) { - var color = Util.makeCssRgb(r, g, b); - this.current.fillColor = color; - this.current.tspan = document.createElementNS(NS, 'svg:tspan'); - this.current.xcoords = []; - }, - setDash: function SVGGraphics_setDash(dashArray, dashPhase) { - this.current.dashArray = dashArray; - this.current.dashPhase = dashPhase; - }, - constructPath: function SVGGraphics_constructPath(ops, args) { - var current = this.current; - var x = current.x, - y = current.y; - current.path = document.createElementNS(NS, 'svg:path'); - var d = []; - var opLength = ops.length; - for (var i = 0, j = 0; i < opLength; i++) { - switch (ops[i] | 0) { - case OPS.rectangle: - x = args[j++]; - y = args[j++]; - var width = args[j++]; - var height = args[j++]; - var xw = x + width; - var yh = y + height; - d.push('M', pf(x), pf(y), 'L', pf(xw), pf(y), 'L', pf(xw), pf(yh), 'L', pf(x), pf(yh), 'Z'); - break; - case OPS.moveTo: - x = args[j++]; - y = args[j++]; - d.push('M', pf(x), pf(y)); - break; - case OPS.lineTo: - x = args[j++]; - y = args[j++]; - d.push('L', pf(x), pf(y)); - break; - case OPS.curveTo: - x = args[j + 4]; - y = args[j + 5]; - d.push('C', pf(args[j]), pf(args[j + 1]), pf(args[j + 2]), pf(args[j + 3]), pf(x), pf(y)); - j += 6; - break; - case OPS.curveTo2: - x = args[j + 2]; - y = args[j + 3]; - d.push('C', pf(x), pf(y), pf(args[j]), pf(args[j + 1]), pf(args[j + 2]), pf(args[j + 3])); - j += 4; - break; - case OPS.curveTo3: - x = args[j + 2]; - y = args[j + 3]; - d.push('C', pf(args[j]), pf(args[j + 1]), pf(x), pf(y), pf(x), pf(y)); - j += 4; - break; - case OPS.closePath: - d.push('Z'); - break; + do { + i--; + } while (s[i] === '0'); + return s.substr(0, s[i] === '.' ? i : i + 1); + } + function pm(m) { + if (m[4] === 0 && m[5] === 0) { + if (m[1] === 0 && m[2] === 0) { + if (m[0] === 1 && m[3] === 1) { + return ''; + } + return 'scale(' + pf(m[0]) + ' ' + pf(m[3]) + ')'; + } + if (m[0] === m[3] && m[1] === -m[2]) { + var a = Math.acos(m[0]) * 180 / Math.PI; + return 'rotate(' + pf(a) + ')'; } - } - current.path.setAttributeNS(null, 'd', d.join(' ')); - current.path.setAttributeNS(null, 'stroke-miterlimit', pf(current.miterLimit)); - current.path.setAttributeNS(null, 'stroke-linecap', current.lineCap); - current.path.setAttributeNS(null, 'stroke-linejoin', current.lineJoin); - current.path.setAttributeNS(null, 'stroke-width', pf(current.lineWidth) + 'px'); - current.path.setAttributeNS(null, 'stroke-dasharray', current.dashArray.map(pf).join(' ')); - current.path.setAttributeNS(null, 'stroke-dashoffset', pf(current.dashPhase) + 'px'); - current.path.setAttributeNS(null, 'fill', 'none'); - this._ensureTransformGroup().appendChild(current.path); - current.element = current.path; - current.setCurrentPoint(x, y); - }, - endPath: function SVGGraphics_endPath() {}, - clip: function SVGGraphics_clip(type) { - var current = this.current; - var clipId = 'clippath' + clipCount; - clipCount++; - var clipPath = document.createElementNS(NS, 'svg:clipPath'); - clipPath.setAttributeNS(null, 'id', clipId); - clipPath.setAttributeNS(null, 'transform', pm(this.transformMatrix)); - var clipElement = current.element.cloneNode(); - if (type === 'evenodd') { - clipElement.setAttributeNS(null, 'clip-rule', 'evenodd'); } else { - clipElement.setAttributeNS(null, 'clip-rule', 'nonzero'); - } - clipPath.appendChild(clipElement); - this.defs.appendChild(clipPath); - if (current.activeClipUrl) { - current.clipGroup = null; - this.extraStack.forEach(function (prev) { - prev.clipGroup = null; - }); - } - current.activeClipUrl = 'url(#' + clipId + ')'; - this.tgrp = null; - }, - closePath: function SVGGraphics_closePath() { - var current = this.current; - var d = current.path.getAttributeNS(null, 'd'); - d += 'Z'; - current.path.setAttributeNS(null, 'd', d); - }, - setLeading: function SVGGraphics_setLeading(leading) { - this.current.leading = -leading; - }, - setTextRise: function SVGGraphics_setTextRise(textRise) { - this.current.textRise = textRise; - }, - setHScale: function SVGGraphics_setHScale(scale) { - this.current.textHScale = scale / 100; - }, - setGState: function SVGGraphics_setGState(states) { - for (var i = 0, ii = states.length; i < ii; i++) { - var state = states[i]; - var key = state[0]; - var value = state[1]; - switch (key) { - case 'LW': - this.setLineWidth(value); - break; - case 'LC': - this.setLineCap(value); - break; - case 'LJ': - this.setLineJoin(value); - break; - case 'ML': - this.setMiterLimit(value); - break; - case 'D': - this.setDash(value[0], value[1]); - break; - case 'Font': - this.setFont(value); - break; - default: - warn('Unimplemented graphic state ' + key); - break; + if (m[0] === 1 && m[1] === 0 && m[2] === 0 && m[3] === 1) { + return 'translate(' + pf(m[4]) + ' ' + pf(m[5]) + ')'; } } - }, - fill: function SVGGraphics_fill() { - var current = this.current; - current.element.setAttributeNS(null, 'fill', current.fillColor); - }, - stroke: function SVGGraphics_stroke() { - var current = this.current; - current.element.setAttributeNS(null, 'stroke', current.strokeColor); - current.element.setAttributeNS(null, 'fill', 'none'); - }, - eoFill: function SVGGraphics_eoFill() { - var current = this.current; - current.element.setAttributeNS(null, 'fill', current.fillColor); - current.element.setAttributeNS(null, 'fill-rule', 'evenodd'); - }, - fillStroke: function SVGGraphics_fillStroke() { - this.stroke(); - this.fill(); - }, - eoFillStroke: function SVGGraphics_eoFillStroke() { - this.current.element.setAttributeNS(null, 'fill-rule', 'evenodd'); - this.fillStroke(); - }, - closeStroke: function SVGGraphics_closeStroke() { - this.closePath(); - this.stroke(); - }, - closeFillStroke: function SVGGraphics_closeFillStroke() { - this.closePath(); - this.fillStroke(); - }, - paintSolidColorImageMask: function SVGGraphics_paintSolidColorImageMask() { - var current = this.current; - var rect = document.createElementNS(NS, 'svg:rect'); - rect.setAttributeNS(null, 'x', '0'); - rect.setAttributeNS(null, 'y', '0'); - rect.setAttributeNS(null, 'width', '1px'); - rect.setAttributeNS(null, 'height', '1px'); - rect.setAttributeNS(null, 'fill', current.fillColor); - this._ensureTransformGroup().appendChild(rect); - }, - paintJpegXObject: function SVGGraphics_paintJpegXObject(objId, w, h) { - var imgObj = this.objs.get(objId); - var imgEl = document.createElementNS(NS, 'svg:image'); - imgEl.setAttributeNS(XLINK_NS, 'xlink:href', imgObj.src); - imgEl.setAttributeNS(null, 'width', imgObj.width + 'px'); - imgEl.setAttributeNS(null, 'height', imgObj.height + 'px'); - imgEl.setAttributeNS(null, 'x', '0'); - imgEl.setAttributeNS(null, 'y', pf(-h)); - imgEl.setAttributeNS(null, 'transform', 'scale(' + pf(1 / w) + ' ' + pf(-1 / h) + ')'); - this._ensureTransformGroup().appendChild(imgEl); - }, - paintImageXObject: function SVGGraphics_paintImageXObject(objId) { - var imgData = this.objs.get(objId); - if (!imgData) { - warn('Dependent image isn\'t ready yet'); - return; - } - this.paintInlineImageXObject(imgData); - }, - paintInlineImageXObject: function SVGGraphics_paintInlineImageXObject(imgData, mask) { - var width = imgData.width; - var height = imgData.height; - var imgSrc = convertImgDataToPng(imgData, this.forceDataSchema); - var cliprect = document.createElementNS(NS, 'svg:rect'); - cliprect.setAttributeNS(null, 'x', '0'); - cliprect.setAttributeNS(null, 'y', '0'); - cliprect.setAttributeNS(null, 'width', pf(width)); - cliprect.setAttributeNS(null, 'height', pf(height)); - this.current.element = cliprect; - this.clip('nonzero'); - var imgEl = document.createElementNS(NS, 'svg:image'); - imgEl.setAttributeNS(XLINK_NS, 'xlink:href', imgSrc); - imgEl.setAttributeNS(null, 'x', '0'); - imgEl.setAttributeNS(null, 'y', pf(-height)); - imgEl.setAttributeNS(null, 'width', pf(width) + 'px'); - imgEl.setAttributeNS(null, 'height', pf(height) + 'px'); - imgEl.setAttributeNS(null, 'transform', 'scale(' + pf(1 / width) + ' ' + pf(-1 / height) + ')'); - if (mask) { - mask.appendChild(imgEl); - } else { + return 'matrix(' + pf(m[0]) + ' ' + pf(m[1]) + ' ' + pf(m[2]) + ' ' + pf(m[3]) + ' ' + pf(m[4]) + ' ' + pf(m[5]) + ')'; + } + function SVGGraphics(commonObjs, objs, forceDataSchema) { + this.current = new SVGExtraState(); + this.transformMatrix = _util.IDENTITY_MATRIX; + this.transformStack = []; + this.extraStack = []; + this.commonObjs = commonObjs; + this.objs = objs; + this.pendingEOFill = false; + this.embedFonts = false; + this.embeddedFonts = Object.create(null); + this.cssStyle = null; + this.forceDataSchema = !!forceDataSchema; + } + var NS = 'http://www.w3.org/2000/svg'; + var XML_NS = 'http://www.w3.org/XML/1998/namespace'; + var XLINK_NS = 'http://www.w3.org/1999/xlink'; + var LINE_CAP_STYLES = ['butt', 'round', 'square']; + var LINE_JOIN_STYLES = ['miter', 'round', 'bevel']; + var clipCount = 0; + var maskCount = 0; + SVGGraphics.prototype = { + save: function SVGGraphics_save() { + this.transformStack.push(this.transformMatrix); + var old = this.current; + this.extraStack.push(old); + this.current = old.clone(); + }, + restore: function SVGGraphics_restore() { + this.transformMatrix = this.transformStack.pop(); + this.current = this.extraStack.pop(); + this.tgrp = null; + }, + group: function SVGGraphics_group(items) { + this.save(); + this.executeOpTree(items); + this.restore(); + }, + loadDependencies: function SVGGraphics_loadDependencies(operatorList) { + var fnArray = operatorList.fnArray; + var fnArrayLen = fnArray.length; + var argsArray = operatorList.argsArray; + var self = this; + for (var i = 0; i < fnArrayLen; i++) { + if (_util.OPS.dependency === fnArray[i]) { + var deps = argsArray[i]; + for (var n = 0, nn = deps.length; n < nn; n++) { + var obj = deps[n]; + var common = obj.substring(0, 2) === 'g_'; + var promise; + if (common) { + promise = new Promise(function (resolve) { + self.commonObjs.get(obj, resolve); + }); + } else { + promise = new Promise(function (resolve) { + self.objs.get(obj, resolve); + }); + } + this.current.dependencies.push(promise); + } + } + } + return Promise.all(this.current.dependencies); + }, + transform: function SVGGraphics_transform(a, b, c, d, e, f) { + var transformMatrix = [a, b, c, d, e, f]; + this.transformMatrix = _util.Util.transform(this.transformMatrix, transformMatrix); + this.tgrp = null; + }, + getSVG: function SVGGraphics_getSVG(operatorList, viewport) { + this.viewport = viewport; + var svgElement = this._initialize(viewport); + return this.loadDependencies(operatorList).then(function () { + this.transformMatrix = _util.IDENTITY_MATRIX; + var opTree = this.convertOpList(operatorList); + this.executeOpTree(opTree); + return svgElement; + }.bind(this)); + }, + convertOpList: function SVGGraphics_convertOpList(operatorList) { + var argsArray = operatorList.argsArray; + var fnArray = operatorList.fnArray; + var fnArrayLen = fnArray.length; + var REVOPS = []; + var opList = []; + for (var op in _util.OPS) { + REVOPS[_util.OPS[op]] = op; + } + for (var x = 0; x < fnArrayLen; x++) { + var fnId = fnArray[x]; + opList.push({ + 'fnId': fnId, + 'fn': REVOPS[fnId], + 'args': argsArray[x] + }); + } + return opListToTree(opList); + }, + executeOpTree: function SVGGraphics_executeOpTree(opTree) { + var opTreeLen = opTree.length; + for (var x = 0; x < opTreeLen; x++) { + var fn = opTree[x].fn; + var fnId = opTree[x].fnId; + var args = opTree[x].args; + switch (fnId | 0) { + case _util.OPS.beginText: + this.beginText(); + break; + case _util.OPS.setLeading: + this.setLeading(args); + break; + case _util.OPS.setLeadingMoveText: + this.setLeadingMoveText(args[0], args[1]); + break; + case _util.OPS.setFont: + this.setFont(args); + break; + case _util.OPS.showText: + this.showText(args[0]); + break; + case _util.OPS.showSpacedText: + this.showText(args[0]); + break; + case _util.OPS.endText: + this.endText(); + break; + case _util.OPS.moveText: + this.moveText(args[0], args[1]); + break; + case _util.OPS.setCharSpacing: + this.setCharSpacing(args[0]); + break; + case _util.OPS.setWordSpacing: + this.setWordSpacing(args[0]); + break; + case _util.OPS.setHScale: + this.setHScale(args[0]); + break; + case _util.OPS.setTextMatrix: + this.setTextMatrix(args[0], args[1], args[2], args[3], args[4], args[5]); + break; + case _util.OPS.setLineWidth: + this.setLineWidth(args[0]); + break; + case _util.OPS.setLineJoin: + this.setLineJoin(args[0]); + break; + case _util.OPS.setLineCap: + this.setLineCap(args[0]); + break; + case _util.OPS.setMiterLimit: + this.setMiterLimit(args[0]); + break; + case _util.OPS.setFillRGBColor: + this.setFillRGBColor(args[0], args[1], args[2]); + break; + case _util.OPS.setStrokeRGBColor: + this.setStrokeRGBColor(args[0], args[1], args[2]); + break; + case _util.OPS.setDash: + this.setDash(args[0], args[1]); + break; + case _util.OPS.setGState: + this.setGState(args[0]); + break; + case _util.OPS.fill: + this.fill(); + break; + case _util.OPS.eoFill: + this.eoFill(); + break; + case _util.OPS.stroke: + this.stroke(); + break; + case _util.OPS.fillStroke: + this.fillStroke(); + break; + case _util.OPS.eoFillStroke: + this.eoFillStroke(); + break; + case _util.OPS.clip: + this.clip('nonzero'); + break; + case _util.OPS.eoClip: + this.clip('evenodd'); + break; + case _util.OPS.paintSolidColorImageMask: + this.paintSolidColorImageMask(); + break; + case _util.OPS.paintJpegXObject: + this.paintJpegXObject(args[0], args[1], args[2]); + break; + case _util.OPS.paintImageXObject: + this.paintImageXObject(args[0]); + break; + case _util.OPS.paintInlineImageXObject: + this.paintInlineImageXObject(args[0]); + break; + case _util.OPS.paintImageMaskXObject: + this.paintImageMaskXObject(args[0]); + break; + case _util.OPS.paintFormXObjectBegin: + this.paintFormXObjectBegin(args[0], args[1]); + break; + case _util.OPS.paintFormXObjectEnd: + this.paintFormXObjectEnd(); + break; + case _util.OPS.closePath: + this.closePath(); + break; + case _util.OPS.closeStroke: + this.closeStroke(); + break; + case _util.OPS.closeFillStroke: + this.closeFillStroke(); + break; + case _util.OPS.nextLine: + this.nextLine(); + break; + case _util.OPS.transform: + this.transform(args[0], args[1], args[2], args[3], args[4], args[5]); + break; + case _util.OPS.constructPath: + this.constructPath(args[0], args[1]); + break; + case _util.OPS.endPath: + this.endPath(); + break; + case 92: + this.group(opTree[x].items); + break; + default: + (0, _util.warn)('Unimplemented operator ' + fn); + break; + } + } + }, + setWordSpacing: function SVGGraphics_setWordSpacing(wordSpacing) { + this.current.wordSpacing = wordSpacing; + }, + setCharSpacing: function SVGGraphics_setCharSpacing(charSpacing) { + this.current.charSpacing = charSpacing; + }, + nextLine: function SVGGraphics_nextLine() { + this.moveText(0, this.current.leading); + }, + setTextMatrix: function SVGGraphics_setTextMatrix(a, b, c, d, e, f) { + var current = this.current; + this.current.textMatrix = this.current.lineMatrix = [a, b, c, d, e, f]; + this.current.x = this.current.lineX = 0; + this.current.y = this.current.lineY = 0; + current.xcoords = []; + current.tspan = document.createElementNS(NS, 'svg:tspan'); + current.tspan.setAttributeNS(null, 'font-family', current.fontFamily); + current.tspan.setAttributeNS(null, 'font-size', pf(current.fontSize) + 'px'); + current.tspan.setAttributeNS(null, 'y', pf(-current.y)); + current.txtElement = document.createElementNS(NS, 'svg:text'); + current.txtElement.appendChild(current.tspan); + }, + beginText: function SVGGraphics_beginText() { + this.current.x = this.current.lineX = 0; + this.current.y = this.current.lineY = 0; + this.current.textMatrix = _util.IDENTITY_MATRIX; + this.current.lineMatrix = _util.IDENTITY_MATRIX; + this.current.tspan = document.createElementNS(NS, 'svg:tspan'); + this.current.txtElement = document.createElementNS(NS, 'svg:text'); + this.current.txtgrp = document.createElementNS(NS, 'svg:g'); + this.current.xcoords = []; + }, + moveText: function SVGGraphics_moveText(x, y) { + var current = this.current; + this.current.x = this.current.lineX += x; + this.current.y = this.current.lineY += y; + current.xcoords = []; + current.tspan = document.createElementNS(NS, 'svg:tspan'); + current.tspan.setAttributeNS(null, 'font-family', current.fontFamily); + current.tspan.setAttributeNS(null, 'font-size', pf(current.fontSize) + 'px'); + current.tspan.setAttributeNS(null, 'y', pf(-current.y)); + }, + showText: function SVGGraphics_showText(glyphs) { + var current = this.current; + var font = current.font; + var fontSize = current.fontSize; + if (fontSize === 0) { + return; + } + var charSpacing = current.charSpacing; + var wordSpacing = current.wordSpacing; + var fontDirection = current.fontDirection; + var textHScale = current.textHScale * fontDirection; + var glyphsLength = glyphs.length; + var vertical = font.vertical; + var widthAdvanceScale = fontSize * current.fontMatrix[0]; + var x = 0, + i; + for (i = 0; i < glyphsLength; ++i) { + var glyph = glyphs[i]; + if (glyph === null) { + x += fontDirection * wordSpacing; + continue; + } else if ((0, _util.isNum)(glyph)) { + x += -glyph * fontSize * 0.001; + continue; + } + current.xcoords.push(current.x + x * textHScale); + var width = glyph.width; + var character = glyph.fontChar; + var charWidth = width * widthAdvanceScale + charSpacing * fontDirection; + x += charWidth; + current.tspan.textContent += character; + } + if (vertical) { + current.y -= x * textHScale; + } else { + current.x += x * textHScale; + } + current.tspan.setAttributeNS(null, 'x', current.xcoords.map(pf).join(' ')); + current.tspan.setAttributeNS(null, 'y', pf(-current.y)); + current.tspan.setAttributeNS(null, 'font-family', current.fontFamily); + current.tspan.setAttributeNS(null, 'font-size', pf(current.fontSize) + 'px'); + if (current.fontStyle !== SVG_DEFAULTS.fontStyle) { + current.tspan.setAttributeNS(null, 'font-style', current.fontStyle); + } + if (current.fontWeight !== SVG_DEFAULTS.fontWeight) { + current.tspan.setAttributeNS(null, 'font-weight', current.fontWeight); + } + if (current.fillColor !== SVG_DEFAULTS.fillColor) { + current.tspan.setAttributeNS(null, 'fill', current.fillColor); + } + current.txtElement.setAttributeNS(null, 'transform', pm(current.textMatrix) + ' scale(1, -1)'); + current.txtElement.setAttributeNS(XML_NS, 'xml:space', 'preserve'); + current.txtElement.appendChild(current.tspan); + current.txtgrp.appendChild(current.txtElement); + this._ensureTransformGroup().appendChild(current.txtElement); + }, + setLeadingMoveText: function SVGGraphics_setLeadingMoveText(x, y) { + this.setLeading(-y); + this.moveText(x, y); + }, + addFontStyle: function SVGGraphics_addFontStyle(fontObj) { + if (!this.cssStyle) { + this.cssStyle = document.createElementNS(NS, 'svg:style'); + this.cssStyle.setAttributeNS(null, 'type', 'text/css'); + this.defs.appendChild(this.cssStyle); + } + var url = (0, _util.createObjectURL)(fontObj.data, fontObj.mimetype, this.forceDataSchema); + this.cssStyle.textContent += '@font-face { font-family: "' + fontObj.loadedName + '";' + ' src: url(' + url + '); }\n'; + }, + setFont: function SVGGraphics_setFont(details) { + var current = this.current; + var fontObj = this.commonObjs.get(details[0]); + var size = details[1]; + this.current.font = fontObj; + if (this.embedFonts && fontObj.data && !this.embeddedFonts[fontObj.loadedName]) { + this.addFontStyle(fontObj); + this.embeddedFonts[fontObj.loadedName] = fontObj; + } + current.fontMatrix = fontObj.fontMatrix ? fontObj.fontMatrix : _util.FONT_IDENTITY_MATRIX; + var bold = fontObj.black ? fontObj.bold ? 'bolder' : 'bold' : fontObj.bold ? 'bold' : 'normal'; + var italic = fontObj.italic ? 'italic' : 'normal'; + if (size < 0) { + size = -size; + current.fontDirection = -1; + } else { + current.fontDirection = 1; + } + current.fontSize = size; + current.fontFamily = fontObj.loadedName; + current.fontWeight = bold; + current.fontStyle = italic; + current.tspan = document.createElementNS(NS, 'svg:tspan'); + current.tspan.setAttributeNS(null, 'y', pf(-current.y)); + current.xcoords = []; + }, + endText: function SVGGraphics_endText() {}, + setLineWidth: function SVGGraphics_setLineWidth(width) { + this.current.lineWidth = width; + }, + setLineCap: function SVGGraphics_setLineCap(style) { + this.current.lineCap = LINE_CAP_STYLES[style]; + }, + setLineJoin: function SVGGraphics_setLineJoin(style) { + this.current.lineJoin = LINE_JOIN_STYLES[style]; + }, + setMiterLimit: function SVGGraphics_setMiterLimit(limit) { + this.current.miterLimit = limit; + }, + setStrokeRGBColor: function SVGGraphics_setStrokeRGBColor(r, g, b) { + var color = _util.Util.makeCssRgb(r, g, b); + this.current.strokeColor = color; + }, + setFillRGBColor: function SVGGraphics_setFillRGBColor(r, g, b) { + var color = _util.Util.makeCssRgb(r, g, b); + this.current.fillColor = color; + this.current.tspan = document.createElementNS(NS, 'svg:tspan'); + this.current.xcoords = []; + }, + setDash: function SVGGraphics_setDash(dashArray, dashPhase) { + this.current.dashArray = dashArray; + this.current.dashPhase = dashPhase; + }, + constructPath: function SVGGraphics_constructPath(ops, args) { + var current = this.current; + var x = current.x, + y = current.y; + current.path = document.createElementNS(NS, 'svg:path'); + var d = []; + var opLength = ops.length; + for (var i = 0, j = 0; i < opLength; i++) { + switch (ops[i] | 0) { + case _util.OPS.rectangle: + x = args[j++]; + y = args[j++]; + var width = args[j++]; + var height = args[j++]; + var xw = x + width; + var yh = y + height; + d.push('M', pf(x), pf(y), 'L', pf(xw), pf(y), 'L', pf(xw), pf(yh), 'L', pf(x), pf(yh), 'Z'); + break; + case _util.OPS.moveTo: + x = args[j++]; + y = args[j++]; + d.push('M', pf(x), pf(y)); + break; + case _util.OPS.lineTo: + x = args[j++]; + y = args[j++]; + d.push('L', pf(x), pf(y)); + break; + case _util.OPS.curveTo: + x = args[j + 4]; + y = args[j + 5]; + d.push('C', pf(args[j]), pf(args[j + 1]), pf(args[j + 2]), pf(args[j + 3]), pf(x), pf(y)); + j += 6; + break; + case _util.OPS.curveTo2: + x = args[j + 2]; + y = args[j + 3]; + d.push('C', pf(x), pf(y), pf(args[j]), pf(args[j + 1]), pf(args[j + 2]), pf(args[j + 3])); + j += 4; + break; + case _util.OPS.curveTo3: + x = args[j + 2]; + y = args[j + 3]; + d.push('C', pf(args[j]), pf(args[j + 1]), pf(x), pf(y), pf(x), pf(y)); + j += 4; + break; + case _util.OPS.closePath: + d.push('Z'); + break; + } + } + current.path.setAttributeNS(null, 'd', d.join(' ')); + current.path.setAttributeNS(null, 'stroke-miterlimit', pf(current.miterLimit)); + current.path.setAttributeNS(null, 'stroke-linecap', current.lineCap); + current.path.setAttributeNS(null, 'stroke-linejoin', current.lineJoin); + current.path.setAttributeNS(null, 'stroke-width', pf(current.lineWidth) + 'px'); + current.path.setAttributeNS(null, 'stroke-dasharray', current.dashArray.map(pf).join(' ')); + current.path.setAttributeNS(null, 'stroke-dashoffset', pf(current.dashPhase) + 'px'); + current.path.setAttributeNS(null, 'fill', 'none'); + this._ensureTransformGroup().appendChild(current.path); + current.element = current.path; + current.setCurrentPoint(x, y); + }, + endPath: function SVGGraphics_endPath() {}, + clip: function SVGGraphics_clip(type) { + var current = this.current; + var clipId = 'clippath' + clipCount; + clipCount++; + var clipPath = document.createElementNS(NS, 'svg:clipPath'); + clipPath.setAttributeNS(null, 'id', clipId); + clipPath.setAttributeNS(null, 'transform', pm(this.transformMatrix)); + var clipElement = current.element.cloneNode(); + if (type === 'evenodd') { + clipElement.setAttributeNS(null, 'clip-rule', 'evenodd'); + } else { + clipElement.setAttributeNS(null, 'clip-rule', 'nonzero'); + } + clipPath.appendChild(clipElement); + this.defs.appendChild(clipPath); + if (current.activeClipUrl) { + current.clipGroup = null; + this.extraStack.forEach(function (prev) { + prev.clipGroup = null; + }); + } + current.activeClipUrl = 'url(#' + clipId + ')'; + this.tgrp = null; + }, + closePath: function SVGGraphics_closePath() { + var current = this.current; + var d = current.path.getAttributeNS(null, 'd'); + d += 'Z'; + current.path.setAttributeNS(null, 'd', d); + }, + setLeading: function SVGGraphics_setLeading(leading) { + this.current.leading = -leading; + }, + setTextRise: function SVGGraphics_setTextRise(textRise) { + this.current.textRise = textRise; + }, + setHScale: function SVGGraphics_setHScale(scale) { + this.current.textHScale = scale / 100; + }, + setGState: function SVGGraphics_setGState(states) { + for (var i = 0, ii = states.length; i < ii; i++) { + var state = states[i]; + var key = state[0]; + var value = state[1]; + switch (key) { + case 'LW': + this.setLineWidth(value); + break; + case 'LC': + this.setLineCap(value); + break; + case 'LJ': + this.setLineJoin(value); + break; + case 'ML': + this.setMiterLimit(value); + break; + case 'D': + this.setDash(value[0], value[1]); + break; + case 'Font': + this.setFont(value); + break; + default: + (0, _util.warn)('Unimplemented graphic state ' + key); + break; + } + } + }, + fill: function SVGGraphics_fill() { + var current = this.current; + current.element.setAttributeNS(null, 'fill', current.fillColor); + }, + stroke: function SVGGraphics_stroke() { + var current = this.current; + current.element.setAttributeNS(null, 'stroke', current.strokeColor); + current.element.setAttributeNS(null, 'fill', 'none'); + }, + eoFill: function SVGGraphics_eoFill() { + var current = this.current; + current.element.setAttributeNS(null, 'fill', current.fillColor); + current.element.setAttributeNS(null, 'fill-rule', 'evenodd'); + }, + fillStroke: function SVGGraphics_fillStroke() { + this.stroke(); + this.fill(); + }, + eoFillStroke: function SVGGraphics_eoFillStroke() { + this.current.element.setAttributeNS(null, 'fill-rule', 'evenodd'); + this.fillStroke(); + }, + closeStroke: function SVGGraphics_closeStroke() { + this.closePath(); + this.stroke(); + }, + closeFillStroke: function SVGGraphics_closeFillStroke() { + this.closePath(); + this.fillStroke(); + }, + paintSolidColorImageMask: function SVGGraphics_paintSolidColorImageMask() { + var current = this.current; + var rect = document.createElementNS(NS, 'svg:rect'); + rect.setAttributeNS(null, 'x', '0'); + rect.setAttributeNS(null, 'y', '0'); + rect.setAttributeNS(null, 'width', '1px'); + rect.setAttributeNS(null, 'height', '1px'); + rect.setAttributeNS(null, 'fill', current.fillColor); + this._ensureTransformGroup().appendChild(rect); + }, + paintJpegXObject: function SVGGraphics_paintJpegXObject(objId, w, h) { + var imgObj = this.objs.get(objId); + var imgEl = document.createElementNS(NS, 'svg:image'); + imgEl.setAttributeNS(XLINK_NS, 'xlink:href', imgObj.src); + imgEl.setAttributeNS(null, 'width', imgObj.width + 'px'); + imgEl.setAttributeNS(null, 'height', imgObj.height + 'px'); + imgEl.setAttributeNS(null, 'x', '0'); + imgEl.setAttributeNS(null, 'y', pf(-h)); + imgEl.setAttributeNS(null, 'transform', 'scale(' + pf(1 / w) + ' ' + pf(-1 / h) + ')'); this._ensureTransformGroup().appendChild(imgEl); - } - }, - paintImageMaskXObject: function SVGGraphics_paintImageMaskXObject(imgData) { - var current = this.current; - var width = imgData.width; - var height = imgData.height; - var fillColor = current.fillColor; - current.maskId = 'mask' + maskCount++; - var mask = document.createElementNS(NS, 'svg:mask'); - mask.setAttributeNS(null, 'id', current.maskId); - var rect = document.createElementNS(NS, 'svg:rect'); - rect.setAttributeNS(null, 'x', '0'); - rect.setAttributeNS(null, 'y', '0'); - rect.setAttributeNS(null, 'width', pf(width)); - rect.setAttributeNS(null, 'height', pf(height)); - rect.setAttributeNS(null, 'fill', fillColor); - rect.setAttributeNS(null, 'mask', 'url(#' + current.maskId + ')'); - this.defs.appendChild(mask); - this._ensureTransformGroup().appendChild(rect); - this.paintInlineImageXObject(imgData, mask); - }, - paintFormXObjectBegin: function SVGGraphics_paintFormXObjectBegin(matrix, bbox) { - if (isArray(matrix) && matrix.length === 6) { - this.transform(matrix[0], matrix[1], matrix[2], matrix[3], matrix[4], matrix[5]); - } - if (isArray(bbox) && bbox.length === 4) { - var width = bbox[2] - bbox[0]; - var height = bbox[3] - bbox[1]; + }, + paintImageXObject: function SVGGraphics_paintImageXObject(objId) { + var imgData = this.objs.get(objId); + if (!imgData) { + (0, _util.warn)('Dependent image isn\'t ready yet'); + return; + } + this.paintInlineImageXObject(imgData); + }, + paintInlineImageXObject: function SVGGraphics_paintInlineImageXObject(imgData, mask) { + var width = imgData.width; + var height = imgData.height; + var imgSrc = convertImgDataToPng(imgData, this.forceDataSchema); var cliprect = document.createElementNS(NS, 'svg:rect'); - cliprect.setAttributeNS(null, 'x', bbox[0]); - cliprect.setAttributeNS(null, 'y', bbox[1]); + cliprect.setAttributeNS(null, 'x', '0'); + cliprect.setAttributeNS(null, 'y', '0'); cliprect.setAttributeNS(null, 'width', pf(width)); cliprect.setAttributeNS(null, 'height', pf(height)); this.current.element = cliprect; this.clip('nonzero'); - this.endPath(); - } - }, - paintFormXObjectEnd: function SVGGraphics_paintFormXObjectEnd() {}, - _initialize: function SVGGraphics_initialize(viewport) { - var svg = document.createElementNS(NS, 'svg:svg'); - svg.setAttributeNS(null, 'version', '1.1'); - svg.setAttributeNS(null, 'width', viewport.width + 'px'); - svg.setAttributeNS(null, 'height', viewport.height + 'px'); - svg.setAttributeNS(null, 'preserveAspectRatio', 'none'); - svg.setAttributeNS(null, 'viewBox', '0 0 ' + viewport.width + ' ' + viewport.height); - var definitions = document.createElementNS(NS, 'svg:defs'); - svg.appendChild(definitions); - this.defs = definitions; - var rootGroup = document.createElementNS(NS, 'svg:g'); - rootGroup.setAttributeNS(null, 'transform', pm(viewport.transform)); - svg.appendChild(rootGroup); - this.svg = rootGroup; - return svg; - }, - _ensureClipGroup: function SVGGraphics_ensureClipGroup() { - if (!this.current.clipGroup) { - var clipGroup = document.createElementNS(NS, 'svg:g'); - clipGroup.setAttributeNS(null, 'clip-path', this.current.activeClipUrl); - this.svg.appendChild(clipGroup); - this.current.clipGroup = clipGroup; - } - return this.current.clipGroup; - }, - _ensureTransformGroup: function SVGGraphics_ensureTransformGroup() { - if (!this.tgrp) { - this.tgrp = document.createElementNS(NS, 'svg:g'); - this.tgrp.setAttributeNS(null, 'transform', pm(this.transformMatrix)); - if (this.current.activeClipUrl) { - this._ensureClipGroup().appendChild(this.tgrp); + var imgEl = document.createElementNS(NS, 'svg:image'); + imgEl.setAttributeNS(XLINK_NS, 'xlink:href', imgSrc); + imgEl.setAttributeNS(null, 'x', '0'); + imgEl.setAttributeNS(null, 'y', pf(-height)); + imgEl.setAttributeNS(null, 'width', pf(width) + 'px'); + imgEl.setAttributeNS(null, 'height', pf(height) + 'px'); + imgEl.setAttributeNS(null, 'transform', 'scale(' + pf(1 / width) + ' ' + pf(-1 / height) + ')'); + if (mask) { + mask.appendChild(imgEl); } else { - this.svg.appendChild(this.tgrp); + this._ensureTransformGroup().appendChild(imgEl); + } + }, + paintImageMaskXObject: function SVGGraphics_paintImageMaskXObject(imgData) { + var current = this.current; + var width = imgData.width; + var height = imgData.height; + var fillColor = current.fillColor; + current.maskId = 'mask' + maskCount++; + var mask = document.createElementNS(NS, 'svg:mask'); + mask.setAttributeNS(null, 'id', current.maskId); + var rect = document.createElementNS(NS, 'svg:rect'); + rect.setAttributeNS(null, 'x', '0'); + rect.setAttributeNS(null, 'y', '0'); + rect.setAttributeNS(null, 'width', pf(width)); + rect.setAttributeNS(null, 'height', pf(height)); + rect.setAttributeNS(null, 'fill', fillColor); + rect.setAttributeNS(null, 'mask', 'url(#' + current.maskId + ')'); + this.defs.appendChild(mask); + this._ensureTransformGroup().appendChild(rect); + this.paintInlineImageXObject(imgData, mask); + }, + paintFormXObjectBegin: function SVGGraphics_paintFormXObjectBegin(matrix, bbox) { + if ((0, _util.isArray)(matrix) && matrix.length === 6) { + this.transform(matrix[0], matrix[1], matrix[2], matrix[3], matrix[4], matrix[5]); + } + if ((0, _util.isArray)(bbox) && bbox.length === 4) { + var width = bbox[2] - bbox[0]; + var height = bbox[3] - bbox[1]; + var cliprect = document.createElementNS(NS, 'svg:rect'); + cliprect.setAttributeNS(null, 'x', bbox[0]); + cliprect.setAttributeNS(null, 'y', bbox[1]); + cliprect.setAttributeNS(null, 'width', pf(width)); + cliprect.setAttributeNS(null, 'height', pf(height)); + this.current.element = cliprect; + this.clip('nonzero'); + this.endPath(); } + }, + paintFormXObjectEnd: function SVGGraphics_paintFormXObjectEnd() {}, + _initialize: function SVGGraphics_initialize(viewport) { + var svg = document.createElementNS(NS, 'svg:svg'); + svg.setAttributeNS(null, 'version', '1.1'); + svg.setAttributeNS(null, 'width', viewport.width + 'px'); + svg.setAttributeNS(null, 'height', viewport.height + 'px'); + svg.setAttributeNS(null, 'preserveAspectRatio', 'none'); + svg.setAttributeNS(null, 'viewBox', '0 0 ' + viewport.width + ' ' + viewport.height); + var definitions = document.createElementNS(NS, 'svg:defs'); + svg.appendChild(definitions); + this.defs = definitions; + var rootGroup = document.createElementNS(NS, 'svg:g'); + rootGroup.setAttributeNS(null, 'transform', pm(viewport.transform)); + svg.appendChild(rootGroup); + this.svg = rootGroup; + return svg; + }, + _ensureClipGroup: function SVGGraphics_ensureClipGroup() { + if (!this.current.clipGroup) { + var clipGroup = document.createElementNS(NS, 'svg:g'); + clipGroup.setAttributeNS(null, 'clip-path', this.current.activeClipUrl); + this.svg.appendChild(clipGroup); + this.current.clipGroup = clipGroup; + } + return this.current.clipGroup; + }, + _ensureTransformGroup: function SVGGraphics_ensureTransformGroup() { + if (!this.tgrp) { + this.tgrp = document.createElementNS(NS, 'svg:g'); + this.tgrp.setAttributeNS(null, 'transform', pm(this.transformMatrix)); + if (this.current.activeClipUrl) { + this._ensureClipGroup().appendChild(this.tgrp); + } else { + this.svg.appendChild(this.tgrp); + } + } + return this.tgrp; } - return this.tgrp; - } - }; - return SVGGraphics; -}(); + }; + return SVGGraphics; + }(); +} exports.SVGGraphics = SVGGraphics; \ No newline at end of file diff --git a/lib/display/text_layer.js b/lib/display/text_layer.js index 5db411ce7..d4b39fd22 100644 --- a/lib/display/text_layer.js +++ b/lib/display/text_layer.js @@ -14,12 +14,15 @@ */ 'use strict'; -var sharedUtil = require('../shared/util.js'); -var displayDOMUtils = require('./dom_utils.js'); -var Util = sharedUtil.Util; -var createPromiseCapability = sharedUtil.createPromiseCapability; -var CustomStyle = displayDOMUtils.CustomStyle; -var getDefaultSetting = displayDOMUtils.getDefaultSetting; +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.renderTextLayer = undefined; + +var _util = require('../shared/util'); + +var _dom_utils = require('./dom_utils'); + var renderTextLayer = function renderTextLayerClosure() { var MAX_TEXT_DIVS_TO_RENDER = 100000; var NonWhitespaceRegexp = /\S/; @@ -47,7 +50,7 @@ var renderTextLayer = function renderTextLayerClosure() { task._textDivProperties.set(textDiv, textDivProperties); return; } - var tx = Util.transform(task._viewport.transform, geom.transform); + var tx = _util.Util.transform(task._viewport.transform, geom.transform); var angle = Math.atan2(tx[1], tx[0]); var style = styles[geom.fontName]; if (style.vertical) { @@ -76,7 +79,7 @@ var renderTextLayer = function renderTextLayerClosure() { textDivProperties.style = styleBuf.join(''); textDiv.setAttribute('style', textDivProperties.style); textDiv.textContent = geom.str; - if (getDefaultSetting('pdfBug')) { + if ((0, _dom_utils.getDefaultSetting)('pdfBug')) { textDiv.dataset.fontName = geom.fontName; } if (angle !== 0) { @@ -102,7 +105,7 @@ var renderTextLayer = function renderTextLayerClosure() { var m, b; if (angle !== 0) { m = [angleCos, angleSin, -angleSin, angleCos, left, top]; - b = Util.getAxialAlignedBoundingBox([0, 0, divWidth, divHeight], m); + b = _util.Util.getAxialAlignedBoundingBox([0, 0, divWidth, divHeight], m); } else { b = [left, top, left + divWidth, top + divHeight]; } @@ -160,7 +163,7 @@ var renderTextLayer = function renderTextLayerClosure() { } if (transform !== '') { textDivProperties.originalTransform = transform; - CustomStyle.setProp('transform', textDiv, transform); + _dom_utils.CustomStyle.setProp('transform', textDiv, transform); } task._textDivProperties.set(textDiv, textDivProperties); } @@ -190,7 +193,7 @@ var renderTextLayer = function renderTextLayerClosure() { var points = [[0, 0], [0, b.size[1]], [b.size[0], 0], b.size]; var ts = new Float64Array(64); points.forEach(function (p, i) { - var t = Util.applyTransform(p, m); + var t = _util.Util.applyTransform(p, m); ts[i + 0] = c && (e.left - t[0]) / c; ts[i + 4] = s && (e.top - t[1]) / s; ts[i + 8] = c && (e.right - t[0]) / c; @@ -400,7 +403,7 @@ var renderTextLayer = function renderTextLayerClosure() { this._textDivProperties = new WeakMap(); this._renderingDone = false; this._canceled = false; - this._capability = createPromiseCapability(); + this._capability = (0, _util.createPromiseCapability)(); this._renderTimer = null; this._bounds = []; this._enhanceTextSelection = !!enhanceTextSelection; @@ -474,11 +477,11 @@ var renderTextLayer = function renderTextLayerClosure() { div.setAttribute('style', divProperties.style + padding); } if (transform !== '') { - CustomStyle.setProp('transform', div, transform); + _dom_utils.CustomStyle.setProp('transform', div, transform); } } else { div.style.padding = 0; - CustomStyle.setProp('transform', div, divProperties.originalTransform || ''); + _dom_utils.CustomStyle.setProp('transform', div, divProperties.originalTransform || ''); } } } diff --git a/lib/display/webgl.js b/lib/display/webgl.js index fd8df0e04..5978e8d94 100644 --- a/lib/display/webgl.js +++ b/lib/display/webgl.js @@ -14,10 +14,15 @@ */ 'use strict'; -var sharedUtil = require('../shared/util.js'); -var displayDOMUtils = require('./dom_utils.js'); -var shadow = sharedUtil.shadow; -var getDefaultSetting = displayDOMUtils.getDefaultSetting; +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.WebGLUtils = undefined; + +var _dom_utils = require('./dom_utils'); + +var _util = require('../shared/util'); + var WebGLUtils = function WebGLUtilsClosure() { function loadShader(gl, code, shaderType) { var shader = gl.createShader(shaderType); @@ -352,7 +357,7 @@ var WebGLUtils = function WebGLUtilsClosure() { } return { get isEnabled() { - if (getDefaultSetting('disableWebGL')) { + if ((0, _dom_utils.getDefaultSetting)('disableWebGL')) { return false; } var enabled = false; @@ -360,7 +365,7 @@ var WebGLUtils = function WebGLUtilsClosure() { generateGL(); enabled = !!currentGL; } catch (e) {} - return shadow(this, 'isEnabled', enabled); + return (0, _util.shadow)(this, 'isEnabled', enabled); }, composeSMask: composeSMask, drawFigures: drawFigures, diff --git a/lib/pdf.js b/lib/pdf.js index 0c925dfcf..404d41246 100644 --- a/lib/pdf.js +++ b/lib/pdf.js @@ -14,8 +14,8 @@ */ 'use strict'; -var pdfjsVersion = '1.8.213'; -var pdfjsBuild = 'c6e8ca86'; +var pdfjsVersion = '1.8.233'; +var pdfjsBuild = '19321937'; var pdfjsSharedUtil = require('./shared/util.js'); var pdfjsDisplayGlobal = require('./display/global.js'); var pdfjsDisplayAPI = require('./display/api.js'); diff --git a/lib/pdf.worker.js b/lib/pdf.worker.js index 31b196cb0..18e375a12 100644 --- a/lib/pdf.worker.js +++ b/lib/pdf.worker.js @@ -14,8 +14,8 @@ */ 'use strict'; -var pdfjsVersion = '1.8.213'; -var pdfjsBuild = 'c6e8ca86'; +var pdfjsVersion = '1.8.233'; +var pdfjsBuild = '19321937'; var pdfjsCoreWorker = require('./core/worker.js'); { require('./core/network.js'); diff --git a/lib/web/chromecom.js b/lib/web/chromecom.js index fc67e8c66..99c8bd438 100644 --- a/lib/web/chromecom.js +++ b/lib/web/chromecom.js @@ -21,6 +21,8 @@ exports.ChromeCom = undefined; var _app = require('./app'); +var _download_manager = require('./download_manager'); + var _overlay_manager = require('./overlay_manager'); var _pdfjs = require('./pdfjs'); @@ -272,5 +274,8 @@ ChromeExternalServices.initPassiveLoading = function (callbacks) { callbacks.onOpenWithURL(url, length, originalURL); }); }; +ChromeExternalServices.createDownloadManager = function () { + return new _download_manager.DownloadManager(); +}; _app.PDFViewerApplication.externalServices = ChromeExternalServices; exports.ChromeCom = ChromeCom; \ No newline at end of file diff --git a/lib/web/download_manager.js b/lib/web/download_manager.js index ab3eb8c2a..dc65d1cfc 100644 --- a/lib/web/download_manager.js +++ b/lib/web/download_manager.js @@ -21,8 +21,6 @@ exports.DownloadManager = undefined; var _pdfjs = require('./pdfjs'); -var _app = require('./app'); - ; function download(blobUrl, filename) { var a = document.createElement('a'); @@ -73,9 +71,4 @@ DownloadManager.prototype = { download(blobUrl, filename); } }; -var GenericExternalServices = Object.create(_app.DefaultExternalServices); -GenericExternalServices.createDownloadManager = function () { - return new DownloadManager(); -}; -_app.PDFViewerApplication.externalServices = GenericExternalServices; exports.DownloadManager = DownloadManager; \ No newline at end of file diff --git a/lib/web/genericcom.js b/lib/web/genericcom.js new file mode 100644 index 000000000..0374aa12d --- /dev/null +++ b/lib/web/genericcom.js @@ -0,0 +1,33 @@ +/* Copyright 2017 Mozilla Foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +'use strict'; + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.GenericCom = undefined; + +var _app = require('./app'); + +var _download_manager = require('./download_manager'); + +; +var GenericCom = {}; +var GenericExternalServices = Object.create(_app.DefaultExternalServices); +GenericExternalServices.createDownloadManager = function () { + return new _download_manager.DownloadManager(); +}; +_app.PDFViewerApplication.externalServices = GenericExternalServices; +exports.GenericCom = GenericCom; \ No newline at end of file diff --git a/lib/web/password_prompt.js b/lib/web/password_prompt.js index c4e935388..f02ab66a0 100644 --- a/lib/web/password_prompt.js +++ b/lib/web/password_prompt.js @@ -19,14 +19,22 @@ Object.defineProperty(exports, "__esModule", { }); exports.PasswordPrompt = undefined; +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + var _ui_utils = require('./ui_utils'); var _overlay_manager = require('./overlay_manager'); var _pdfjs = require('./pdfjs'); -var PasswordPrompt = function PasswordPromptClosure() { +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +var PasswordPrompt = function () { function PasswordPrompt(options) { + var _this = this; + + _classCallCheck(this, PasswordPrompt); + this.overlayName = options.overlayName; this.container = options.container; this.label = options.label; @@ -39,41 +47,53 @@ var PasswordPrompt = function PasswordPromptClosure() { this.cancelButton.addEventListener('click', this.close.bind(this)); this.input.addEventListener('keydown', function (e) { if (e.keyCode === 13) { - this.verify(); + _this.verify(); } - }.bind(this)); + }); _overlay_manager.OverlayManager.register(this.overlayName, this.container, this.close.bind(this), true); } - PasswordPrompt.prototype = { - open: function PasswordPrompt_open() { + + _createClass(PasswordPrompt, [{ + key: 'open', + value: function open() { + var _this2 = this; + _overlay_manager.OverlayManager.open(this.overlayName).then(function () { - this.input.type = 'password'; - this.input.focus(); + _this2.input.focus(); var promptString = _ui_utils.mozL10n.get('password_label', null, 'Enter the password to open this PDF file.'); - if (this.reason === _pdfjs.PasswordResponses.INCORRECT_PASSWORD) { + if (_this2.reason === _pdfjs.PasswordResponses.INCORRECT_PASSWORD) { promptString = _ui_utils.mozL10n.get('password_invalid', null, 'Invalid password. Please try again.'); } - this.label.textContent = promptString; - }.bind(this)); - }, - close: function PasswordPrompt_close() { + _this2.label.textContent = promptString; + }); + } + }, { + key: 'close', + value: function close() { + var _this3 = this; + _overlay_manager.OverlayManager.close(this.overlayName).then(function () { - this.input.value = ''; - this.input.type = ''; - }.bind(this)); - }, - verify: function PasswordPrompt_verify() { + _this3.input.value = ''; + }); + } + }, { + key: 'verify', + value: function verify() { var password = this.input.value; if (password && password.length > 0) { this.close(); return this.updateCallback(password); } - }, - setUpdateCallback: function PasswordPrompt_setUpdateCallback(updateCallback, reason) { + } + }, { + key: 'setUpdateCallback', + value: function setUpdateCallback(updateCallback, reason) { this.updateCallback = updateCallback; this.reason = reason; } - }; + }]); + return PasswordPrompt; }(); + exports.PasswordPrompt = PasswordPrompt; \ No newline at end of file diff --git a/lib/web/pdf_document_properties.js b/lib/web/pdf_document_properties.js index bea062fa9..44be118ac 100644 --- a/lib/web/pdf_document_properties.js +++ b/lib/web/pdf_document_properties.js @@ -19,14 +19,22 @@ Object.defineProperty(exports, "__esModule", { }); exports.PDFDocumentProperties = undefined; +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + var _ui_utils = require('./ui_utils'); +var _pdfjs = require('./pdfjs'); + var _overlay_manager = require('./overlay_manager'); -var PDFDocumentProperties = function PDFDocumentPropertiesClosure() { +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +var PDFDocumentProperties = function () { function PDFDocumentProperties(options) { - this.fields = options.fields; + _classCallCheck(this, PDFDocumentProperties); + this.overlayName = options.overlayName; + this.fields = options.fields; this.container = options.container; this.rawFileSize = 0; this.url = null; @@ -34,67 +42,83 @@ var PDFDocumentProperties = function PDFDocumentPropertiesClosure() { if (options.closeButton) { options.closeButton.addEventListener('click', this.close.bind(this)); } - this.dataAvailablePromise = new Promise(function (resolve) { - this.resolveDataAvailable = resolve; - }.bind(this)); + this._dataAvailableCapability = (0, _pdfjs.createPromiseCapability)(); _overlay_manager.OverlayManager.register(this.overlayName, this.container, this.close.bind(this)); } - PDFDocumentProperties.prototype = { - open: function PDFDocumentProperties_open() { - Promise.all([_overlay_manager.OverlayManager.open(this.overlayName), this.dataAvailablePromise]).then(function () { - this._getProperties(); - }.bind(this)); - }, - close: function PDFDocumentProperties_close() { + + _createClass(PDFDocumentProperties, [{ + key: 'open', + value: function open() { + var _this = this; + + Promise.all([_overlay_manager.OverlayManager.open(this.overlayName), this._dataAvailableCapability.promise]).then(function () { + _this._getProperties(); + }); + } + }, { + key: 'close', + value: function close() { _overlay_manager.OverlayManager.close(this.overlayName); - }, - setFileSize: function PDFDocumentProperties_setFileSize(fileSize) { + } + }, { + key: 'setFileSize', + value: function setFileSize(fileSize) { if (fileSize > 0) { this.rawFileSize = fileSize; } - }, - setDocumentAndUrl: function PDFDocumentProperties_setDocumentAndUrl(pdfDocument, url) { + } + }, { + key: 'setDocumentAndUrl', + value: function setDocumentAndUrl(pdfDocument, url) { this.pdfDocument = pdfDocument; this.url = url; - this.resolveDataAvailable(); - }, - _getProperties: function PDFDocumentProperties_getProperties() { + this._dataAvailableCapability.resolve(); + } + }, { + key: '_getProperties', + value: function _getProperties() { + var _this2 = this; + if (!_overlay_manager.OverlayManager.active) { return; } this.pdfDocument.getDownloadInfo().then(function (data) { - if (data.length === this.rawFileSize) { + if (data.length === _this2.rawFileSize) { return; } - this.setFileSize(data.length); - this._updateUI(this.fields['fileSize'], this._parseFileSize()); - }.bind(this)); + _this2.setFileSize(data.length); + _this2._updateUI(_this2.fields['fileSize'], _this2._parseFileSize()); + }); this.pdfDocument.getMetadata().then(function (data) { var content = { - 'fileName': (0, _ui_utils.getPDFFileNameFromURL)(this.url), - 'fileSize': this._parseFileSize(), + 'fileName': (0, _ui_utils.getPDFFileNameFromURL)(_this2.url), + 'fileSize': _this2._parseFileSize(), 'title': data.info.Title, 'author': data.info.Author, 'subject': data.info.Subject, 'keywords': data.info.Keywords, - 'creationDate': this._parseDate(data.info.CreationDate), - 'modificationDate': this._parseDate(data.info.ModDate), + 'creationDate': _this2._parseDate(data.info.CreationDate), + 'modificationDate': _this2._parseDate(data.info.ModDate), 'creator': data.info.Creator, 'producer': data.info.Producer, 'version': data.info.PDFFormatVersion, - 'pageCount': this.pdfDocument.numPages + 'pageCount': _this2.pdfDocument.numPages }; for (var identifier in content) { - this._updateUI(this.fields[identifier], content[identifier]); + _this2._updateUI(_this2.fields[identifier], content[identifier]); } - }.bind(this)); - }, - _updateUI: function PDFDocumentProperties_updateUI(field, content) { + }); + } + }, { + key: '_updateUI', + value: function _updateUI(field, content) { if (field && content !== undefined && content !== '') { field.textContent = content; } - }, - _parseFileSize: function PDFDocumentProperties_parseFileSize() { + } + }, { + key: '_parseFileSize', + value: function _parseFileSize() { var fileSize = this.rawFileSize, kb = fileSize / 1024; if (!kb) { @@ -109,8 +133,10 @@ var PDFDocumentProperties = function PDFDocumentPropertiesClosure() { size_mb: (+(kb / 1024).toPrecision(3)).toLocaleString(), size_b: fileSize.toLocaleString() }, '{{size_mb}} MB ({{size_b}} bytes)'); - }, - _parseDate: function PDFDocumentProperties_parseDate(inputDate) { + } + }, { + key: '_parseDate', + value: function _parseDate(inputDate) { var dateToParse = inputDate; if (dateToParse === undefined) { return ''; @@ -142,7 +168,9 @@ var PDFDocumentProperties = function PDFDocumentPropertiesClosure() { time: timeString }, '{{date}}, {{time}}'); } - }; + }]); + return PDFDocumentProperties; }(); + exports.PDFDocumentProperties = PDFDocumentProperties; \ No newline at end of file diff --git a/lib/web/pdf_find_bar.js b/lib/web/pdf_find_bar.js index 4fbc3ca7f..8cb00724b 100644 --- a/lib/web/pdf_find_bar.js +++ b/lib/web/pdf_find_bar.js @@ -19,12 +19,20 @@ Object.defineProperty(exports, "__esModule", { }); exports.PDFFindBar = undefined; +var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); + var _pdf_find_controller = require('./pdf_find_controller'); var _ui_utils = require('./ui_utils'); -var PDFFindBar = function PDFFindBarClosure() { +function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } + +var PDFFindBar = function () { function PDFFindBar(options) { + var _this = this; + + _classCallCheck(this, PDFFindBar); + this.opened = false; this.bar = options.bar || null; this.toggleButton = options.toggleButton || null; @@ -41,44 +49,47 @@ var PDFFindBar = function PDFFindBarClosure() { if (this.findController === null) { throw new Error('PDFFindBar cannot be used without a ' + 'PDFFindController instance.'); } - var self = this; this.toggleButton.addEventListener('click', function () { - self.toggle(); + _this.toggle(); }); this.findField.addEventListener('input', function () { - self.dispatchEvent(''); + _this.dispatchEvent(''); }); - this.bar.addEventListener('keydown', function (evt) { - switch (evt.keyCode) { + this.bar.addEventListener('keydown', function (e) { + switch (e.keyCode) { case 13: - if (evt.target === self.findField) { - self.dispatchEvent('again', evt.shiftKey); + if (e.target === _this.findField) { + _this.dispatchEvent('again', e.shiftKey); } break; case 27: - self.close(); + _this.close(); break; } }); this.findPreviousButton.addEventListener('click', function () { - self.dispatchEvent('again', true); + _this.dispatchEvent('again', true); }); this.findNextButton.addEventListener('click', function () { - self.dispatchEvent('again', false); + _this.dispatchEvent('again', false); }); this.highlightAll.addEventListener('click', function () { - self.dispatchEvent('highlightallchange'); + _this.dispatchEvent('highlightallchange'); }); this.caseSensitive.addEventListener('click', function () { - self.dispatchEvent('casesensitivitychange'); + _this.dispatchEvent('casesensitivitychange'); }); this.eventBus.on('resize', this._adjustWidth.bind(this)); } - PDFFindBar.prototype = { - reset: function PDFFindBar_reset() { + + _createClass(PDFFindBar, [{ + key: 'reset', + value: function reset() { this.updateUIState(); - }, - dispatchEvent: function PDFFindBar_dispatchEvent(type, findPrev) { + } + }, { + key: 'dispatchEvent', + value: function dispatchEvent(type, findPrev) { this.eventBus.dispatch('find', { source: this, type: type, @@ -88,8 +99,10 @@ var PDFFindBar = function PDFFindBarClosure() { highlightAll: this.highlightAll.checked, findPrevious: findPrev }); - }, - updateUIState: function PDFFindBar_updateUIState(state, previous, matchCount) { + } + }, { + key: 'updateUIState', + value: function updateUIState(state, previous, matchCount) { var notFound = false; var findMsg = ''; var status = ''; @@ -120,8 +133,10 @@ var PDFFindBar = function PDFFindBarClosure() { this.findMsg.textContent = findMsg; this.updateResultsCount(matchCount); this._adjustWidth(); - }, - updateResultsCount: function updateResultsCount(matchCount) { + } + }, { + key: 'updateResultsCount', + value: function updateResultsCount(matchCount) { if (!this.findResultsCount) { return; } @@ -131,8 +146,10 @@ var PDFFindBar = function PDFFindBarClosure() { } this.findResultsCount.textContent = matchCount.toLocaleString(); this.findResultsCount.classList.remove('hidden'); - }, - open: function PDFFindBar_open() { + } + }, { + key: 'open', + value: function open() { if (!this.opened) { this.opened = true; this.toggleButton.classList.add('toggled'); @@ -141,8 +158,10 @@ var PDFFindBar = function PDFFindBarClosure() { this.findField.select(); this.findField.focus(); this._adjustWidth(); - }, - close: function PDFFindBar_close() { + } + }, { + key: 'close', + value: function close() { if (!this.opened) { return; } @@ -150,15 +169,19 @@ var PDFFindBar = function PDFFindBarClosure() { this.toggleButton.classList.remove('toggled'); this.bar.classList.add('hidden'); this.findController.active = false; - }, - toggle: function PDFFindBar_toggle() { + } + }, { + key: 'toggle', + value: function toggle() { if (this.opened) { this.close(); } else { this.open(); } - }, - _adjustWidth: function PDFFindBar_adjustWidth() { + } + }, { + key: '_adjustWidth', + value: function _adjustWidth() { if (!this.opened) { return; } @@ -169,7 +192,9 @@ var PDFFindBar = function PDFFindBarClosure() { this.bar.classList.add('wrapContainers'); } } - }; + }]); + return PDFFindBar; }(); + exports.PDFFindBar = PDFFindBar; \ No newline at end of file diff --git a/lib/web/pdf_find_controller.js b/lib/web/pdf_find_controller.js index 49f29c3f2..3dcc88cd9 100644 --- a/lib/web/pdf_find_controller.js +++ b/lib/web/pdf_find_controller.js @@ -53,6 +53,8 @@ var PDFFindController = function PDFFindControllerClosure() { } PDFFindController.prototype = { reset: function PDFFindController_reset() { + var _this = this; + this.startedTextExtraction = false; this.extractTextPromises = []; this.pendingFindMatches = Object.create(null); @@ -74,9 +76,9 @@ var PDFFindController = function PDFFindControllerClosure() { this.state = null; this.dirtyMatch = false; this.findTimeout = null; - this.firstPagePromise = new Promise(function (resolve) { - this.resolveFirstPage = resolve; - }.bind(this)); + this._firstPagePromise = new Promise(function (resolve) { + _this.resolveFirstPage = resolve; + }); }, normalize: function PDFFindController_normalize(text) { return text.replace(this.normalizationRegex, function (ch) { @@ -223,7 +225,7 @@ var PDFFindController = function PDFFindControllerClosure() { } this.state = state; this.updateUIState(FindStates.FIND_PENDING); - this.firstPagePromise.then(function () { + this._firstPagePromise.then(function () { this.extractText(); clearTimeout(this.findTimeout); if (cmd === 'find') { diff --git a/lib/web/pdf_history.js b/lib/web/pdf_history.js index 9c6f35b5e..a6aa5a10f 100644 --- a/lib/web/pdf_history.js +++ b/lib/web/pdf_history.js @@ -23,7 +23,7 @@ var _dom_events = require('./dom_events'); function PDFHistory(options) { this.linkService = options.linkService; - this.eventBus = options.eventBus || _dom_events.domEvents.getGlobalEventBus(); + this.eventBus = options.eventBus || (0, _dom_events.getGlobalEventBus)(); this.initialized = false; this.initialDestination = null; this.initialBookmark = null; diff --git a/lib/web/pdf_link_service.js b/lib/web/pdf_link_service.js index 6eb8ac496..756ada393 100644 --- a/lib/web/pdf_link_service.js +++ b/lib/web/pdf_link_service.js @@ -32,7 +32,7 @@ function isPageNumber(str) { var PDFLinkService = function PDFLinkServiceClosure() { function PDFLinkService(options) { options = options || {}; - this.eventBus = options.eventBus || _dom_events.domEvents.getGlobalEventBus(); + this.eventBus = options.eventBus || (0, _dom_events.getGlobalEventBus)(); this.baseUrl = null; this.pdfDocument = null; this.pdfViewer = null; diff --git a/lib/web/pdf_page_view.js b/lib/web/pdf_page_view.js index eabfdb9ca..c159f1181 100644 --- a/lib/web/pdf_page_view.js +++ b/lib/web/pdf_page_view.js @@ -49,7 +49,7 @@ var PDFPageView = function PDFPageViewClosure() { this.hasRestrictedScaling = false; this.enhanceTextSelection = enhanceTextSelection; this.renderInteractiveForms = renderInteractiveForms; - this.eventBus = options.eventBus || _dom_events.domEvents.getGlobalEventBus(); + this.eventBus = options.eventBus || (0, _dom_events.getGlobalEventBus)(); this.renderingQueue = renderingQueue; this.textLayerFactory = textLayerFactory; this.annotationLayerFactory = annotationLayerFactory; @@ -367,13 +367,9 @@ var PDFPageView = function PDFPageViewClosure() { return resultPromise; }, paintOnCanvas: function paintOnCanvas(canvasWrapper) { - var resolveRenderPromise, rejectRenderPromise; - var promise = new Promise(function (resolve, reject) { - resolveRenderPromise = resolve; - rejectRenderPromise = reject; - }); + var renderCapability = (0, _pdfjs.createPromiseCapability)(); var result = { - promise: promise, + promise: renderCapability.promise, onRenderContinue: function onRenderContinue(cont) { cont(); }, @@ -441,10 +437,10 @@ var PDFPageView = function PDFPageViewClosure() { }; renderTask.promise.then(function pdfPageRenderCallback() { showCanvas(); - resolveRenderPromise(undefined); + renderCapability.resolve(undefined); }, function pdfPageRenderError(error) { showCanvas(); - rejectRenderPromise(error); + renderCapability.reject(error); }); return result; }, diff --git a/lib/web/pdf_thumbnail_view.js b/lib/web/pdf_thumbnail_view.js index c98fc2b4a..4c1216ec5 100644 --- a/lib/web/pdf_thumbnail_view.js +++ b/lib/web/pdf_thumbnail_view.js @@ -19,10 +19,10 @@ Object.defineProperty(exports, "__esModule", { }); exports.PDFThumbnailView = undefined; -var _ui_utils = require('./ui_utils'); - var _pdfjs = require('./pdfjs'); +var _ui_utils = require('./ui_utils'); + var _pdf_rendering_queue = require('./pdf_rendering_queue'); var THUMBNAIL_WIDTH = 98; @@ -201,26 +201,22 @@ var PDFThumbnailView = function PDFThumbnailViewClosure() { return Promise.resolve(undefined); } this.renderingState = _pdf_rendering_queue.RenderingStates.RUNNING; - var resolveRenderPromise, rejectRenderPromise; - var promise = new Promise(function (resolve, reject) { - resolveRenderPromise = resolve; - rejectRenderPromise = reject; - }); + var renderCapability = (0, _pdfjs.createPromiseCapability)(); var self = this; function thumbnailDrawCallback(error) { if (renderTask === self.renderTask) { self.renderTask = null; } if (error === 'cancelled' || error instanceof _pdfjs.RenderingCancelledException) { - resolveRenderPromise(undefined); + renderCapability.resolve(undefined); return; } self.renderingState = _pdf_rendering_queue.RenderingStates.FINISHED; self._convertCanvasToImage(); if (!error) { - resolveRenderPromise(undefined); + renderCapability.resolve(undefined); } else { - rejectRenderPromise(error); + renderCapability.reject(error); } } var ctx = this._getPageDrawContext(); @@ -247,7 +243,7 @@ var PDFThumbnailView = function PDFThumbnailViewClosure() { }, function pdfPageRenderError(error) { thumbnailDrawCallback(error); }); - return promise; + return renderCapability.promise; }, setImage: function PDFThumbnailView_setImage(pageView) { if (this.renderingState !== _pdf_rendering_queue.RenderingStates.INITIAL) { diff --git a/lib/web/pdf_viewer.js b/lib/web/pdf_viewer.js index 6387b0fae..e4c9b2821 100644 --- a/lib/web/pdf_viewer.js +++ b/lib/web/pdf_viewer.js @@ -19,6 +19,8 @@ Object.defineProperty(exports, "__esModule", { }); exports.PDFViewer = exports.PresentationModeState = undefined; +var _pdfjs = require('./pdfjs'); + var _ui_utils = require('./ui_utils'); var _pdf_rendering_queue = require('./pdf_rendering_queue'); @@ -27,8 +29,6 @@ var _annotation_layer_builder = require('./annotation_layer_builder'); var _dom_events = require('./dom_events'); -var _pdfjs = require('./pdfjs'); - var _pdf_page_view = require('./pdf_page_view'); var _pdf_link_service = require('./pdf_link_service'); @@ -77,7 +77,7 @@ var PDFViewer = function pdfViewer() { function PDFViewer(options) { this.container = options.container; this.viewer = options.viewer || options.container.firstElementChild; - this.eventBus = options.eventBus || _dom_events.domEvents.getGlobalEventBus(); + this.eventBus = options.eventBus || (0, _dom_events.getGlobalEventBus)(); this.linkService = options.linkService || new _pdf_link_service.SimpleLinkService(); this.downloadManager = options.downloadManager || null; this.removePageBorders = options.removePageBorders || false; @@ -204,6 +204,8 @@ var PDFViewer = function pdfViewer() { } }, setDocument: function setDocument(pdfDocument) { + var _this = this; + if (this.pdfDocument) { this._cancelRendering(); this._resetView(); @@ -213,91 +215,82 @@ var PDFViewer = function pdfViewer() { return; } var pagesCount = pdfDocument.numPages; - var self = this; - var resolvePagesPromise; - var pagesPromise = new Promise(function (resolve) { - resolvePagesPromise = resolve; - }); - this.pagesPromise = pagesPromise; - pagesPromise.then(function () { - self._pageViewsReady = true; - self.eventBus.dispatch('pagesloaded', { - source: self, + var pagesCapability = (0, _pdfjs.createPromiseCapability)(); + this.pagesPromise = pagesCapability.promise; + pagesCapability.promise.then(function () { + _this._pageViewsReady = true; + _this.eventBus.dispatch('pagesloaded', { + source: _this, pagesCount: pagesCount }); }); var isOnePageRenderedResolved = false; - var resolveOnePageRendered = null; - var onePageRendered = new Promise(function (resolve) { - resolveOnePageRendered = resolve; - }); - this.onePageRendered = onePageRendered; + var onePageRenderedCapability = (0, _pdfjs.createPromiseCapability)(); + this.onePageRendered = onePageRenderedCapability.promise; var bindOnAfterAndBeforeDraw = function bindOnAfterAndBeforeDraw(pageView) { - pageView.onBeforeDraw = function pdfViewLoadOnBeforeDraw() { - self._buffer.push(this); + pageView.onBeforeDraw = function () { + _this._buffer.push(pageView); }; - pageView.onAfterDraw = function pdfViewLoadOnAfterDraw() { + pageView.onAfterDraw = function () { if (!isOnePageRenderedResolved) { isOnePageRenderedResolved = true; - resolveOnePageRendered(); + onePageRenderedCapability.resolve(); } }; }; var firstPagePromise = pdfDocument.getPage(1); this.firstPagePromise = firstPagePromise; return firstPagePromise.then(function (pdfPage) { - var scale = this.currentScale; + var scale = _this.currentScale; var viewport = pdfPage.getViewport(scale * _ui_utils.CSS_UNITS); for (var pageNum = 1; pageNum <= pagesCount; ++pageNum) { var textLayerFactory = null; if (!_pdfjs.PDFJS.disableTextLayer) { - textLayerFactory = this; + textLayerFactory = _this; } var pageView = new _pdf_page_view.PDFPageView({ - container: this.viewer, - eventBus: this.eventBus, + container: _this.viewer, + eventBus: _this.eventBus, id: pageNum, scale: scale, defaultViewport: viewport.clone(), - renderingQueue: this.renderingQueue, + renderingQueue: _this.renderingQueue, textLayerFactory: textLayerFactory, - annotationLayerFactory: this, - enhanceTextSelection: this.enhanceTextSelection, - renderInteractiveForms: this.renderInteractiveForms, - renderer: this.renderer + annotationLayerFactory: _this, + enhanceTextSelection: _this.enhanceTextSelection, + renderInteractiveForms: _this.renderInteractiveForms, + renderer: _this.renderer }); bindOnAfterAndBeforeDraw(pageView); - this._pages.push(pageView); + _this._pages.push(pageView); } - var linkService = this.linkService; - onePageRendered.then(function () { - if (!_pdfjs.PDFJS.disableAutoFetch) { - var getPagesLeft = pagesCount; - for (var pageNum = 1; pageNum <= pagesCount; ++pageNum) { - pdfDocument.getPage(pageNum).then(function (pageNum, pdfPage) { - var pageView = self._pages[pageNum - 1]; - if (!pageView.pdfPage) { - pageView.setPdfPage(pdfPage); - } - linkService.cachePageRef(pageNum, pdfPage.ref); - getPagesLeft--; - if (!getPagesLeft) { - resolvePagesPromise(); - } - }.bind(null, pageNum)); - } - } else { - resolvePagesPromise(); + onePageRenderedCapability.promise.then(function () { + if (_pdfjs.PDFJS.disableAutoFetch) { + pagesCapability.resolve(); + return; + } + var getPagesLeft = pagesCount; + for (var pageNum = 1; pageNum <= pagesCount; ++pageNum) { + pdfDocument.getPage(pageNum).then(function (pageNum, pdfPage) { + var pageView = this._pages[pageNum - 1]; + if (!pageView.pdfPage) { + pageView.setPdfPage(pdfPage); + } + this.linkService.cachePageRef(pageNum, pdfPage.ref); + if (--getPagesLeft === 0) { + pagesCapability.resolve(); + } + }.bind(_this, pageNum)); } }); - self.eventBus.dispatch('pagesinit', { source: self }); - if (this.defaultRenderingQueue) { - this.update(); + _this.eventBus.dispatch('pagesinit', { source: _this }); + if (_this.defaultRenderingQueue) { + _this.update(); } - if (this.findController) { - this.findController.resolveFirstPage(); + if (_this.findController) { + _this.findController.resolveFirstPage(); } - }.bind(this)); + }); }, setPageLabels: function PDFViewer_setPageLabels(labels) { if (!this.pdfDocument) { @@ -624,6 +617,8 @@ var PDFViewer = function pdfViewer() { } }, _ensurePdfPageLoaded: function _ensurePdfPageLoaded(pageView) { + var _this2 = this; + if (pageView.pdfPage) { return Promise.resolve(pageView.pdfPage); } @@ -632,20 +627,24 @@ var PDFViewer = function pdfViewer() { return this._pagesRequests[pageNumber]; } var promise = this.pdfDocument.getPage(pageNumber).then(function (pdfPage) { - pageView.setPdfPage(pdfPage); - this._pagesRequests[pageNumber] = null; + if (!pageView.pdfPage) { + pageView.setPdfPage(pdfPage); + } + _this2._pagesRequests[pageNumber] = null; return pdfPage; - }.bind(this)); + }); this._pagesRequests[pageNumber] = promise; return promise; }, forceRendering: function forceRendering(currentlyVisiblePages) { + var _this3 = this; + var visiblePages = currentlyVisiblePages || this._getVisiblePages(); var pageView = this.renderingQueue.getHighestPriority(visiblePages, this._pages, this.scroll.down); if (pageView) { this._ensurePdfPageLoaded(pageView).then(function () { - this.renderingQueue.renderView(pageView); - }.bind(this)); + _this3.renderingQueue.renderView(pageView); + }); return true; } return false; diff --git a/lib/web/text_layer_builder.js b/lib/web/text_layer_builder.js index 5fd9b6c81..159fa47f9 100644 --- a/lib/web/text_layer_builder.js +++ b/lib/web/text_layer_builder.js @@ -27,7 +27,7 @@ var EXPAND_DIVS_TIMEOUT = 300; var TextLayerBuilder = function TextLayerBuilderClosure() { function TextLayerBuilder(options) { this.textLayerDiv = options.textLayerDiv; - this.eventBus = options.eventBus || _dom_events.domEvents.getGlobalEventBus(); + this.eventBus = options.eventBus || (0, _dom_events.getGlobalEventBus)(); this.textContent = null; this.renderingDone = false; this.pageIdx = options.pageIndex; diff --git a/package.json b/package.json index 9958439a7..f227558e3 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "pdfjs-dist", - "version": "1.8.213", + "version": "1.8.233", "main": "build/pdf.js", "description": "Generic build of Mozilla's PDF.js library.", "keywords": [ diff --git a/web/pdf_viewer.js b/web/pdf_viewer.js index 92afddf0b..21340493a 100644 --- a/web/pdf_viewer.js +++ b/web/pdf_viewer.js @@ -88,7 +88,7 @@ return /******/ (function(modules) { // webpackBootstrap /******/ __w_pdfjs_require__.p = ""; /******/ /******/ // Load entry module and return exports -/******/ return __w_pdfjs_require__(__w_pdfjs_require__.s = 26); +/******/ return __w_pdfjs_require__(__w_pdfjs_require__.s = 12); /******/ }) /************************************************************************/ /******/ ([ @@ -98,12 +98,33 @@ return /******/ (function(modules) { // webpackBootstrap "use strict"; +{ + var pdfjsLib; + if (typeof __pdfjsdev_webpack__ === 'undefined') { + if (typeof window !== 'undefined' && window['pdfjs-dist/build/pdf']) { + pdfjsLib = window['pdfjs-dist/build/pdf']; + } else if (typeof require === 'function') { + pdfjsLib = require('../build/pdf.js'); + } else { + throw new Error('Neither `require` nor `window` found'); + } + } + module.exports = pdfjsLib; +} + +/***/ }), +/* 1 */ +/***/ (function(module, exports, __w_pdfjs_require__) { + +"use strict"; + + Object.defineProperty(exports, "__esModule", { value: true }); exports.localized = exports.animationStarted = exports.normalizeWheelEventDelta = exports.binarySearchFirstItem = exports.watchScroll = exports.scrollIntoView = exports.getOutputScale = exports.approximateFraction = exports.roundToDivide = exports.getVisibleElements = exports.parseQueryString = exports.noContextMenuHandler = exports.getPDFFileNameFromURL = exports.ProgressBar = exports.EventBus = exports.mozL10n = exports.RendererType = exports.VERTICAL_PADDING = exports.SCROLLBAR_PADDING = exports.MAX_AUTO_SCALE = exports.UNKNOWN_SCALE = exports.MAX_SCALE = exports.MIN_SCALE = exports.DEFAULT_SCALE = exports.DEFAULT_SCALE_VALUE = exports.CSS_UNITS = undefined; -var _pdfjs = __w_pdfjs_require__(1); +var _pdfjs = __w_pdfjs_require__(0); var CSS_UNITS = 96.0 / 72.0; var DEFAULT_SCALE_VALUE = 'auto'; @@ -500,27 +521,6 @@ exports.normalizeWheelEventDelta = normalizeWheelEventDelta; exports.animationStarted = animationStarted; exports.localized = localized; -/***/ }), -/* 1 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -{ - var pdfjsLib; - if (typeof __pdfjsdev_webpack__ === 'undefined') { - if (typeof window !== 'undefined' && window['pdfjs-dist/build/pdf']) { - pdfjsLib = window['pdfjs-dist/build/pdf']; - } else if (typeof require === 'function') { - pdfjsLib = require('../build/pdf.js'); - } else { - throw new Error('Neither `require` nor `window` found'); - } - } - module.exports = pdfjsLib; -} - /***/ }), /* 2 */ /***/ (function(module, exports, __w_pdfjs_require__) { @@ -533,7 +533,7 @@ Object.defineProperty(exports, "__esModule", { }); exports.getGlobalEventBus = exports.attachDOMEventsToEventBus = undefined; -var _ui_utils = __w_pdfjs_require__(0); +var _ui_utils = __w_pdfjs_require__(1); function attachDOMEventsToEventBus(eventBus) { eventBus.on('documentload', function () { @@ -650,119 +650,6 @@ exports.getGlobalEventBus = getGlobalEventBus; "use strict"; -Object.defineProperty(exports, "__esModule", { - value: true -}); -var CLEANUP_TIMEOUT = 30000; -var RenderingStates = { - INITIAL: 0, - RUNNING: 1, - PAUSED: 2, - FINISHED: 3 -}; -var PDFRenderingQueue = function PDFRenderingQueueClosure() { - function PDFRenderingQueue() { - this.pdfViewer = null; - this.pdfThumbnailViewer = null; - this.onIdle = null; - this.highestPriorityPage = null; - this.idleTimeout = null; - this.printing = false; - this.isThumbnailViewEnabled = false; - } - PDFRenderingQueue.prototype = { - setViewer: function PDFRenderingQueue_setViewer(pdfViewer) { - this.pdfViewer = pdfViewer; - }, - setThumbnailViewer: function PDFRenderingQueue_setThumbnailViewer(pdfThumbnailViewer) { - this.pdfThumbnailViewer = pdfThumbnailViewer; - }, - isHighestPriority: function PDFRenderingQueue_isHighestPriority(view) { - return this.highestPriorityPage === view.renderingId; - }, - renderHighestPriority: function PDFRenderingQueue_renderHighestPriority(currentlyVisiblePages) { - if (this.idleTimeout) { - clearTimeout(this.idleTimeout); - this.idleTimeout = null; - } - if (this.pdfViewer.forceRendering(currentlyVisiblePages)) { - return; - } - if (this.pdfThumbnailViewer && this.isThumbnailViewEnabled) { - if (this.pdfThumbnailViewer.forceRendering()) { - return; - } - } - if (this.printing) { - return; - } - if (this.onIdle) { - this.idleTimeout = setTimeout(this.onIdle.bind(this), CLEANUP_TIMEOUT); - } - }, - getHighestPriority: function PDFRenderingQueue_getHighestPriority(visible, views, scrolledDown) { - var visibleViews = visible.views; - var numVisible = visibleViews.length; - if (numVisible === 0) { - return false; - } - for (var i = 0; i < numVisible; ++i) { - var view = visibleViews[i].view; - if (!this.isViewFinished(view)) { - return view; - } - } - if (scrolledDown) { - var nextPageIndex = visible.last.id; - if (views[nextPageIndex] && !this.isViewFinished(views[nextPageIndex])) { - return views[nextPageIndex]; - } - } else { - var previousPageIndex = visible.first.id - 2; - if (views[previousPageIndex] && !this.isViewFinished(views[previousPageIndex])) { - return views[previousPageIndex]; - } - } - return null; - }, - isViewFinished: function PDFRenderingQueue_isViewFinished(view) { - return view.renderingState === RenderingStates.FINISHED; - }, - renderView: function PDFRenderingQueue_renderView(view) { - var state = view.renderingState; - switch (state) { - case RenderingStates.FINISHED: - return false; - case RenderingStates.PAUSED: - this.highestPriorityPage = view.renderingId; - view.resume(); - break; - case RenderingStates.RUNNING: - this.highestPriorityPage = view.renderingId; - break; - case RenderingStates.INITIAL: - this.highestPriorityPage = view.renderingId; - var continueRendering = function () { - this.renderHighestPriority(); - }.bind(this); - view.draw().then(continueRendering, continueRendering); - break; - } - return true; - } - }; - return PDFRenderingQueue; -}(); -exports.RenderingStates = RenderingStates; -exports.PDFRenderingQueue = PDFRenderingQueue; - -/***/ }), -/* 4 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - Object.defineProperty(exports, "__esModule", { value: true }); @@ -772,7 +659,7 @@ var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol var _dom_events = __w_pdfjs_require__(2); -var _ui_utils = __w_pdfjs_require__(0); +var _ui_utils = __w_pdfjs_require__(1); var PageNumberRegExp = /^\d+$/; function isPageNumber(str) { @@ -781,7 +668,7 @@ function isPageNumber(str) { var PDFLinkService = function PDFLinkServiceClosure() { function PDFLinkService(options) { options = options || {}; - this.eventBus = options.eventBus || _dom_events.domEvents.getGlobalEventBus(); + this.eventBus = options.eventBus || (0, _dom_events.getGlobalEventBus)(); this.baseUrl = null; this.pdfDocument = null; this.pdfViewer = null; @@ -1087,7 +974,7 @@ exports.PDFLinkService = PDFLinkService; exports.SimpleLinkService = SimpleLinkService; /***/ }), -/* 5 */ +/* 4 */ /***/ (function(module, exports, __w_pdfjs_require__) { "use strict"; @@ -1096,463 +983,567 @@ exports.SimpleLinkService = SimpleLinkService; Object.defineProperty(exports, "__esModule", { value: true }); -exports.PDFFindController = exports.FindStates = undefined; +exports.DefaultAnnotationLayerFactory = exports.AnnotationLayerBuilder = undefined; -var _ui_utils = __w_pdfjs_require__(0); +var _pdfjs = __w_pdfjs_require__(0); -var FindStates = { - FIND_FOUND: 0, - FIND_NOTFOUND: 1, - FIND_WRAPPED: 2, - FIND_PENDING: 3 -}; -var FIND_SCROLL_OFFSET_TOP = -50; -var FIND_SCROLL_OFFSET_LEFT = -400; -var CHARACTERS_TO_NORMALIZE = { - '\u2018': '\'', - '\u2019': '\'', - '\u201A': '\'', - '\u201B': '\'', - '\u201C': '"', - '\u201D': '"', - '\u201E': '"', - '\u201F': '"', - '\xBC': '1/4', - '\xBD': '1/2', - '\xBE': '3/4' -}; -var PDFFindController = function PDFFindControllerClosure() { - function PDFFindController(options) { - this.pdfViewer = options.pdfViewer || null; - this.onUpdateResultsCount = null; - this.onUpdateState = null; - this.reset(); - var replace = Object.keys(CHARACTERS_TO_NORMALIZE).join(''); - this.normalizationRegex = new RegExp('[' + replace + ']', 'g'); +var _ui_utils = __w_pdfjs_require__(1); + +var _pdf_link_service = __w_pdfjs_require__(3); + +var AnnotationLayerBuilder = function AnnotationLayerBuilderClosure() { + function AnnotationLayerBuilder(options) { + this.pageDiv = options.pageDiv; + this.pdfPage = options.pdfPage; + this.renderInteractiveForms = options.renderInteractiveForms; + this.linkService = options.linkService; + this.downloadManager = options.downloadManager; + this.div = null; } - PDFFindController.prototype = { - reset: function PDFFindController_reset() { - this.startedTextExtraction = false; - this.extractTextPromises = []; - this.pendingFindMatches = Object.create(null); - this.active = false; - this.pageContents = []; - this.pageMatches = []; - this.pageMatchesLength = null; - this.matchCount = 0; - this.selected = { - pageIdx: -1, - matchIdx: -1 - }; - this.offset = { - pageIdx: null, - matchIdx: null - }; - this.pagesToSearch = null; - this.resumePageIdx = null; - this.state = null; - this.dirtyMatch = false; - this.findTimeout = null; - this.firstPagePromise = new Promise(function (resolve) { - this.resolveFirstPage = resolve; - }.bind(this)); - }, - normalize: function PDFFindController_normalize(text) { - return text.replace(this.normalizationRegex, function (ch) { - return CHARACTERS_TO_NORMALIZE[ch]; + AnnotationLayerBuilder.prototype = { + render: function AnnotationLayerBuilder_render(viewport, intent) { + var self = this; + var parameters = { intent: intent === undefined ? 'display' : intent }; + this.pdfPage.getAnnotations(parameters).then(function (annotations) { + viewport = viewport.clone({ dontFlip: true }); + parameters = { + viewport: viewport, + div: self.div, + annotations: annotations, + page: self.pdfPage, + renderInteractiveForms: self.renderInteractiveForms, + linkService: self.linkService, + downloadManager: self.downloadManager + }; + if (self.div) { + _pdfjs.AnnotationLayer.update(parameters); + } else { + if (annotations.length === 0) { + return; + } + self.div = document.createElement('div'); + self.div.className = 'annotationLayer'; + self.pageDiv.appendChild(self.div); + parameters.div = self.div; + _pdfjs.AnnotationLayer.render(parameters); + if (typeof _ui_utils.mozL10n !== 'undefined') { + _ui_utils.mozL10n.translate(self.div); + } + } }); }, - _prepareMatches: function PDFFindController_prepareMatches(matchesWithLength, matches, matchesLength) { - function isSubTerm(matchesWithLength, currentIndex) { - var currentElem, prevElem, nextElem; - currentElem = matchesWithLength[currentIndex]; - nextElem = matchesWithLength[currentIndex + 1]; - if (currentIndex < matchesWithLength.length - 1 && currentElem.match === nextElem.match) { - currentElem.skipped = true; - return true; - } - for (var i = currentIndex - 1; i >= 0; i--) { - prevElem = matchesWithLength[i]; - if (prevElem.skipped) { - continue; - } - if (prevElem.match + prevElem.matchLength < currentElem.match) { - break; - } - if (prevElem.match + prevElem.matchLength >= currentElem.match + currentElem.matchLength) { - currentElem.skipped = true; - return true; - } - } - return false; - } - var i, len; - matchesWithLength.sort(function (a, b) { - return a.match === b.match ? a.matchLength - b.matchLength : a.match - b.match; - }); - for (i = 0, len = matchesWithLength.length; i < len; i++) { - if (isSubTerm(matchesWithLength, i)) { - continue; - } - matches.push(matchesWithLength[i].match); - matchesLength.push(matchesWithLength[i].matchLength); + hide: function AnnotationLayerBuilder_hide() { + if (!this.div) { + return; } + this.div.setAttribute('hidden', 'true'); + } + }; + return AnnotationLayerBuilder; +}(); +function DefaultAnnotationLayerFactory() {} +DefaultAnnotationLayerFactory.prototype = { + createAnnotationLayerBuilder: function createAnnotationLayerBuilder(pageDiv, pdfPage, renderInteractiveForms) { + return new AnnotationLayerBuilder({ + pageDiv: pageDiv, + pdfPage: pdfPage, + renderInteractiveForms: renderInteractiveForms, + linkService: new _pdf_link_service.SimpleLinkService() + }); + } +}; +exports.AnnotationLayerBuilder = AnnotationLayerBuilder; +exports.DefaultAnnotationLayerFactory = DefaultAnnotationLayerFactory; + +/***/ }), +/* 5 */ +/***/ (function(module, exports, __w_pdfjs_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +exports.PDFPageView = undefined; + +var _ui_utils = __w_pdfjs_require__(1); + +var _pdfjs = __w_pdfjs_require__(0); + +var _dom_events = __w_pdfjs_require__(2); + +var _pdf_rendering_queue = __w_pdfjs_require__(7); + +var TEXT_LAYER_RENDER_DELAY = 200; +var PDFPageView = function PDFPageViewClosure() { + function PDFPageView(options) { + var container = options.container; + var id = options.id; + var scale = options.scale; + var defaultViewport = options.defaultViewport; + var renderingQueue = options.renderingQueue; + var textLayerFactory = options.textLayerFactory; + var annotationLayerFactory = options.annotationLayerFactory; + var enhanceTextSelection = options.enhanceTextSelection || false; + var renderInteractiveForms = options.renderInteractiveForms || false; + this.id = id; + this.renderingId = 'page' + id; + this.pageLabel = null; + this.rotation = 0; + this.scale = scale || _ui_utils.DEFAULT_SCALE; + this.viewport = defaultViewport; + this.pdfPageRotate = defaultViewport.rotation; + this.hasRestrictedScaling = false; + this.enhanceTextSelection = enhanceTextSelection; + this.renderInteractiveForms = renderInteractiveForms; + this.eventBus = options.eventBus || (0, _dom_events.getGlobalEventBus)(); + this.renderingQueue = renderingQueue; + this.textLayerFactory = textLayerFactory; + this.annotationLayerFactory = annotationLayerFactory; + this.renderer = options.renderer || _ui_utils.RendererType.CANVAS; + this.paintTask = null; + this.paintedViewportMap = new WeakMap(); + this.renderingState = _pdf_rendering_queue.RenderingStates.INITIAL; + this.resume = null; + this.error = null; + this.onBeforeDraw = null; + this.onAfterDraw = null; + this.textLayer = null; + this.zoomLayer = null; + this.annotationLayer = null; + var div = document.createElement('div'); + div.className = 'page'; + div.style.width = Math.floor(this.viewport.width) + 'px'; + div.style.height = Math.floor(this.viewport.height) + 'px'; + div.setAttribute('data-page-number', this.id); + this.div = div; + container.appendChild(div); + } + PDFPageView.prototype = { + setPdfPage: function PDFPageView_setPdfPage(pdfPage) { + this.pdfPage = pdfPage; + this.pdfPageRotate = pdfPage.rotate; + var totalRotation = (this.rotation + this.pdfPageRotate) % 360; + this.viewport = pdfPage.getViewport(this.scale * _ui_utils.CSS_UNITS, totalRotation); + this.stats = pdfPage.stats; + this.reset(); }, - calcFindPhraseMatch: function PDFFindController_calcFindPhraseMatch(query, pageIndex, pageContent) { - var matches = []; - var queryLen = query.length; - var matchIdx = -queryLen; - while (true) { - matchIdx = pageContent.indexOf(query, matchIdx + queryLen); - if (matchIdx === -1) { - break; - } - matches.push(matchIdx); + destroy: function PDFPageView_destroy() { + this.reset(); + if (this.pdfPage) { + this.pdfPage.cleanup(); } - this.pageMatches[pageIndex] = matches; }, - calcFindWordMatch: function PDFFindController_calcFindWordMatch(query, pageIndex, pageContent) { - var matchesWithLength = []; - var queryArray = query.match(/\S+/g); - var subquery, subqueryLen, matchIdx; - for (var i = 0, len = queryArray.length; i < len; i++) { - subquery = queryArray[i]; - subqueryLen = subquery.length; - matchIdx = -subqueryLen; - while (true) { - matchIdx = pageContent.indexOf(subquery, matchIdx + subqueryLen); - if (matchIdx === -1) { - break; - } - matchesWithLength.push({ - match: matchIdx, - matchLength: subqueryLen, - skipped: false - }); - } + _resetZoomLayer: function _resetZoomLayer(removeFromDOM) { + if (!this.zoomLayer) { + return; } - if (!this.pageMatchesLength) { - this.pageMatchesLength = []; + var zoomLayerCanvas = this.zoomLayer.firstChild; + this.paintedViewportMap.delete(zoomLayerCanvas); + zoomLayerCanvas.width = 0; + zoomLayerCanvas.height = 0; + if (removeFromDOM) { + this.zoomLayer.remove(); } - this.pageMatchesLength[pageIndex] = []; - this.pageMatches[pageIndex] = []; - this._prepareMatches(matchesWithLength, this.pageMatches[pageIndex], this.pageMatchesLength[pageIndex]); + this.zoomLayer = null; }, - calcFindMatch: function PDFFindController_calcFindMatch(pageIndex) { - var pageContent = this.normalize(this.pageContents[pageIndex]); - var query = this.normalize(this.state.query); - var caseSensitive = this.state.caseSensitive; - var phraseSearch = this.state.phraseSearch; - var queryLen = query.length; - if (queryLen === 0) { - return; - } - if (!caseSensitive) { - pageContent = pageContent.toLowerCase(); - query = query.toLowerCase(); + reset: function PDFPageView_reset(keepZoomLayer, keepAnnotations) { + this.cancelRendering(); + var div = this.div; + div.style.width = Math.floor(this.viewport.width) + 'px'; + div.style.height = Math.floor(this.viewport.height) + 'px'; + var childNodes = div.childNodes; + var currentZoomLayerNode = keepZoomLayer && this.zoomLayer || null; + var currentAnnotationNode = keepAnnotations && this.annotationLayer && this.annotationLayer.div || null; + for (var i = childNodes.length - 1; i >= 0; i--) { + var node = childNodes[i]; + if (currentZoomLayerNode === node || currentAnnotationNode === node) { + continue; + } + div.removeChild(node); } - if (phraseSearch) { - this.calcFindPhraseMatch(query, pageIndex, pageContent); + div.removeAttribute('data-loaded'); + if (currentAnnotationNode) { + this.annotationLayer.hide(); } else { - this.calcFindWordMatch(query, pageIndex, pageContent); + this.annotationLayer = null; } - this.updatePage(pageIndex); - if (this.resumePageIdx === pageIndex) { - this.resumePageIdx = null; - this.nextPageMatch(); + if (!currentZoomLayerNode) { + if (this.canvas) { + this.paintedViewportMap.delete(this.canvas); + this.canvas.width = 0; + this.canvas.height = 0; + delete this.canvas; + } + this._resetZoomLayer(); } - if (this.pageMatches[pageIndex].length > 0) { - this.matchCount += this.pageMatches[pageIndex].length; - this.updateUIResultsCount(); + if (this.svg) { + this.paintedViewportMap.delete(this.svg); + delete this.svg; } + this.loadingIconDiv = document.createElement('div'); + this.loadingIconDiv.className = 'loadingIcon'; + div.appendChild(this.loadingIconDiv); }, - extractText: function PDFFindController_extractText() { - if (this.startedTextExtraction) { - return; + update: function PDFPageView_update(scale, rotation) { + this.scale = scale || this.scale; + if (typeof rotation !== 'undefined') { + this.rotation = rotation; } - this.startedTextExtraction = true; - this.pageContents = []; - var extractTextPromisesResolves = []; - var numPages = this.pdfViewer.pagesCount; - for (var i = 0; i < numPages; i++) { - this.extractTextPromises.push(new Promise(function (resolve) { - extractTextPromisesResolves.push(resolve); - })); + var totalRotation = (this.rotation + this.pdfPageRotate) % 360; + this.viewport = this.viewport.clone({ + scale: this.scale * _ui_utils.CSS_UNITS, + rotation: totalRotation + }); + if (this.svg) { + this.cssTransform(this.svg, true); + this.eventBus.dispatch('pagerendered', { + source: this, + pageNumber: this.id, + cssTransform: true + }); + return; } - var self = this; - function extractPageText(pageIndex) { - self.pdfViewer.getPageTextContent(pageIndex).then(function textContentResolved(textContent) { - var textItems = textContent.items; - var str = []; - for (var i = 0, len = textItems.length; i < len; i++) { - str.push(textItems[i].str); - } - self.pageContents.push(str.join('')); - extractTextPromisesResolves[pageIndex](pageIndex); - if (pageIndex + 1 < self.pdfViewer.pagesCount) { - extractPageText(pageIndex + 1); - } - }); - } - extractPageText(0); - }, - executeCommand: function PDFFindController_executeCommand(cmd, state) { - if (this.state === null || cmd !== 'findagain') { - this.dirtyMatch = true; - } - this.state = state; - this.updateUIState(FindStates.FIND_PENDING); - this.firstPagePromise.then(function () { - this.extractText(); - clearTimeout(this.findTimeout); - if (cmd === 'find') { - this.findTimeout = setTimeout(this.nextMatch.bind(this), 250); - } else { - this.nextMatch(); - } - }.bind(this)); - }, - updatePage: function PDFFindController_updatePage(index) { - if (this.selected.pageIdx === index) { - this.pdfViewer.currentPageNumber = index + 1; - } - var page = this.pdfViewer.getPageView(index); - if (page.textLayer) { - page.textLayer.updateMatches(); - } - }, - nextMatch: function PDFFindController_nextMatch() { - var previous = this.state.findPrevious; - var currentPageIndex = this.pdfViewer.currentPageNumber - 1; - var numPages = this.pdfViewer.pagesCount; - this.active = true; - if (this.dirtyMatch) { - this.dirtyMatch = false; - this.selected.pageIdx = this.selected.matchIdx = -1; - this.offset.pageIdx = currentPageIndex; - this.offset.matchIdx = null; - this.hadMatch = false; - this.resumePageIdx = null; - this.pageMatches = []; - this.matchCount = 0; - this.pageMatchesLength = null; - var self = this; - for (var i = 0; i < numPages; i++) { - this.updatePage(i); - if (!(i in this.pendingFindMatches)) { - this.pendingFindMatches[i] = true; - this.extractTextPromises[i].then(function (pageIdx) { - delete self.pendingFindMatches[pageIdx]; - self.calcFindMatch(pageIdx); - }); - } + var isScalingRestricted = false; + if (this.canvas && _pdfjs.PDFJS.maxCanvasPixels > 0) { + var outputScale = this.outputScale; + if ((Math.floor(this.viewport.width) * outputScale.sx | 0) * (Math.floor(this.viewport.height) * outputScale.sy | 0) > _pdfjs.PDFJS.maxCanvasPixels) { + isScalingRestricted = true; } } - if (this.state.query === '') { - this.updateUIState(FindStates.FIND_FOUND); - return; - } - if (this.resumePageIdx) { - return; - } - var offset = this.offset; - this.pagesToSearch = numPages; - if (offset.matchIdx !== null) { - var numPageMatches = this.pageMatches[offset.pageIdx].length; - if (!previous && offset.matchIdx + 1 < numPageMatches || previous && offset.matchIdx > 0) { - this.hadMatch = true; - offset.matchIdx = previous ? offset.matchIdx - 1 : offset.matchIdx + 1; - this.updateMatch(true); + if (this.canvas) { + if (_pdfjs.PDFJS.useOnlyCssZoom || this.hasRestrictedScaling && isScalingRestricted) { + this.cssTransform(this.canvas, true); + this.eventBus.dispatch('pagerendered', { + source: this, + pageNumber: this.id, + cssTransform: true + }); return; } - this.advanceOffsetPage(previous); + if (!this.zoomLayer) { + this.zoomLayer = this.canvas.parentNode; + this.zoomLayer.style.position = 'absolute'; + } } - this.nextPageMatch(); + if (this.zoomLayer) { + this.cssTransform(this.zoomLayer.firstChild); + } + this.reset(true, true); }, - matchesReady: function PDFFindController_matchesReady(matches) { - var offset = this.offset; - var numMatches = matches.length; - var previous = this.state.findPrevious; - if (numMatches) { - this.hadMatch = true; - offset.matchIdx = previous ? numMatches - 1 : 0; - this.updateMatch(true); - return true; + cancelRendering: function PDFPageView_cancelRendering() { + if (this.paintTask) { + this.paintTask.cancel(); + this.paintTask = null; } - this.advanceOffsetPage(previous); - if (offset.wrapped) { - offset.matchIdx = null; - if (this.pagesToSearch < 0) { - this.updateMatch(false); - return true; - } + this.renderingState = _pdf_rendering_queue.RenderingStates.INITIAL; + this.resume = null; + if (this.textLayer) { + this.textLayer.cancel(); + this.textLayer = null; } - return false; }, - updateMatchPosition: function PDFFindController_updateMatchPosition(pageIndex, index, elements, beginIdx) { - if (this.selected.matchIdx === index && this.selected.pageIdx === pageIndex) { - var spot = { - top: FIND_SCROLL_OFFSET_TOP, - left: FIND_SCROLL_OFFSET_LEFT - }; - (0, _ui_utils.scrollIntoView)(elements[beginIdx], spot, true); + updatePosition: function PDFPageView_updatePosition() { + if (this.textLayer) { + this.textLayer.render(TEXT_LAYER_RENDER_DELAY); } }, - nextPageMatch: function PDFFindController_nextPageMatch() { - if (this.resumePageIdx !== null) { - console.error('There can only be one pending page.'); + cssTransform: function PDFPageView_transform(target, redrawAnnotations) { + var width = this.viewport.width; + var height = this.viewport.height; + var div = this.div; + target.style.width = target.parentNode.style.width = div.style.width = Math.floor(width) + 'px'; + target.style.height = target.parentNode.style.height = div.style.height = Math.floor(height) + 'px'; + var relativeRotation = this.viewport.rotation - this.paintedViewportMap.get(target).rotation; + var absRotation = Math.abs(relativeRotation); + var scaleX = 1, + scaleY = 1; + if (absRotation === 90 || absRotation === 270) { + scaleX = height / width; + scaleY = width / height; } - do { - var pageIdx = this.offset.pageIdx; - var matches = this.pageMatches[pageIdx]; - if (!matches) { - this.resumePageIdx = pageIdx; - break; + var cssTransform = 'rotate(' + relativeRotation + 'deg) ' + 'scale(' + scaleX + ',' + scaleY + ')'; + _pdfjs.CustomStyle.setProp('transform', target, cssTransform); + if (this.textLayer) { + var textLayerViewport = this.textLayer.viewport; + var textRelativeRotation = this.viewport.rotation - textLayerViewport.rotation; + var textAbsRotation = Math.abs(textRelativeRotation); + var scale = width / textLayerViewport.width; + if (textAbsRotation === 90 || textAbsRotation === 270) { + scale = width / textLayerViewport.height; } - } while (!this.matchesReady(matches)); - }, - advanceOffsetPage: function PDFFindController_advanceOffsetPage(previous) { - var offset = this.offset; - var numPages = this.extractTextPromises.length; - offset.pageIdx = previous ? offset.pageIdx - 1 : offset.pageIdx + 1; - offset.matchIdx = null; - this.pagesToSearch--; - if (offset.pageIdx >= numPages || offset.pageIdx < 0) { - offset.pageIdx = previous ? numPages - 1 : 0; - offset.wrapped = true; - } - }, - updateMatch: function PDFFindController_updateMatch(found) { - var state = FindStates.FIND_NOTFOUND; - var wrapped = this.offset.wrapped; - this.offset.wrapped = false; - if (found) { - var previousPage = this.selected.pageIdx; - this.selected.pageIdx = this.offset.pageIdx; - this.selected.matchIdx = this.offset.matchIdx; - state = wrapped ? FindStates.FIND_WRAPPED : FindStates.FIND_FOUND; - if (previousPage !== -1 && previousPage !== this.selected.pageIdx) { - this.updatePage(previousPage); + var textLayerDiv = this.textLayer.textLayerDiv; + var transX, transY; + switch (textAbsRotation) { + case 0: + transX = transY = 0; + break; + case 90: + transX = 0; + transY = '-' + textLayerDiv.style.height; + break; + case 180: + transX = '-' + textLayerDiv.style.width; + transY = '-' + textLayerDiv.style.height; + break; + case 270: + transX = '-' + textLayerDiv.style.width; + transY = 0; + break; + default: + console.error('Bad rotation value.'); + break; } + _pdfjs.CustomStyle.setProp('transform', textLayerDiv, 'rotate(' + textAbsRotation + 'deg) ' + 'scale(' + scale + ', ' + scale + ') ' + 'translate(' + transX + ', ' + transY + ')'); + _pdfjs.CustomStyle.setProp('transformOrigin', textLayerDiv, '0% 0%'); } - this.updateUIState(state, this.state.findPrevious); - if (this.selected.pageIdx !== -1) { - this.updatePage(this.selected.pageIdx); + if (redrawAnnotations && this.annotationLayer) { + this.annotationLayer.render(this.viewport, 'display'); } }, - updateUIResultsCount: function PDFFindController_updateUIResultsCount() { - if (this.onUpdateResultsCount) { - this.onUpdateResultsCount(this.matchCount); - } + get width() { + return this.viewport.width; }, - updateUIState: function PDFFindController_updateUIState(state, previous) { - if (this.onUpdateState) { - this.onUpdateState(state, previous, this.matchCount); + get height() { + return this.viewport.height; + }, + getPagePoint: function PDFPageView_getPagePoint(x, y) { + return this.viewport.convertToPdfPoint(x, y); + }, + draw: function PDFPageView_draw() { + if (this.renderingState !== _pdf_rendering_queue.RenderingStates.INITIAL) { + console.error('Must be in new state before drawing'); + this.reset(); } - } - }; - return PDFFindController; -}(); -exports.FindStates = FindStates; -exports.PDFFindController = PDFFindController; - -/***/ }), -/* 6 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -var OverlayManager = { - overlays: {}, - active: null, - register: function overlayManagerRegister(name, element, callerCloseMethod, canForceClose) { - return new Promise(function (resolve) { - var container; - if (!name || !element || !(container = element.parentNode)) { - throw new Error('Not enough parameters.'); - } else if (this.overlays[name]) { - throw new Error('The overlay is already registered.'); - } - this.overlays[name] = { - element: element, - container: container, - callerCloseMethod: callerCloseMethod || null, - canForceClose: canForceClose || false + this.renderingState = _pdf_rendering_queue.RenderingStates.RUNNING; + var self = this; + var pdfPage = this.pdfPage; + var div = this.div; + var canvasWrapper = document.createElement('div'); + canvasWrapper.style.width = div.style.width; + canvasWrapper.style.height = div.style.height; + canvasWrapper.classList.add('canvasWrapper'); + if (this.annotationLayer && this.annotationLayer.div) { + div.insertBefore(canvasWrapper, this.annotationLayer.div); + } else { + div.appendChild(canvasWrapper); + } + var textLayerDiv = null; + var textLayer = null; + if (this.textLayerFactory) { + textLayerDiv = document.createElement('div'); + textLayerDiv.className = 'textLayer'; + textLayerDiv.style.width = canvasWrapper.style.width; + textLayerDiv.style.height = canvasWrapper.style.height; + if (this.annotationLayer && this.annotationLayer.div) { + div.insertBefore(textLayerDiv, this.annotationLayer.div); + } else { + div.appendChild(textLayerDiv); + } + textLayer = this.textLayerFactory.createTextLayerBuilder(textLayerDiv, this.id - 1, this.viewport, this.enhanceTextSelection); + } + this.textLayer = textLayer; + var renderContinueCallback = null; + if (this.renderingQueue) { + renderContinueCallback = function renderContinueCallback(cont) { + if (!self.renderingQueue.isHighestPriority(self)) { + self.renderingState = _pdf_rendering_queue.RenderingStates.PAUSED; + self.resume = function resumeCallback() { + self.renderingState = _pdf_rendering_queue.RenderingStates.RUNNING; + cont(); + }; + return; + } + cont(); + }; + } + var finishPaintTask = function finishPaintTask(error) { + if (paintTask === self.paintTask) { + self.paintTask = null; + } + if (error === 'cancelled' || error instanceof _pdfjs.RenderingCancelledException) { + self.error = null; + return Promise.resolve(undefined); + } + self.renderingState = _pdf_rendering_queue.RenderingStates.FINISHED; + if (self.loadingIconDiv) { + div.removeChild(self.loadingIconDiv); + delete self.loadingIconDiv; + } + self._resetZoomLayer(true); + self.error = error; + self.stats = pdfPage.stats; + if (self.onAfterDraw) { + self.onAfterDraw(); + } + self.eventBus.dispatch('pagerendered', { + source: self, + pageNumber: self.id, + cssTransform: false + }); + if (error) { + return Promise.reject(error); + } + return Promise.resolve(undefined); }; - resolve(); - }.bind(this)); - }, - unregister: function overlayManagerUnregister(name) { - return new Promise(function (resolve) { - if (!this.overlays[name]) { - throw new Error('The overlay does not exist.'); - } else if (this.active === name) { - throw new Error('The overlay cannot be removed while it is active.'); - } - delete this.overlays[name]; - resolve(); - }.bind(this)); - }, - open: function overlayManagerOpen(name) { - return new Promise(function (resolve) { - if (!this.overlays[name]) { - throw new Error('The overlay does not exist.'); - } else if (this.active) { - if (this.overlays[name].canForceClose) { - this._closeThroughCaller(); - } else if (this.active === name) { - throw new Error('The overlay is already active.'); + var paintTask = this.renderer === _ui_utils.RendererType.SVG ? this.paintOnSvg(canvasWrapper) : this.paintOnCanvas(canvasWrapper); + paintTask.onRenderContinue = renderContinueCallback; + this.paintTask = paintTask; + var resultPromise = paintTask.promise.then(function () { + return finishPaintTask(null).then(function () { + if (textLayer) { + pdfPage.getTextContent({ normalizeWhitespace: true }).then(function textContentResolved(textContent) { + textLayer.setTextContent(textContent); + textLayer.render(TEXT_LAYER_RENDER_DELAY); + }); + } + }); + }, function (reason) { + return finishPaintTask(reason); + }); + if (this.annotationLayerFactory) { + if (!this.annotationLayer) { + this.annotationLayer = this.annotationLayerFactory.createAnnotationLayerBuilder(div, pdfPage, this.renderInteractiveForms); + } + this.annotationLayer.render(this.viewport, 'display'); + } + div.setAttribute('data-loaded', true); + if (this.onBeforeDraw) { + this.onBeforeDraw(); + } + return resultPromise; + }, + paintOnCanvas: function paintOnCanvas(canvasWrapper) { + var renderCapability = (0, _pdfjs.createPromiseCapability)(); + var result = { + promise: renderCapability.promise, + onRenderContinue: function onRenderContinue(cont) { + cont(); + }, + cancel: function cancel() { + renderTask.cancel(); + } + }; + var viewport = this.viewport; + var canvas = document.createElement('canvas'); + canvas.id = 'page' + this.id; + canvas.setAttribute('hidden', 'hidden'); + var isCanvasHidden = true; + var showCanvas = function showCanvas() { + if (isCanvasHidden) { + canvas.removeAttribute('hidden'); + isCanvasHidden = false; + } + }; + canvasWrapper.appendChild(canvas); + this.canvas = canvas; + canvas.mozOpaque = true; + var ctx = canvas.getContext('2d', { alpha: false }); + var outputScale = (0, _ui_utils.getOutputScale)(ctx); + this.outputScale = outputScale; + if (_pdfjs.PDFJS.useOnlyCssZoom) { + var actualSizeViewport = viewport.clone({ scale: _ui_utils.CSS_UNITS }); + outputScale.sx *= actualSizeViewport.width / viewport.width; + outputScale.sy *= actualSizeViewport.height / viewport.height; + outputScale.scaled = true; + } + if (_pdfjs.PDFJS.maxCanvasPixels > 0) { + var pixelsInViewport = viewport.width * viewport.height; + var maxScale = Math.sqrt(_pdfjs.PDFJS.maxCanvasPixels / pixelsInViewport); + if (outputScale.sx > maxScale || outputScale.sy > maxScale) { + outputScale.sx = maxScale; + outputScale.sy = maxScale; + outputScale.scaled = true; + this.hasRestrictedScaling = true; } else { - throw new Error('Another overlay is currently active.'); + this.hasRestrictedScaling = false; } } - this.active = name; - this.overlays[this.active].element.classList.remove('hidden'); - this.overlays[this.active].container.classList.remove('hidden'); - window.addEventListener('keydown', this._keyDown); - resolve(); - }.bind(this)); - }, - close: function overlayManagerClose(name) { - return new Promise(function (resolve) { - if (!this.overlays[name]) { - throw new Error('The overlay does not exist.'); - } else if (!this.active) { - throw new Error('The overlay is currently not active.'); - } else if (this.active !== name) { - throw new Error('Another overlay is currently active.'); - } - this.overlays[this.active].container.classList.add('hidden'); - this.overlays[this.active].element.classList.add('hidden'); - this.active = null; - window.removeEventListener('keydown', this._keyDown); - resolve(); - }.bind(this)); - }, - _keyDown: function overlayManager_keyDown(evt) { - var self = OverlayManager; - if (self.active && evt.keyCode === 27) { - self._closeThroughCaller(); - evt.preventDefault(); - } - }, - _closeThroughCaller: function overlayManager_closeThroughCaller() { - if (this.overlays[this.active].callerCloseMethod) { - this.overlays[this.active].callerCloseMethod(); - } - if (this.active) { - this.close(this.active); + var sfx = (0, _ui_utils.approximateFraction)(outputScale.sx); + var sfy = (0, _ui_utils.approximateFraction)(outputScale.sy); + canvas.width = (0, _ui_utils.roundToDivide)(viewport.width * outputScale.sx, sfx[0]); + canvas.height = (0, _ui_utils.roundToDivide)(viewport.height * outputScale.sy, sfy[0]); + canvas.style.width = (0, _ui_utils.roundToDivide)(viewport.width, sfx[1]) + 'px'; + canvas.style.height = (0, _ui_utils.roundToDivide)(viewport.height, sfy[1]) + 'px'; + this.paintedViewportMap.set(canvas, viewport); + var transform = !outputScale.scaled ? null : [outputScale.sx, 0, 0, outputScale.sy, 0, 0]; + var renderContext = { + canvasContext: ctx, + transform: transform, + viewport: this.viewport, + renderInteractiveForms: this.renderInteractiveForms + }; + var renderTask = this.pdfPage.render(renderContext); + renderTask.onContinue = function (cont) { + showCanvas(); + if (result.onRenderContinue) { + result.onRenderContinue(cont); + } else { + cont(); + } + }; + renderTask.promise.then(function pdfPageRenderCallback() { + showCanvas(); + renderCapability.resolve(undefined); + }, function pdfPageRenderError(error) { + showCanvas(); + renderCapability.reject(error); + }); + return result; + }, + paintOnSvg: function PDFPageView_paintOnSvg(wrapper) { + var cancelled = false; + var ensureNotCancelled = function ensureNotCancelled() { + if (cancelled) { + if (_pdfjs.PDFJS.pdfjsNext) { + throw new _pdfjs.RenderingCancelledException('Rendering cancelled, page ' + self.id, 'svg'); + } else { + throw 'cancelled'; + } + } + }; + var self = this; + var pdfPage = this.pdfPage; + var actualSizeViewport = this.viewport.clone({ scale: _ui_utils.CSS_UNITS }); + var promise = pdfPage.getOperatorList().then(function (opList) { + ensureNotCancelled(); + var svgGfx = new _pdfjs.SVGGraphics(pdfPage.commonObjs, pdfPage.objs); + return svgGfx.getSVG(opList, actualSizeViewport).then(function (svg) { + ensureNotCancelled(); + self.svg = svg; + self.paintedViewportMap.set(svg, actualSizeViewport); + svg.style.width = wrapper.style.width; + svg.style.height = wrapper.style.height; + self.renderingState = _pdf_rendering_queue.RenderingStates.FINISHED; + wrapper.appendChild(svg); + }); + }); + return { + promise: promise, + onRenderContinue: function onRenderContinue(cont) { + cont(); + }, + cancel: function cancel() { + cancelled = true; + } + }; + }, + setPageLabel: function PDFView_setPageLabel(label) { + this.pageLabel = typeof label === 'string' ? label : null; + if (this.pageLabel !== null) { + this.div.setAttribute('data-page-label', this.pageLabel); + } else { + this.div.removeAttribute('data-page-label'); + } } - } -}; -exports.OverlayManager = OverlayManager; + }; + return PDFPageView; +}(); +exports.PDFPageView = PDFPageView; /***/ }), -/* 7 */ +/* 6 */ /***/ (function(module, exports, __w_pdfjs_require__) { "use strict"; @@ -1561,3631 +1552,394 @@ exports.OverlayManager = OverlayManager; Object.defineProperty(exports, "__esModule", { value: true }); -exports.DefaultAnnotationLayerFactory = exports.AnnotationLayerBuilder = undefined; - -var _pdfjs = __w_pdfjs_require__(1); +exports.DefaultTextLayerFactory = exports.TextLayerBuilder = undefined; -var _ui_utils = __w_pdfjs_require__(0); +var _dom_events = __w_pdfjs_require__(2); -var _pdf_link_service = __w_pdfjs_require__(4); +var _pdfjs = __w_pdfjs_require__(0); -var AnnotationLayerBuilder = function AnnotationLayerBuilderClosure() { - function AnnotationLayerBuilder(options) { - this.pageDiv = options.pageDiv; - this.pdfPage = options.pdfPage; - this.renderInteractiveForms = options.renderInteractiveForms; - this.linkService = options.linkService; - this.downloadManager = options.downloadManager; - this.div = null; - } - AnnotationLayerBuilder.prototype = { - render: function AnnotationLayerBuilder_render(viewport, intent) { - var self = this; - var parameters = { intent: intent === undefined ? 'display' : intent }; - this.pdfPage.getAnnotations(parameters).then(function (annotations) { - viewport = viewport.clone({ dontFlip: true }); - parameters = { - viewport: viewport, - div: self.div, - annotations: annotations, - page: self.pdfPage, - renderInteractiveForms: self.renderInteractiveForms, - linkService: self.linkService, - downloadManager: self.downloadManager - }; - if (self.div) { - _pdfjs.AnnotationLayer.update(parameters); - } else { - if (annotations.length === 0) { - return; - } - self.div = document.createElement('div'); - self.div.className = 'annotationLayer'; - self.pageDiv.appendChild(self.div); - parameters.div = self.div; - _pdfjs.AnnotationLayer.render(parameters); - if (typeof _ui_utils.mozL10n !== 'undefined') { - _ui_utils.mozL10n.translate(self.div); - } - } - }); - }, - hide: function AnnotationLayerBuilder_hide() { - if (!this.div) { - return; - } - this.div.setAttribute('hidden', 'true'); - } - }; - return AnnotationLayerBuilder; -}(); -function DefaultAnnotationLayerFactory() {} -DefaultAnnotationLayerFactory.prototype = { - createAnnotationLayerBuilder: function createAnnotationLayerBuilder(pageDiv, pdfPage, renderInteractiveForms) { - return new AnnotationLayerBuilder({ - pageDiv: pageDiv, - pdfPage: pdfPage, - renderInteractiveForms: renderInteractiveForms, - linkService: new _pdf_link_service.SimpleLinkService() - }); - } -}; -exports.AnnotationLayerBuilder = AnnotationLayerBuilder; -exports.DefaultAnnotationLayerFactory = DefaultAnnotationLayerFactory; - -/***/ }), -/* 8 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.PDFHistory = undefined; - -var _dom_events = __w_pdfjs_require__(2); - -function PDFHistory(options) { - this.linkService = options.linkService; - this.eventBus = options.eventBus || _dom_events.domEvents.getGlobalEventBus(); - this.initialized = false; - this.initialDestination = null; - this.initialBookmark = null; -} -PDFHistory.prototype = { - initialize: function pdfHistoryInitialize(fingerprint) { - this.initialized = true; - this.reInitialized = false; - this.allowHashChange = true; - this.historyUnlocked = true; - this.isViewerInPresentationMode = false; - this.previousHash = window.location.hash.substring(1); - this.currentBookmark = ''; - this.currentPage = 0; - this.updatePreviousBookmark = false; - this.previousBookmark = ''; - this.previousPage = 0; - this.nextHashParam = ''; - this.fingerprint = fingerprint; - this.currentUid = this.uid = 0; - this.current = {}; - var state = window.history.state; - if (this._isStateObjectDefined(state)) { - if (state.target.dest) { - this.initialDestination = state.target.dest; - } else { - this.initialBookmark = state.target.hash; - } - this.currentUid = state.uid; - this.uid = state.uid + 1; - this.current = state.target; - } else { - if (state && state.fingerprint && this.fingerprint !== state.fingerprint) { - this.reInitialized = true; - } - this._pushOrReplaceState({ fingerprint: this.fingerprint }, true); - } - var self = this; - window.addEventListener('popstate', function pdfHistoryPopstate(evt) { - if (!self.historyUnlocked) { - return; - } - if (evt.state) { - self._goTo(evt.state); - return; - } - if (self.uid === 0) { - var previousParams = self.previousHash && self.currentBookmark && self.previousHash !== self.currentBookmark ? { - hash: self.currentBookmark, - page: self.currentPage - } : { page: 1 }; - replacePreviousHistoryState(previousParams, function () { - updateHistoryWithCurrentHash(); - }); - } else { - updateHistoryWithCurrentHash(); - } - }); - function updateHistoryWithCurrentHash() { - self.previousHash = window.location.hash.slice(1); - self._pushToHistory({ hash: self.previousHash }, false, true); - self._updatePreviousBookmark(); - } - function replacePreviousHistoryState(params, callback) { - self.historyUnlocked = false; - self.allowHashChange = false; - window.addEventListener('popstate', rewriteHistoryAfterBack); - history.back(); - function rewriteHistoryAfterBack() { - window.removeEventListener('popstate', rewriteHistoryAfterBack); - window.addEventListener('popstate', rewriteHistoryAfterForward); - self._pushToHistory(params, false, true); - history.forward(); - } - function rewriteHistoryAfterForward() { - window.removeEventListener('popstate', rewriteHistoryAfterForward); - self.allowHashChange = true; - self.historyUnlocked = true; - callback(); - } - } - function pdfHistoryBeforeUnload() { - var previousParams = self._getPreviousParams(null, true); - if (previousParams) { - var replacePrevious = !self.current.dest && self.current.hash !== self.previousHash; - self._pushToHistory(previousParams, false, replacePrevious); - self._updatePreviousBookmark(); - } - window.removeEventListener('beforeunload', pdfHistoryBeforeUnload); - } - window.addEventListener('beforeunload', pdfHistoryBeforeUnload); - window.addEventListener('pageshow', function pdfHistoryPageShow(evt) { - window.addEventListener('beforeunload', pdfHistoryBeforeUnload); - }); - self.eventBus.on('presentationmodechanged', function (e) { - self.isViewerInPresentationMode = e.active; - }); - }, - clearHistoryState: function pdfHistory_clearHistoryState() { - this._pushOrReplaceState(null, true); - }, - _isStateObjectDefined: function pdfHistory_isStateObjectDefined(state) { - return state && state.uid >= 0 && state.fingerprint && this.fingerprint === state.fingerprint && state.target && state.target.hash ? true : false; - }, - _pushOrReplaceState: function pdfHistory_pushOrReplaceState(stateObj, replace) { - if (replace) { - window.history.replaceState(stateObj, '', document.URL); - } else { - window.history.pushState(stateObj, '', document.URL); - } - }, - get isHashChangeUnlocked() { - if (!this.initialized) { - return true; - } - return this.allowHashChange; - }, - _updatePreviousBookmark: function pdfHistory_updatePreviousBookmark() { - if (this.updatePreviousBookmark && this.currentBookmark && this.currentPage) { - this.previousBookmark = this.currentBookmark; - this.previousPage = this.currentPage; - this.updatePreviousBookmark = false; - } - }, - updateCurrentBookmark: function pdfHistoryUpdateCurrentBookmark(bookmark, pageNum) { - if (this.initialized) { - this.currentBookmark = bookmark.substring(1); - this.currentPage = pageNum | 0; - this._updatePreviousBookmark(); - } - }, - updateNextHashParam: function pdfHistoryUpdateNextHashParam(param) { - if (this.initialized) { - this.nextHashParam = param; - } - }, - push: function pdfHistoryPush(params, isInitialBookmark) { - if (!(this.initialized && this.historyUnlocked)) { - return; - } - if (params.dest && !params.hash) { - params.hash = this.current.hash && this.current.dest && this.current.dest === params.dest ? this.current.hash : this.linkService.getDestinationHash(params.dest).split('#')[1]; - } - if (params.page) { - params.page |= 0; - } - if (isInitialBookmark) { - var target = window.history.state.target; - if (!target) { - this._pushToHistory(params, false); - this.previousHash = window.location.hash.substring(1); - } - this.updatePreviousBookmark = this.nextHashParam ? false : true; - if (target) { - this._updatePreviousBookmark(); - } - return; - } - if (this.nextHashParam) { - if (this.nextHashParam === params.hash) { - this.nextHashParam = null; - this.updatePreviousBookmark = true; - return; - } - this.nextHashParam = null; - } - if (params.hash) { - if (this.current.hash) { - if (this.current.hash !== params.hash) { - this._pushToHistory(params, true); - } else { - if (!this.current.page && params.page) { - this._pushToHistory(params, false, true); - } - this.updatePreviousBookmark = true; - } - } else { - this._pushToHistory(params, true); - } - } else if (this.current.page && params.page && this.current.page !== params.page) { - this._pushToHistory(params, true); - } - }, - _getPreviousParams: function pdfHistory_getPreviousParams(onlyCheckPage, beforeUnload) { - if (!(this.currentBookmark && this.currentPage)) { - return null; - } else if (this.updatePreviousBookmark) { - this.updatePreviousBookmark = false; - } - if (this.uid > 0 && !(this.previousBookmark && this.previousPage)) { - return null; - } - if (!this.current.dest && !onlyCheckPage || beforeUnload) { - if (this.previousBookmark === this.currentBookmark) { - return null; - } - } else if (this.current.page || onlyCheckPage) { - if (this.previousPage === this.currentPage) { - return null; - } - } else { - return null; - } - var params = { - hash: this.currentBookmark, - page: this.currentPage - }; - if (this.isViewerInPresentationMode) { - params.hash = null; - } - return params; - }, - _stateObj: function pdfHistory_stateObj(params) { - return { - fingerprint: this.fingerprint, - uid: this.uid, - target: params - }; - }, - _pushToHistory: function pdfHistory_pushToHistory(params, addPrevious, overwrite) { - if (!this.initialized) { - return; - } - if (!params.hash && params.page) { - params.hash = 'page=' + params.page; - } - if (addPrevious && !overwrite) { - var previousParams = this._getPreviousParams(); - if (previousParams) { - var replacePrevious = !this.current.dest && this.current.hash !== this.previousHash; - this._pushToHistory(previousParams, false, replacePrevious); - } - } - this._pushOrReplaceState(this._stateObj(params), overwrite || this.uid === 0); - this.currentUid = this.uid++; - this.current = params; - this.updatePreviousBookmark = true; - }, - _goTo: function pdfHistory_goTo(state) { - if (!(this.initialized && this.historyUnlocked && this._isStateObjectDefined(state))) { - return; - } - if (!this.reInitialized && state.uid < this.currentUid) { - var previousParams = this._getPreviousParams(true); - if (previousParams) { - this._pushToHistory(this.current, false); - this._pushToHistory(previousParams, false); - this.currentUid = state.uid; - window.history.back(); - return; - } - } - this.historyUnlocked = false; - if (state.target.dest) { - this.linkService.navigateTo(state.target.dest); - } else { - this.linkService.setHash(state.target.hash); - } - this.currentUid = state.uid; - if (state.uid > this.uid) { - this.uid = state.uid; - } - this.current = state.target; - this.updatePreviousBookmark = true; - var currentHash = window.location.hash.substring(1); - if (this.previousHash !== currentHash) { - this.allowHashChange = false; - } - this.previousHash = currentHash; - this.historyUnlocked = true; - }, - back: function pdfHistoryBack() { - this.go(-1); - }, - forward: function pdfHistoryForward() { - this.go(1); - }, - go: function pdfHistoryGo(direction) { - if (this.initialized && this.historyUnlocked) { - var state = window.history.state; - if (direction === -1 && state && state.uid > 0) { - window.history.back(); - } else if (direction === 1 && state && state.uid < this.uid - 1) { - window.history.forward(); - } - } - } -}; -exports.PDFHistory = PDFHistory; - -/***/ }), -/* 9 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.PDFPageView = undefined; - -var _ui_utils = __w_pdfjs_require__(0); - -var _pdfjs = __w_pdfjs_require__(1); - -var _dom_events = __w_pdfjs_require__(2); - -var _pdf_rendering_queue = __w_pdfjs_require__(3); - -var TEXT_LAYER_RENDER_DELAY = 200; -var PDFPageView = function PDFPageViewClosure() { - function PDFPageView(options) { - var container = options.container; - var id = options.id; - var scale = options.scale; - var defaultViewport = options.defaultViewport; - var renderingQueue = options.renderingQueue; - var textLayerFactory = options.textLayerFactory; - var annotationLayerFactory = options.annotationLayerFactory; - var enhanceTextSelection = options.enhanceTextSelection || false; - var renderInteractiveForms = options.renderInteractiveForms || false; - this.id = id; - this.renderingId = 'page' + id; - this.pageLabel = null; - this.rotation = 0; - this.scale = scale || _ui_utils.DEFAULT_SCALE; - this.viewport = defaultViewport; - this.pdfPageRotate = defaultViewport.rotation; - this.hasRestrictedScaling = false; - this.enhanceTextSelection = enhanceTextSelection; - this.renderInteractiveForms = renderInteractiveForms; - this.eventBus = options.eventBus || _dom_events.domEvents.getGlobalEventBus(); - this.renderingQueue = renderingQueue; - this.textLayerFactory = textLayerFactory; - this.annotationLayerFactory = annotationLayerFactory; - this.renderer = options.renderer || _ui_utils.RendererType.CANVAS; - this.paintTask = null; - this.paintedViewportMap = new WeakMap(); - this.renderingState = _pdf_rendering_queue.RenderingStates.INITIAL; - this.resume = null; - this.error = null; - this.onBeforeDraw = null; - this.onAfterDraw = null; - this.textLayer = null; - this.zoomLayer = null; - this.annotationLayer = null; - var div = document.createElement('div'); - div.className = 'page'; - div.style.width = Math.floor(this.viewport.width) + 'px'; - div.style.height = Math.floor(this.viewport.height) + 'px'; - div.setAttribute('data-page-number', this.id); - this.div = div; - container.appendChild(div); - } - PDFPageView.prototype = { - setPdfPage: function PDFPageView_setPdfPage(pdfPage) { - this.pdfPage = pdfPage; - this.pdfPageRotate = pdfPage.rotate; - var totalRotation = (this.rotation + this.pdfPageRotate) % 360; - this.viewport = pdfPage.getViewport(this.scale * _ui_utils.CSS_UNITS, totalRotation); - this.stats = pdfPage.stats; - this.reset(); - }, - destroy: function PDFPageView_destroy() { - this.reset(); - if (this.pdfPage) { - this.pdfPage.cleanup(); - } - }, - _resetZoomLayer: function _resetZoomLayer(removeFromDOM) { - if (!this.zoomLayer) { - return; - } - var zoomLayerCanvas = this.zoomLayer.firstChild; - this.paintedViewportMap.delete(zoomLayerCanvas); - zoomLayerCanvas.width = 0; - zoomLayerCanvas.height = 0; - if (removeFromDOM) { - this.zoomLayer.remove(); - } - this.zoomLayer = null; - }, - reset: function PDFPageView_reset(keepZoomLayer, keepAnnotations) { - this.cancelRendering(); - var div = this.div; - div.style.width = Math.floor(this.viewport.width) + 'px'; - div.style.height = Math.floor(this.viewport.height) + 'px'; - var childNodes = div.childNodes; - var currentZoomLayerNode = keepZoomLayer && this.zoomLayer || null; - var currentAnnotationNode = keepAnnotations && this.annotationLayer && this.annotationLayer.div || null; - for (var i = childNodes.length - 1; i >= 0; i--) { - var node = childNodes[i]; - if (currentZoomLayerNode === node || currentAnnotationNode === node) { - continue; - } - div.removeChild(node); - } - div.removeAttribute('data-loaded'); - if (currentAnnotationNode) { - this.annotationLayer.hide(); - } else { - this.annotationLayer = null; - } - if (!currentZoomLayerNode) { - if (this.canvas) { - this.paintedViewportMap.delete(this.canvas); - this.canvas.width = 0; - this.canvas.height = 0; - delete this.canvas; - } - this._resetZoomLayer(); - } - if (this.svg) { - this.paintedViewportMap.delete(this.svg); - delete this.svg; - } - this.loadingIconDiv = document.createElement('div'); - this.loadingIconDiv.className = 'loadingIcon'; - div.appendChild(this.loadingIconDiv); - }, - update: function PDFPageView_update(scale, rotation) { - this.scale = scale || this.scale; - if (typeof rotation !== 'undefined') { - this.rotation = rotation; - } - var totalRotation = (this.rotation + this.pdfPageRotate) % 360; - this.viewport = this.viewport.clone({ - scale: this.scale * _ui_utils.CSS_UNITS, - rotation: totalRotation - }); - if (this.svg) { - this.cssTransform(this.svg, true); - this.eventBus.dispatch('pagerendered', { - source: this, - pageNumber: this.id, - cssTransform: true - }); - return; - } - var isScalingRestricted = false; - if (this.canvas && _pdfjs.PDFJS.maxCanvasPixels > 0) { - var outputScale = this.outputScale; - if ((Math.floor(this.viewport.width) * outputScale.sx | 0) * (Math.floor(this.viewport.height) * outputScale.sy | 0) > _pdfjs.PDFJS.maxCanvasPixels) { - isScalingRestricted = true; - } - } - if (this.canvas) { - if (_pdfjs.PDFJS.useOnlyCssZoom || this.hasRestrictedScaling && isScalingRestricted) { - this.cssTransform(this.canvas, true); - this.eventBus.dispatch('pagerendered', { - source: this, - pageNumber: this.id, - cssTransform: true - }); - return; - } - if (!this.zoomLayer) { - this.zoomLayer = this.canvas.parentNode; - this.zoomLayer.style.position = 'absolute'; - } - } - if (this.zoomLayer) { - this.cssTransform(this.zoomLayer.firstChild); - } - this.reset(true, true); - }, - cancelRendering: function PDFPageView_cancelRendering() { - if (this.paintTask) { - this.paintTask.cancel(); - this.paintTask = null; - } - this.renderingState = _pdf_rendering_queue.RenderingStates.INITIAL; - this.resume = null; - if (this.textLayer) { - this.textLayer.cancel(); - this.textLayer = null; - } - }, - updatePosition: function PDFPageView_updatePosition() { - if (this.textLayer) { - this.textLayer.render(TEXT_LAYER_RENDER_DELAY); - } - }, - cssTransform: function PDFPageView_transform(target, redrawAnnotations) { - var width = this.viewport.width; - var height = this.viewport.height; - var div = this.div; - target.style.width = target.parentNode.style.width = div.style.width = Math.floor(width) + 'px'; - target.style.height = target.parentNode.style.height = div.style.height = Math.floor(height) + 'px'; - var relativeRotation = this.viewport.rotation - this.paintedViewportMap.get(target).rotation; - var absRotation = Math.abs(relativeRotation); - var scaleX = 1, - scaleY = 1; - if (absRotation === 90 || absRotation === 270) { - scaleX = height / width; - scaleY = width / height; - } - var cssTransform = 'rotate(' + relativeRotation + 'deg) ' + 'scale(' + scaleX + ',' + scaleY + ')'; - _pdfjs.CustomStyle.setProp('transform', target, cssTransform); - if (this.textLayer) { - var textLayerViewport = this.textLayer.viewport; - var textRelativeRotation = this.viewport.rotation - textLayerViewport.rotation; - var textAbsRotation = Math.abs(textRelativeRotation); - var scale = width / textLayerViewport.width; - if (textAbsRotation === 90 || textAbsRotation === 270) { - scale = width / textLayerViewport.height; - } - var textLayerDiv = this.textLayer.textLayerDiv; - var transX, transY; - switch (textAbsRotation) { - case 0: - transX = transY = 0; - break; - case 90: - transX = 0; - transY = '-' + textLayerDiv.style.height; - break; - case 180: - transX = '-' + textLayerDiv.style.width; - transY = '-' + textLayerDiv.style.height; - break; - case 270: - transX = '-' + textLayerDiv.style.width; - transY = 0; - break; - default: - console.error('Bad rotation value.'); - break; - } - _pdfjs.CustomStyle.setProp('transform', textLayerDiv, 'rotate(' + textAbsRotation + 'deg) ' + 'scale(' + scale + ', ' + scale + ') ' + 'translate(' + transX + ', ' + transY + ')'); - _pdfjs.CustomStyle.setProp('transformOrigin', textLayerDiv, '0% 0%'); - } - if (redrawAnnotations && this.annotationLayer) { - this.annotationLayer.render(this.viewport, 'display'); - } - }, - get width() { - return this.viewport.width; - }, - get height() { - return this.viewport.height; - }, - getPagePoint: function PDFPageView_getPagePoint(x, y) { - return this.viewport.convertToPdfPoint(x, y); - }, - draw: function PDFPageView_draw() { - if (this.renderingState !== _pdf_rendering_queue.RenderingStates.INITIAL) { - console.error('Must be in new state before drawing'); - this.reset(); - } - this.renderingState = _pdf_rendering_queue.RenderingStates.RUNNING; - var self = this; - var pdfPage = this.pdfPage; - var div = this.div; - var canvasWrapper = document.createElement('div'); - canvasWrapper.style.width = div.style.width; - canvasWrapper.style.height = div.style.height; - canvasWrapper.classList.add('canvasWrapper'); - if (this.annotationLayer && this.annotationLayer.div) { - div.insertBefore(canvasWrapper, this.annotationLayer.div); - } else { - div.appendChild(canvasWrapper); - } - var textLayerDiv = null; - var textLayer = null; - if (this.textLayerFactory) { - textLayerDiv = document.createElement('div'); - textLayerDiv.className = 'textLayer'; - textLayerDiv.style.width = canvasWrapper.style.width; - textLayerDiv.style.height = canvasWrapper.style.height; - if (this.annotationLayer && this.annotationLayer.div) { - div.insertBefore(textLayerDiv, this.annotationLayer.div); - } else { - div.appendChild(textLayerDiv); - } - textLayer = this.textLayerFactory.createTextLayerBuilder(textLayerDiv, this.id - 1, this.viewport, this.enhanceTextSelection); - } - this.textLayer = textLayer; - var renderContinueCallback = null; - if (this.renderingQueue) { - renderContinueCallback = function renderContinueCallback(cont) { - if (!self.renderingQueue.isHighestPriority(self)) { - self.renderingState = _pdf_rendering_queue.RenderingStates.PAUSED; - self.resume = function resumeCallback() { - self.renderingState = _pdf_rendering_queue.RenderingStates.RUNNING; - cont(); - }; - return; - } - cont(); - }; - } - var finishPaintTask = function finishPaintTask(error) { - if (paintTask === self.paintTask) { - self.paintTask = null; - } - if (error === 'cancelled' || error instanceof _pdfjs.RenderingCancelledException) { - self.error = null; - return Promise.resolve(undefined); - } - self.renderingState = _pdf_rendering_queue.RenderingStates.FINISHED; - if (self.loadingIconDiv) { - div.removeChild(self.loadingIconDiv); - delete self.loadingIconDiv; - } - self._resetZoomLayer(true); - self.error = error; - self.stats = pdfPage.stats; - if (self.onAfterDraw) { - self.onAfterDraw(); - } - self.eventBus.dispatch('pagerendered', { - source: self, - pageNumber: self.id, - cssTransform: false - }); - if (error) { - return Promise.reject(error); - } - return Promise.resolve(undefined); - }; - var paintTask = this.renderer === _ui_utils.RendererType.SVG ? this.paintOnSvg(canvasWrapper) : this.paintOnCanvas(canvasWrapper); - paintTask.onRenderContinue = renderContinueCallback; - this.paintTask = paintTask; - var resultPromise = paintTask.promise.then(function () { - return finishPaintTask(null).then(function () { - if (textLayer) { - pdfPage.getTextContent({ normalizeWhitespace: true }).then(function textContentResolved(textContent) { - textLayer.setTextContent(textContent); - textLayer.render(TEXT_LAYER_RENDER_DELAY); - }); - } - }); - }, function (reason) { - return finishPaintTask(reason); - }); - if (this.annotationLayerFactory) { - if (!this.annotationLayer) { - this.annotationLayer = this.annotationLayerFactory.createAnnotationLayerBuilder(div, pdfPage, this.renderInteractiveForms); - } - this.annotationLayer.render(this.viewport, 'display'); - } - div.setAttribute('data-loaded', true); - if (this.onBeforeDraw) { - this.onBeforeDraw(); - } - return resultPromise; - }, - paintOnCanvas: function paintOnCanvas(canvasWrapper) { - var resolveRenderPromise, rejectRenderPromise; - var promise = new Promise(function (resolve, reject) { - resolveRenderPromise = resolve; - rejectRenderPromise = reject; - }); - var result = { - promise: promise, - onRenderContinue: function onRenderContinue(cont) { - cont(); - }, - cancel: function cancel() { - renderTask.cancel(); - } - }; - var viewport = this.viewport; - var canvas = document.createElement('canvas'); - canvas.id = 'page' + this.id; - canvas.setAttribute('hidden', 'hidden'); - var isCanvasHidden = true; - var showCanvas = function showCanvas() { - if (isCanvasHidden) { - canvas.removeAttribute('hidden'); - isCanvasHidden = false; - } - }; - canvasWrapper.appendChild(canvas); - this.canvas = canvas; - canvas.mozOpaque = true; - var ctx = canvas.getContext('2d', { alpha: false }); - var outputScale = (0, _ui_utils.getOutputScale)(ctx); - this.outputScale = outputScale; - if (_pdfjs.PDFJS.useOnlyCssZoom) { - var actualSizeViewport = viewport.clone({ scale: _ui_utils.CSS_UNITS }); - outputScale.sx *= actualSizeViewport.width / viewport.width; - outputScale.sy *= actualSizeViewport.height / viewport.height; - outputScale.scaled = true; - } - if (_pdfjs.PDFJS.maxCanvasPixels > 0) { - var pixelsInViewport = viewport.width * viewport.height; - var maxScale = Math.sqrt(_pdfjs.PDFJS.maxCanvasPixels / pixelsInViewport); - if (outputScale.sx > maxScale || outputScale.sy > maxScale) { - outputScale.sx = maxScale; - outputScale.sy = maxScale; - outputScale.scaled = true; - this.hasRestrictedScaling = true; - } else { - this.hasRestrictedScaling = false; - } - } - var sfx = (0, _ui_utils.approximateFraction)(outputScale.sx); - var sfy = (0, _ui_utils.approximateFraction)(outputScale.sy); - canvas.width = (0, _ui_utils.roundToDivide)(viewport.width * outputScale.sx, sfx[0]); - canvas.height = (0, _ui_utils.roundToDivide)(viewport.height * outputScale.sy, sfy[0]); - canvas.style.width = (0, _ui_utils.roundToDivide)(viewport.width, sfx[1]) + 'px'; - canvas.style.height = (0, _ui_utils.roundToDivide)(viewport.height, sfy[1]) + 'px'; - this.paintedViewportMap.set(canvas, viewport); - var transform = !outputScale.scaled ? null : [outputScale.sx, 0, 0, outputScale.sy, 0, 0]; - var renderContext = { - canvasContext: ctx, - transform: transform, - viewport: this.viewport, - renderInteractiveForms: this.renderInteractiveForms - }; - var renderTask = this.pdfPage.render(renderContext); - renderTask.onContinue = function (cont) { - showCanvas(); - if (result.onRenderContinue) { - result.onRenderContinue(cont); - } else { - cont(); - } - }; - renderTask.promise.then(function pdfPageRenderCallback() { - showCanvas(); - resolveRenderPromise(undefined); - }, function pdfPageRenderError(error) { - showCanvas(); - rejectRenderPromise(error); - }); - return result; - }, - paintOnSvg: function PDFPageView_paintOnSvg(wrapper) { - var cancelled = false; - var ensureNotCancelled = function ensureNotCancelled() { - if (cancelled) { - if (_pdfjs.PDFJS.pdfjsNext) { - throw new _pdfjs.RenderingCancelledException('Rendering cancelled, page ' + self.id, 'svg'); - } else { - throw 'cancelled'; - } - } - }; - var self = this; - var pdfPage = this.pdfPage; - var actualSizeViewport = this.viewport.clone({ scale: _ui_utils.CSS_UNITS }); - var promise = pdfPage.getOperatorList().then(function (opList) { - ensureNotCancelled(); - var svgGfx = new _pdfjs.SVGGraphics(pdfPage.commonObjs, pdfPage.objs); - return svgGfx.getSVG(opList, actualSizeViewport).then(function (svg) { - ensureNotCancelled(); - self.svg = svg; - self.paintedViewportMap.set(svg, actualSizeViewport); - svg.style.width = wrapper.style.width; - svg.style.height = wrapper.style.height; - self.renderingState = _pdf_rendering_queue.RenderingStates.FINISHED; - wrapper.appendChild(svg); - }); - }); - return { - promise: promise, - onRenderContinue: function onRenderContinue(cont) { - cont(); - }, - cancel: function cancel() { - cancelled = true; - } - }; - }, - setPageLabel: function PDFView_setPageLabel(label) { - this.pageLabel = typeof label === 'string' ? label : null; - if (this.pageLabel !== null) { - this.div.setAttribute('data-page-label', this.pageLabel); - } else { - this.div.removeAttribute('data-page-label'); - } - } - }; - return PDFPageView; -}(); -exports.PDFPageView = PDFPageView; - -/***/ }), -/* 10 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.PDFViewer = exports.PresentationModeState = undefined; - -var _ui_utils = __w_pdfjs_require__(0); - -var _pdf_rendering_queue = __w_pdfjs_require__(3); - -var _annotation_layer_builder = __w_pdfjs_require__(7); - -var _dom_events = __w_pdfjs_require__(2); - -var _pdfjs = __w_pdfjs_require__(1); - -var _pdf_page_view = __w_pdfjs_require__(9); - -var _pdf_link_service = __w_pdfjs_require__(4); - -var _text_layer_builder = __w_pdfjs_require__(11); - -var PresentationModeState = { - UNKNOWN: 0, - NORMAL: 1, - CHANGING: 2, - FULLSCREEN: 3 -}; -var DEFAULT_CACHE_SIZE = 10; -var PDFViewer = function pdfViewer() { - function PDFPageViewBuffer(size) { - var data = []; - this.push = function cachePush(view) { - var i = data.indexOf(view); - if (i >= 0) { - data.splice(i, 1); - } - data.push(view); - if (data.length > size) { - data.shift().destroy(); - } - }; - this.resize = function (newSize) { - size = newSize; - while (data.length > size) { - data.shift().destroy(); - } - }; - } - function isSameScale(oldScale, newScale) { - if (newScale === oldScale) { - return true; - } - if (Math.abs(newScale - oldScale) < 1e-15) { - return true; - } - return false; - } - function isPortraitOrientation(size) { - return size.width <= size.height; - } - function PDFViewer(options) { - this.container = options.container; - this.viewer = options.viewer || options.container.firstElementChild; - this.eventBus = options.eventBus || _dom_events.domEvents.getGlobalEventBus(); - this.linkService = options.linkService || new _pdf_link_service.SimpleLinkService(); - this.downloadManager = options.downloadManager || null; - this.removePageBorders = options.removePageBorders || false; - this.enhanceTextSelection = options.enhanceTextSelection || false; - this.renderInteractiveForms = options.renderInteractiveForms || false; - this.enablePrintAutoRotate = options.enablePrintAutoRotate || false; - this.renderer = options.renderer || _ui_utils.RendererType.CANVAS; - this.defaultRenderingQueue = !options.renderingQueue; - if (this.defaultRenderingQueue) { - this.renderingQueue = new _pdf_rendering_queue.PDFRenderingQueue(); - this.renderingQueue.setViewer(this); - } else { - this.renderingQueue = options.renderingQueue; - } - this.scroll = (0, _ui_utils.watchScroll)(this.container, this._scrollUpdate.bind(this)); - this.presentationModeState = PresentationModeState.UNKNOWN; - this._resetView(); - if (this.removePageBorders) { - this.viewer.classList.add('removePageBorders'); - } - } - PDFViewer.prototype = { - get pagesCount() { - return this._pages.length; - }, - getPageView: function getPageView(index) { - return this._pages[index]; - }, - get pageViewsReady() { - return this._pageViewsReady; - }, - get currentPageNumber() { - return this._currentPageNumber; - }, - set currentPageNumber(val) { - if ((val | 0) !== val) { - throw new Error('Invalid page number.'); - } - if (!this.pdfDocument) { - this._currentPageNumber = val; - return; - } - this._setCurrentPageNumber(val, true); - }, - _setCurrentPageNumber: function PDFViewer_setCurrentPageNumber(val, resetCurrentPageView) { - if (this._currentPageNumber === val) { - if (resetCurrentPageView) { - this._resetCurrentPageView(); - } - return; - } - if (!(0 < val && val <= this.pagesCount)) { - console.error('PDFViewer_setCurrentPageNumber: "' + val + '" is out of bounds.'); - return; - } - var arg = { - source: this, - pageNumber: val, - pageLabel: this._pageLabels && this._pageLabels[val - 1] - }; - this._currentPageNumber = val; - this.eventBus.dispatch('pagechanging', arg); - this.eventBus.dispatch('pagechange', arg); - if (resetCurrentPageView) { - this._resetCurrentPageView(); - } - }, - get currentPageLabel() { - return this._pageLabels && this._pageLabels[this._currentPageNumber - 1]; - }, - set currentPageLabel(val) { - var pageNumber = val | 0; - if (this._pageLabels) { - var i = this._pageLabels.indexOf(val); - if (i >= 0) { - pageNumber = i + 1; - } - } - this.currentPageNumber = pageNumber; - }, - get currentScale() { - return this._currentScale !== _ui_utils.UNKNOWN_SCALE ? this._currentScale : _ui_utils.DEFAULT_SCALE; - }, - set currentScale(val) { - if (isNaN(val)) { - throw new Error('Invalid numeric scale'); - } - if (!this.pdfDocument) { - this._currentScale = val; - this._currentScaleValue = val !== _ui_utils.UNKNOWN_SCALE ? val.toString() : null; - return; - } - this._setScale(val, false); - }, - get currentScaleValue() { - return this._currentScaleValue; - }, - set currentScaleValue(val) { - if (!this.pdfDocument) { - this._currentScale = isNaN(val) ? _ui_utils.UNKNOWN_SCALE : val; - this._currentScaleValue = val.toString(); - return; - } - this._setScale(val, false); - }, - get pagesRotation() { - return this._pagesRotation; - }, - set pagesRotation(rotation) { - if (!(typeof rotation === 'number' && rotation % 90 === 0)) { - throw new Error('Invalid pages rotation angle.'); - } - this._pagesRotation = rotation; - if (!this.pdfDocument) { - return; - } - for (var i = 0, l = this._pages.length; i < l; i++) { - var pageView = this._pages[i]; - pageView.update(pageView.scale, rotation); - } - this._setScale(this._currentScaleValue, true); - if (this.defaultRenderingQueue) { - this.update(); - } - }, - setDocument: function setDocument(pdfDocument) { - if (this.pdfDocument) { - this._cancelRendering(); - this._resetView(); - } - this.pdfDocument = pdfDocument; - if (!pdfDocument) { - return; - } - var pagesCount = pdfDocument.numPages; - var self = this; - var resolvePagesPromise; - var pagesPromise = new Promise(function (resolve) { - resolvePagesPromise = resolve; - }); - this.pagesPromise = pagesPromise; - pagesPromise.then(function () { - self._pageViewsReady = true; - self.eventBus.dispatch('pagesloaded', { - source: self, - pagesCount: pagesCount - }); - }); - var isOnePageRenderedResolved = false; - var resolveOnePageRendered = null; - var onePageRendered = new Promise(function (resolve) { - resolveOnePageRendered = resolve; - }); - this.onePageRendered = onePageRendered; - var bindOnAfterAndBeforeDraw = function bindOnAfterAndBeforeDraw(pageView) { - pageView.onBeforeDraw = function pdfViewLoadOnBeforeDraw() { - self._buffer.push(this); - }; - pageView.onAfterDraw = function pdfViewLoadOnAfterDraw() { - if (!isOnePageRenderedResolved) { - isOnePageRenderedResolved = true; - resolveOnePageRendered(); - } - }; - }; - var firstPagePromise = pdfDocument.getPage(1); - this.firstPagePromise = firstPagePromise; - return firstPagePromise.then(function (pdfPage) { - var scale = this.currentScale; - var viewport = pdfPage.getViewport(scale * _ui_utils.CSS_UNITS); - for (var pageNum = 1; pageNum <= pagesCount; ++pageNum) { - var textLayerFactory = null; - if (!_pdfjs.PDFJS.disableTextLayer) { - textLayerFactory = this; - } - var pageView = new _pdf_page_view.PDFPageView({ - container: this.viewer, - eventBus: this.eventBus, - id: pageNum, - scale: scale, - defaultViewport: viewport.clone(), - renderingQueue: this.renderingQueue, - textLayerFactory: textLayerFactory, - annotationLayerFactory: this, - enhanceTextSelection: this.enhanceTextSelection, - renderInteractiveForms: this.renderInteractiveForms, - renderer: this.renderer - }); - bindOnAfterAndBeforeDraw(pageView); - this._pages.push(pageView); - } - var linkService = this.linkService; - onePageRendered.then(function () { - if (!_pdfjs.PDFJS.disableAutoFetch) { - var getPagesLeft = pagesCount; - for (var pageNum = 1; pageNum <= pagesCount; ++pageNum) { - pdfDocument.getPage(pageNum).then(function (pageNum, pdfPage) { - var pageView = self._pages[pageNum - 1]; - if (!pageView.pdfPage) { - pageView.setPdfPage(pdfPage); - } - linkService.cachePageRef(pageNum, pdfPage.ref); - getPagesLeft--; - if (!getPagesLeft) { - resolvePagesPromise(); - } - }.bind(null, pageNum)); - } - } else { - resolvePagesPromise(); - } - }); - self.eventBus.dispatch('pagesinit', { source: self }); - if (this.defaultRenderingQueue) { - this.update(); - } - if (this.findController) { - this.findController.resolveFirstPage(); - } - }.bind(this)); - }, - setPageLabels: function PDFViewer_setPageLabels(labels) { - if (!this.pdfDocument) { - return; - } - if (!labels) { - this._pageLabels = null; - } else if (!(labels instanceof Array && this.pdfDocument.numPages === labels.length)) { - this._pageLabels = null; - console.error('PDFViewer_setPageLabels: Invalid page labels.'); - } else { - this._pageLabels = labels; - } - for (var i = 0, ii = this._pages.length; i < ii; i++) { - var pageView = this._pages[i]; - var label = this._pageLabels && this._pageLabels[i]; - pageView.setPageLabel(label); - } - }, - _resetView: function _resetView() { - this._pages = []; - this._currentPageNumber = 1; - this._currentScale = _ui_utils.UNKNOWN_SCALE; - this._currentScaleValue = null; - this._pageLabels = null; - this._buffer = new PDFPageViewBuffer(DEFAULT_CACHE_SIZE); - this._location = null; - this._pagesRotation = 0; - this._pagesRequests = []; - this._pageViewsReady = false; - this.viewer.textContent = ''; - }, - _scrollUpdate: function PDFViewer_scrollUpdate() { - if (this.pagesCount === 0) { - return; - } - this.update(); - for (var i = 0, ii = this._pages.length; i < ii; i++) { - this._pages[i].updatePosition(); - } - }, - _setScaleDispatchEvent: function pdfViewer_setScaleDispatchEvent(newScale, newValue, preset) { - var arg = { - source: this, - scale: newScale, - presetValue: preset ? newValue : undefined - }; - this.eventBus.dispatch('scalechanging', arg); - this.eventBus.dispatch('scalechange', arg); - }, - _setScaleUpdatePages: function pdfViewer_setScaleUpdatePages(newScale, newValue, noScroll, preset) { - this._currentScaleValue = newValue.toString(); - if (isSameScale(this._currentScale, newScale)) { - if (preset) { - this._setScaleDispatchEvent(newScale, newValue, true); - } - return; - } - for (var i = 0, ii = this._pages.length; i < ii; i++) { - this._pages[i].update(newScale); - } - this._currentScale = newScale; - if (!noScroll) { - var page = this._currentPageNumber, - dest; - if (this._location && !_pdfjs.PDFJS.ignoreCurrentPositionOnZoom && !(this.isInPresentationMode || this.isChangingPresentationMode)) { - page = this._location.pageNumber; - dest = [null, { name: 'XYZ' }, this._location.left, this._location.top, null]; - } - this.scrollPageIntoView({ - pageNumber: page, - destArray: dest, - allowNegativeOffset: true - }); - } - this._setScaleDispatchEvent(newScale, newValue, preset); - if (this.defaultRenderingQueue) { - this.update(); - } - }, - _setScale: function PDFViewer_setScale(value, noScroll) { - var scale = parseFloat(value); - if (scale > 0) { - this._setScaleUpdatePages(scale, value, noScroll, false); - } else { - var currentPage = this._pages[this._currentPageNumber - 1]; - if (!currentPage) { - return; - } - var hPadding = this.isInPresentationMode || this.removePageBorders ? 0 : _ui_utils.SCROLLBAR_PADDING; - var vPadding = this.isInPresentationMode || this.removePageBorders ? 0 : _ui_utils.VERTICAL_PADDING; - var pageWidthScale = (this.container.clientWidth - hPadding) / currentPage.width * currentPage.scale; - var pageHeightScale = (this.container.clientHeight - vPadding) / currentPage.height * currentPage.scale; - switch (value) { - case 'page-actual': - scale = 1; - break; - case 'page-width': - scale = pageWidthScale; - break; - case 'page-height': - scale = pageHeightScale; - break; - case 'page-fit': - scale = Math.min(pageWidthScale, pageHeightScale); - break; - case 'auto': - var isLandscape = currentPage.width > currentPage.height; - var horizontalScale = isLandscape ? Math.min(pageHeightScale, pageWidthScale) : pageWidthScale; - scale = Math.min(_ui_utils.MAX_AUTO_SCALE, horizontalScale); - break; - default: - console.error('PDFViewer_setScale: "' + value + '" is an unknown zoom value.'); - return; - } - this._setScaleUpdatePages(scale, value, noScroll, true); - } - }, - _resetCurrentPageView: function _resetCurrentPageView() { - if (this.isInPresentationMode) { - this._setScale(this._currentScaleValue, true); - } - var pageView = this._pages[this._currentPageNumber - 1]; - (0, _ui_utils.scrollIntoView)(pageView.div); - }, - scrollPageIntoView: function PDFViewer_scrollPageIntoView(params) { - if (!this.pdfDocument) { - return; - } - if (arguments.length > 1 || typeof params === 'number') { - console.warn('Call of scrollPageIntoView() with obsolete signature.'); - var paramObj = {}; - if (typeof params === 'number') { - paramObj.pageNumber = params; - } - if (arguments[1] instanceof Array) { - paramObj.destArray = arguments[1]; - } - params = paramObj; - } - var pageNumber = params.pageNumber || 0; - var dest = params.destArray || null; - var allowNegativeOffset = params.allowNegativeOffset || false; - if (this.isInPresentationMode || !dest) { - this._setCurrentPageNumber(pageNumber, true); - return; - } - var pageView = this._pages[pageNumber - 1]; - if (!pageView) { - console.error('PDFViewer_scrollPageIntoView: ' + 'Invalid "pageNumber" parameter.'); - return; - } - var x = 0, - y = 0; - var width = 0, - height = 0, - widthScale, - heightScale; - var changeOrientation = pageView.rotation % 180 === 0 ? false : true; - var pageWidth = (changeOrientation ? pageView.height : pageView.width) / pageView.scale / _ui_utils.CSS_UNITS; - var pageHeight = (changeOrientation ? pageView.width : pageView.height) / pageView.scale / _ui_utils.CSS_UNITS; - var scale = 0; - switch (dest[1].name) { - case 'XYZ': - x = dest[2]; - y = dest[3]; - scale = dest[4]; - x = x !== null ? x : 0; - y = y !== null ? y : pageHeight; - break; - case 'Fit': - case 'FitB': - scale = 'page-fit'; - break; - case 'FitH': - case 'FitBH': - y = dest[2]; - scale = 'page-width'; - if (y === null && this._location) { - x = this._location.left; - y = this._location.top; - } - break; - case 'FitV': - case 'FitBV': - x = dest[2]; - width = pageWidth; - height = pageHeight; - scale = 'page-height'; - break; - case 'FitR': - x = dest[2]; - y = dest[3]; - width = dest[4] - x; - height = dest[5] - y; - var hPadding = this.removePageBorders ? 0 : _ui_utils.SCROLLBAR_PADDING; - var vPadding = this.removePageBorders ? 0 : _ui_utils.VERTICAL_PADDING; - widthScale = (this.container.clientWidth - hPadding) / width / _ui_utils.CSS_UNITS; - heightScale = (this.container.clientHeight - vPadding) / height / _ui_utils.CSS_UNITS; - scale = Math.min(Math.abs(widthScale), Math.abs(heightScale)); - break; - default: - console.error('PDFViewer_scrollPageIntoView: \'' + dest[1].name + '\' is not a valid destination type.'); - return; - } - if (scale && scale !== this._currentScale) { - this.currentScaleValue = scale; - } else if (this._currentScale === _ui_utils.UNKNOWN_SCALE) { - this.currentScaleValue = _ui_utils.DEFAULT_SCALE_VALUE; - } - if (scale === 'page-fit' && !dest[4]) { - (0, _ui_utils.scrollIntoView)(pageView.div); - return; - } - var boundingRect = [pageView.viewport.convertToViewportPoint(x, y), pageView.viewport.convertToViewportPoint(x + width, y + height)]; - var left = Math.min(boundingRect[0][0], boundingRect[1][0]); - var top = Math.min(boundingRect[0][1], boundingRect[1][1]); - if (!allowNegativeOffset) { - left = Math.max(left, 0); - top = Math.max(top, 0); - } - (0, _ui_utils.scrollIntoView)(pageView.div, { - left: left, - top: top - }); - }, - _updateLocation: function _updateLocation(firstPage) { - var currentScale = this._currentScale; - var currentScaleValue = this._currentScaleValue; - var normalizedScaleValue = parseFloat(currentScaleValue) === currentScale ? Math.round(currentScale * 10000) / 100 : currentScaleValue; - var pageNumber = firstPage.id; - var pdfOpenParams = '#page=' + pageNumber; - pdfOpenParams += '&zoom=' + normalizedScaleValue; - var currentPageView = this._pages[pageNumber - 1]; - var container = this.container; - var topLeft = currentPageView.getPagePoint(container.scrollLeft - firstPage.x, container.scrollTop - firstPage.y); - var intLeft = Math.round(topLeft[0]); - var intTop = Math.round(topLeft[1]); - pdfOpenParams += ',' + intLeft + ',' + intTop; - this._location = { - pageNumber: pageNumber, - scale: normalizedScaleValue, - top: intTop, - left: intLeft, - pdfOpenParams: pdfOpenParams - }; - }, - update: function PDFViewer_update() { - var visible = this._getVisiblePages(); - var visiblePages = visible.views; - if (visiblePages.length === 0) { - return; - } - var suggestedCacheSize = Math.max(DEFAULT_CACHE_SIZE, 2 * visiblePages.length + 1); - this._buffer.resize(suggestedCacheSize); - this.renderingQueue.renderHighestPriority(visible); - var currentId = this._currentPageNumber; - var firstPage = visible.first; - for (var i = 0, ii = visiblePages.length, stillFullyVisible = false; i < ii; ++i) { - var page = visiblePages[i]; - if (page.percent < 100) { - break; - } - if (page.id === currentId) { - stillFullyVisible = true; - break; - } - } - if (!stillFullyVisible) { - currentId = visiblePages[0].id; - } - if (!this.isInPresentationMode) { - this._setCurrentPageNumber(currentId); - } - this._updateLocation(firstPage); - this.eventBus.dispatch('updateviewarea', { - source: this, - location: this._location - }); - }, - containsElement: function containsElement(element) { - return this.container.contains(element); - }, - focus: function focus() { - this.container.focus(); - }, - get isInPresentationMode() { - return this.presentationModeState === PresentationModeState.FULLSCREEN; - }, - get isChangingPresentationMode() { - return this.presentationModeState === PresentationModeState.CHANGING; - }, - get isHorizontalScrollbarEnabled() { - return this.isInPresentationMode ? false : this.container.scrollWidth > this.container.clientWidth; - }, - _getVisiblePages: function _getVisiblePages() { - if (!this.isInPresentationMode) { - return (0, _ui_utils.getVisibleElements)(this.container, this._pages, true); - } - var visible = []; - var currentPage = this._pages[this._currentPageNumber - 1]; - visible.push({ - id: currentPage.id, - view: currentPage - }); - return { - first: currentPage, - last: currentPage, - views: visible - }; - }, - cleanup: function cleanup() { - for (var i = 0, ii = this._pages.length; i < ii; i++) { - if (this._pages[i] && this._pages[i].renderingState !== _pdf_rendering_queue.RenderingStates.FINISHED) { - this._pages[i].reset(); - } - } - }, - _cancelRendering: function PDFViewer_cancelRendering() { - for (var i = 0, ii = this._pages.length; i < ii; i++) { - if (this._pages[i]) { - this._pages[i].cancelRendering(); - } - } - }, - _ensurePdfPageLoaded: function _ensurePdfPageLoaded(pageView) { - if (pageView.pdfPage) { - return Promise.resolve(pageView.pdfPage); - } - var pageNumber = pageView.id; - if (this._pagesRequests[pageNumber]) { - return this._pagesRequests[pageNumber]; - } - var promise = this.pdfDocument.getPage(pageNumber).then(function (pdfPage) { - pageView.setPdfPage(pdfPage); - this._pagesRequests[pageNumber] = null; - return pdfPage; - }.bind(this)); - this._pagesRequests[pageNumber] = promise; - return promise; - }, - forceRendering: function forceRendering(currentlyVisiblePages) { - var visiblePages = currentlyVisiblePages || this._getVisiblePages(); - var pageView = this.renderingQueue.getHighestPriority(visiblePages, this._pages, this.scroll.down); - if (pageView) { - this._ensurePdfPageLoaded(pageView).then(function () { - this.renderingQueue.renderView(pageView); - }.bind(this)); - return true; - } - return false; - }, - getPageTextContent: function getPageTextContent(pageIndex) { - return this.pdfDocument.getPage(pageIndex + 1).then(function (page) { - return page.getTextContent({ normalizeWhitespace: true }); - }); - }, - createTextLayerBuilder: function createTextLayerBuilder(textLayerDiv, pageIndex, viewport, enhanceTextSelection) { - return new _text_layer_builder.TextLayerBuilder({ - textLayerDiv: textLayerDiv, - eventBus: this.eventBus, - pageIndex: pageIndex, - viewport: viewport, - findController: this.isInPresentationMode ? null : this.findController, - enhanceTextSelection: this.isInPresentationMode ? false : enhanceTextSelection - }); - }, - createAnnotationLayerBuilder: function createAnnotationLayerBuilder(pageDiv, pdfPage, renderInteractiveForms) { - return new _annotation_layer_builder.AnnotationLayerBuilder({ - pageDiv: pageDiv, - pdfPage: pdfPage, - renderInteractiveForms: renderInteractiveForms, - linkService: this.linkService, - downloadManager: this.downloadManager - }); - }, - setFindController: function setFindController(findController) { - this.findController = findController; - }, - getPagesOverview: function getPagesOverview() { - var pagesOverview = this._pages.map(function (pageView) { - var viewport = pageView.pdfPage.getViewport(1); - return { - width: viewport.width, - height: viewport.height, - rotation: viewport.rotation - }; - }); - if (!this.enablePrintAutoRotate) { - return pagesOverview; - } - var isFirstPagePortrait = isPortraitOrientation(pagesOverview[0]); - return pagesOverview.map(function (size) { - if (isFirstPagePortrait === isPortraitOrientation(size)) { - return size; - } - return { - width: size.height, - height: size.width, - rotation: (size.rotation + 90) % 360 - }; - }); - } - }; - return PDFViewer; -}(); -exports.PresentationModeState = PresentationModeState; -exports.PDFViewer = PDFViewer; - -/***/ }), -/* 11 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.DefaultTextLayerFactory = exports.TextLayerBuilder = undefined; - -var _dom_events = __w_pdfjs_require__(2); - -var _pdfjs = __w_pdfjs_require__(1); - -var EXPAND_DIVS_TIMEOUT = 300; -var TextLayerBuilder = function TextLayerBuilderClosure() { - function TextLayerBuilder(options) { - this.textLayerDiv = options.textLayerDiv; - this.eventBus = options.eventBus || _dom_events.domEvents.getGlobalEventBus(); - this.textContent = null; - this.renderingDone = false; - this.pageIdx = options.pageIndex; - this.pageNumber = this.pageIdx + 1; - this.matches = []; - this.viewport = options.viewport; - this.textDivs = []; - this.findController = options.findController || null; - this.textLayerRenderTask = null; - this.enhanceTextSelection = options.enhanceTextSelection; - this._bindMouse(); - } - TextLayerBuilder.prototype = { - _finishRendering: function TextLayerBuilder_finishRendering() { - this.renderingDone = true; - if (!this.enhanceTextSelection) { - var endOfContent = document.createElement('div'); - endOfContent.className = 'endOfContent'; - this.textLayerDiv.appendChild(endOfContent); - } - this.eventBus.dispatch('textlayerrendered', { - source: this, - pageNumber: this.pageNumber, - numTextDivs: this.textDivs.length - }); - }, - render: function TextLayerBuilder_render(timeout) { - if (!this.textContent || this.renderingDone) { - return; - } - this.cancel(); - this.textDivs = []; - var textLayerFrag = document.createDocumentFragment(); - this.textLayerRenderTask = (0, _pdfjs.renderTextLayer)({ - textContent: this.textContent, - container: textLayerFrag, - viewport: this.viewport, - textDivs: this.textDivs, - timeout: timeout, - enhanceTextSelection: this.enhanceTextSelection - }); - this.textLayerRenderTask.promise.then(function () { - this.textLayerDiv.appendChild(textLayerFrag); - this._finishRendering(); - this.updateMatches(); - }.bind(this), function (reason) {}); - }, - cancel: function TextLayerBuilder_cancel() { - if (this.textLayerRenderTask) { - this.textLayerRenderTask.cancel(); - this.textLayerRenderTask = null; - } - }, - setTextContent: function TextLayerBuilder_setTextContent(textContent) { - this.cancel(); - this.textContent = textContent; - }, - convertMatches: function TextLayerBuilder_convertMatches(matches, matchesLength) { - var i = 0; - var iIndex = 0; - var bidiTexts = this.textContent.items; - var end = bidiTexts.length - 1; - var queryLen = this.findController === null ? 0 : this.findController.state.query.length; - var ret = []; - if (!matches) { - return ret; - } - for (var m = 0, len = matches.length; m < len; m++) { - var matchIdx = matches[m]; - while (i !== end && matchIdx >= iIndex + bidiTexts[i].str.length) { - iIndex += bidiTexts[i].str.length; - i++; - } - if (i === bidiTexts.length) { - console.error('Could not find a matching mapping'); - } - var match = { - begin: { - divIdx: i, - offset: matchIdx - iIndex - } - }; - if (matchesLength) { - matchIdx += matchesLength[m]; - } else { - matchIdx += queryLen; - } - while (i !== end && matchIdx > iIndex + bidiTexts[i].str.length) { - iIndex += bidiTexts[i].str.length; - i++; - } - match.end = { - divIdx: i, - offset: matchIdx - iIndex - }; - ret.push(match); - } - return ret; - }, - renderMatches: function TextLayerBuilder_renderMatches(matches) { - if (matches.length === 0) { - return; - } - var bidiTexts = this.textContent.items; - var textDivs = this.textDivs; - var prevEnd = null; - var pageIdx = this.pageIdx; - var isSelectedPage = this.findController === null ? false : pageIdx === this.findController.selected.pageIdx; - var selectedMatchIdx = this.findController === null ? -1 : this.findController.selected.matchIdx; - var highlightAll = this.findController === null ? false : this.findController.state.highlightAll; - var infinity = { - divIdx: -1, - offset: undefined - }; - function beginText(begin, className) { - var divIdx = begin.divIdx; - textDivs[divIdx].textContent = ''; - appendTextToDiv(divIdx, 0, begin.offset, className); - } - function appendTextToDiv(divIdx, fromOffset, toOffset, className) { - var div = textDivs[divIdx]; - var content = bidiTexts[divIdx].str.substring(fromOffset, toOffset); - var node = document.createTextNode(content); - if (className) { - var span = document.createElement('span'); - span.className = className; - span.appendChild(node); - div.appendChild(span); - return; - } - div.appendChild(node); - } - var i0 = selectedMatchIdx, - i1 = i0 + 1; - if (highlightAll) { - i0 = 0; - i1 = matches.length; - } else if (!isSelectedPage) { - return; - } - for (var i = i0; i < i1; i++) { - var match = matches[i]; - var begin = match.begin; - var end = match.end; - var isSelected = isSelectedPage && i === selectedMatchIdx; - var highlightSuffix = isSelected ? ' selected' : ''; - if (this.findController) { - this.findController.updateMatchPosition(pageIdx, i, textDivs, begin.divIdx); - } - if (!prevEnd || begin.divIdx !== prevEnd.divIdx) { - if (prevEnd !== null) { - appendTextToDiv(prevEnd.divIdx, prevEnd.offset, infinity.offset); - } - beginText(begin); - } else { - appendTextToDiv(prevEnd.divIdx, prevEnd.offset, begin.offset); - } - if (begin.divIdx === end.divIdx) { - appendTextToDiv(begin.divIdx, begin.offset, end.offset, 'highlight' + highlightSuffix); - } else { - appendTextToDiv(begin.divIdx, begin.offset, infinity.offset, 'highlight begin' + highlightSuffix); - for (var n0 = begin.divIdx + 1, n1 = end.divIdx; n0 < n1; n0++) { - textDivs[n0].className = 'highlight middle' + highlightSuffix; - } - beginText(end, 'highlight end' + highlightSuffix); - } - prevEnd = end; - } - if (prevEnd) { - appendTextToDiv(prevEnd.divIdx, prevEnd.offset, infinity.offset); - } - }, - updateMatches: function TextLayerBuilder_updateMatches() { - if (!this.renderingDone) { - return; - } - var matches = this.matches; - var textDivs = this.textDivs; - var bidiTexts = this.textContent.items; - var clearedUntilDivIdx = -1; - for (var i = 0, len = matches.length; i < len; i++) { - var match = matches[i]; - var begin = Math.max(clearedUntilDivIdx, match.begin.divIdx); - for (var n = begin, end = match.end.divIdx; n <= end; n++) { - var div = textDivs[n]; - div.textContent = bidiTexts[n].str; - div.className = ''; - } - clearedUntilDivIdx = match.end.divIdx + 1; - } - if (this.findController === null || !this.findController.active) { - return; - } - var pageMatches, pageMatchesLength; - if (this.findController !== null) { - pageMatches = this.findController.pageMatches[this.pageIdx] || null; - pageMatchesLength = this.findController.pageMatchesLength ? this.findController.pageMatchesLength[this.pageIdx] || null : null; - } - this.matches = this.convertMatches(pageMatches, pageMatchesLength); - this.renderMatches(this.matches); - }, - _bindMouse: function TextLayerBuilder_bindMouse() { - var div = this.textLayerDiv; - var self = this; - var expandDivsTimer = null; - div.addEventListener('mousedown', function (e) { - if (self.enhanceTextSelection && self.textLayerRenderTask) { - self.textLayerRenderTask.expandTextDivs(true); - if (expandDivsTimer) { - clearTimeout(expandDivsTimer); - expandDivsTimer = null; - } - return; - } - var end = div.querySelector('.endOfContent'); - if (!end) { - return; - } - var adjustTop = e.target !== div; - adjustTop = adjustTop && window.getComputedStyle(end).getPropertyValue('-moz-user-select') !== 'none'; - if (adjustTop) { - var divBounds = div.getBoundingClientRect(); - var r = Math.max(0, (e.pageY - divBounds.top) / divBounds.height); - end.style.top = (r * 100).toFixed(2) + '%'; - } - end.classList.add('active'); - }); - div.addEventListener('mouseup', function (e) { - if (self.enhanceTextSelection && self.textLayerRenderTask) { - expandDivsTimer = setTimeout(function () { - if (self.textLayerRenderTask) { - self.textLayerRenderTask.expandTextDivs(false); - } - expandDivsTimer = null; - }, EXPAND_DIVS_TIMEOUT); - return; - } - var end = div.querySelector('.endOfContent'); - if (!end) { - return; - } - end.style.top = ''; - end.classList.remove('active'); - }); - } - }; - return TextLayerBuilder; -}(); -function DefaultTextLayerFactory() {} -DefaultTextLayerFactory.prototype = { - createTextLayerBuilder: function createTextLayerBuilder(textLayerDiv, pageIndex, viewport, enhanceTextSelection) { - return new TextLayerBuilder({ - textLayerDiv: textLayerDiv, - pageIndex: pageIndex, - viewport: viewport, - enhanceTextSelection: enhanceTextSelection - }); - } -}; -exports.TextLayerBuilder = TextLayerBuilder; -exports.DefaultTextLayerFactory = DefaultTextLayerFactory; - -/***/ }), -/* 12 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); - -var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; - -var defaultPreferences = null; -function getDefaultPreferences() { - if (!defaultPreferences) { - defaultPreferences = Promise.resolve({ - "showPreviousViewOnLoad": true, - "defaultZoomValue": "", - "sidebarViewOnLoad": 0, - "enableHandToolOnLoad": false, - "enableWebGL": false, - "pdfBugEnabled": false, - "disableRange": false, - "disableStream": false, - "disableAutoFetch": false, - "disableFontFace": false, - "disableTextLayer": false, - "useOnlyCssZoom": false, - "externalLinkTarget": 0, - "enhanceTextSelection": false, - "renderer": "canvas", - "renderInteractiveForms": false, - "enablePrintAutoRotate": false, - "disablePageLabels": false - }); - } - return defaultPreferences; -} -function cloneObj(obj) { - var result = {}; - for (var i in obj) { - if (Object.prototype.hasOwnProperty.call(obj, i)) { - result[i] = obj[i]; - } - } - return result; -} -var Preferences = { - prefs: null, - isInitializedPromiseResolved: false, - initializedPromise: null, - initialize: function preferencesInitialize() { - return this.initializedPromise = getDefaultPreferences().then(function (defaults) { - Object.defineProperty(this, 'defaults', { - value: Object.freeze(defaults), - writable: false, - enumerable: true, - configurable: false - }); - this.prefs = cloneObj(defaults); - return this._readFromStorage(defaults); - }.bind(this)).then(function (prefObj) { - this.isInitializedPromiseResolved = true; - if (prefObj) { - this.prefs = prefObj; - } - }.bind(this)); - }, - _writeToStorage: function preferences_writeToStorage(prefObj) { - return Promise.resolve(); - }, - _readFromStorage: function preferences_readFromStorage(prefObj) { - return Promise.resolve(); - }, - reset: function preferencesReset() { - return this.initializedPromise.then(function () { - this.prefs = cloneObj(this.defaults); - return this._writeToStorage(this.defaults); - }.bind(this)); - }, - reload: function preferencesReload() { - return this.initializedPromise.then(function () { - this._readFromStorage(this.defaults).then(function (prefObj) { - if (prefObj) { - this.prefs = prefObj; - } - }.bind(this)); - }.bind(this)); - }, - set: function preferencesSet(name, value) { - return this.initializedPromise.then(function () { - if (this.defaults[name] === undefined) { - throw new Error('preferencesSet: \'' + name + '\' is undefined.'); - } else if (value === undefined) { - throw new Error('preferencesSet: no value is specified.'); - } - var valueType = typeof value === "undefined" ? "undefined" : _typeof(value); - var defaultType = _typeof(this.defaults[name]); - if (valueType !== defaultType) { - if (valueType === 'number' && defaultType === 'string') { - value = value.toString(); - } else { - throw new Error('Preferences_set: \'' + value + '\' is a \"' + valueType + '\", expected \"' + defaultType + '\".'); - } - } else { - if (valueType === 'number' && (value | 0) !== value) { - throw new Error('Preferences_set: \'' + value + '\' must be an \"integer\".'); - } - } - this.prefs[name] = value; - return this._writeToStorage(this.prefs); - }.bind(this)); - }, - get: function preferencesGet(name) { - return this.initializedPromise.then(function () { - var defaultValue = this.defaults[name]; - if (defaultValue === undefined) { - throw new Error('preferencesGet: \'' + name + '\' is undefined.'); - } else { - var prefValue = this.prefs[name]; - if (prefValue !== undefined) { - return prefValue; - } - } - return defaultValue; - }.bind(this)); - } -}; -{ - Preferences._writeToStorage = function (prefObj) { - return new Promise(function (resolve) { - localStorage.setItem('pdfjs.preferences', JSON.stringify(prefObj)); - resolve(); - }); - }; - Preferences._readFromStorage = function (prefObj) { - return new Promise(function (resolve) { - var readPrefs = JSON.parse(localStorage.getItem('pdfjs.preferences')); - resolve(readPrefs); - }); - }; -} -exports.Preferences = Preferences; - -/***/ }), -/* 13 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.DownloadManager = undefined; - -var _pdfjs = __w_pdfjs_require__(1); - -var _app = __w_pdfjs_require__(14); - -; -function download(blobUrl, filename) { - var a = document.createElement('a'); - if (a.click) { - a.href = blobUrl; - a.target = '_parent'; - if ('download' in a) { - a.download = filename; - } - (document.body || document.documentElement).appendChild(a); - a.click(); - a.parentNode.removeChild(a); - } else { - if (window.top === window && blobUrl.split('#')[0] === window.location.href.split('#')[0]) { - var padCharacter = blobUrl.indexOf('?') === -1 ? '?' : '&'; - blobUrl = blobUrl.replace(/#|$/, padCharacter + '$&'); - } - window.open(blobUrl, '_parent'); +var EXPAND_DIVS_TIMEOUT = 300; +var TextLayerBuilder = function TextLayerBuilderClosure() { + function TextLayerBuilder(options) { + this.textLayerDiv = options.textLayerDiv; + this.eventBus = options.eventBus || (0, _dom_events.getGlobalEventBus)(); + this.textContent = null; + this.renderingDone = false; + this.pageIdx = options.pageIndex; + this.pageNumber = this.pageIdx + 1; + this.matches = []; + this.viewport = options.viewport; + this.textDivs = []; + this.findController = options.findController || null; + this.textLayerRenderTask = null; + this.enhanceTextSelection = options.enhanceTextSelection; + this._bindMouse(); } -} -function DownloadManager() {} -DownloadManager.prototype = { - downloadUrl: function DownloadManager_downloadUrl(url, filename) { - if (!(0, _pdfjs.createValidAbsoluteUrl)(url, 'http://example.com')) { - return; - } - download(url + '#pdfjs.action=download', filename); - }, - downloadData: function DownloadManager_downloadData(data, filename, contentType) { - if (navigator.msSaveBlob) { - return navigator.msSaveBlob(new Blob([data], { type: contentType }), filename); - } - var blobUrl = (0, _pdfjs.createObjectURL)(data, contentType, _pdfjs.PDFJS.disableCreateObjectURL); - download(blobUrl, filename); - }, - download: function DownloadManager_download(blob, url, filename) { - if (navigator.msSaveBlob) { - if (!navigator.msSaveBlob(blob, filename)) { - this.downloadUrl(url, filename); + TextLayerBuilder.prototype = { + _finishRendering: function TextLayerBuilder_finishRendering() { + this.renderingDone = true; + if (!this.enhanceTextSelection) { + var endOfContent = document.createElement('div'); + endOfContent.className = 'endOfContent'; + this.textLayerDiv.appendChild(endOfContent); } - return; - } - if (_pdfjs.PDFJS.disableCreateObjectURL) { - this.downloadUrl(url, filename); - return; - } - var blobUrl = URL.createObjectURL(blob); - download(blobUrl, filename); - } -}; -var GenericExternalServices = Object.create(_app.DefaultExternalServices); -GenericExternalServices.createDownloadManager = function () { - return new DownloadManager(); -}; -_app.PDFViewerApplication.externalServices = GenericExternalServices; -exports.DownloadManager = DownloadManager; - -/***/ }), -/* 14 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.PDFPrintServiceFactory = exports.DefaultExternalServices = exports.PDFViewerApplication = undefined; - -var _ui_utils = __w_pdfjs_require__(0); - -var _pdfjs = __w_pdfjs_require__(1); - -var _pdf_rendering_queue = __w_pdfjs_require__(3); - -var _pdf_sidebar = __w_pdfjs_require__(23); - -var _pdf_viewer = __w_pdfjs_require__(10); - -var _dom_events = __w_pdfjs_require__(2); - -var _hand_tool = __w_pdfjs_require__(16); - -var _overlay_manager = __w_pdfjs_require__(6); - -var _password_prompt = __w_pdfjs_require__(17); - -var _pdf_attachment_viewer = __w_pdfjs_require__(18); - -var _pdf_document_properties = __w_pdfjs_require__(19); - -var _pdf_find_bar = __w_pdfjs_require__(20); - -var _pdf_find_controller = __w_pdfjs_require__(5); - -var _pdf_history = __w_pdfjs_require__(8); - -var _pdf_link_service = __w_pdfjs_require__(4); - -var _pdf_outline_viewer = __w_pdfjs_require__(21); - -var _pdf_presentation_mode = __w_pdfjs_require__(22); - -var _pdf_thumbnail_viewer = __w_pdfjs_require__(25); - -var _preferences = __w_pdfjs_require__(12); - -var _secondary_toolbar = __w_pdfjs_require__(27); - -var _toolbar = __w_pdfjs_require__(28); - -var _view_history = __w_pdfjs_require__(29); - -var DEFAULT_SCALE_DELTA = 1.1; -var DISABLE_AUTO_FETCH_LOADING_BAR_TIMEOUT = 5000; -function configure(PDFJS) { - PDFJS.imageResourcesPath = './images/'; - PDFJS.workerSrc = '../build/pdf.worker.js'; - PDFJS.cMapUrl = '../web/cmaps/'; - PDFJS.cMapPacked = true; -} -var DefaultExternalServices = { - updateFindControlState: function updateFindControlState(data) {}, - initPassiveLoading: function initPassiveLoading(callbacks) {}, - fallback: function fallback(data, callback) {}, - reportTelemetry: function reportTelemetry(data) {}, - createDownloadManager: function createDownloadManager() { - throw new Error('Not implemented: createDownloadManager'); - }, - supportsIntegratedFind: false, - supportsDocumentFonts: true, - supportsDocumentColors: true, - supportedMouseWheelZoomModifierKeys: { - ctrlKey: true, - metaKey: true - } -}; -var PDFViewerApplication = { - initialBookmark: document.location.hash.substring(1), - initialDestination: null, - initialized: false, - fellback: false, - appConfig: null, - pdfDocument: null, - pdfLoadingTask: null, - printService: null, - pdfViewer: null, - pdfThumbnailViewer: null, - pdfRenderingQueue: null, - pdfPresentationMode: null, - pdfDocumentProperties: null, - pdfLinkService: null, - pdfHistory: null, - pdfSidebar: null, - pdfOutlineViewer: null, - pdfAttachmentViewer: null, - store: null, - downloadManager: null, - toolbar: null, - secondaryToolbar: null, - eventBus: null, - pageRotation: 0, - isInitialViewSet: false, - viewerPrefs: { - sidebarViewOnLoad: _pdf_sidebar.SidebarView.NONE, - pdfBugEnabled: false, - showPreviousViewOnLoad: true, - defaultZoomValue: '', - disablePageLabels: false, - renderer: 'canvas', - enhanceTextSelection: false, - renderInteractiveForms: false, - enablePrintAutoRotate: false - }, - isViewerEmbedded: window.parent !== window, - url: '', - baseUrl: '', - externalServices: DefaultExternalServices, - initialize: function pdfViewInitialize(appConfig) { - var self = this; - _preferences.Preferences.initialize(); - this.preferences = _preferences.Preferences; - configure(_pdfjs.PDFJS); - this.appConfig = appConfig; - return this._readPreferences().then(function () { - return self._initializeViewerComponents(); - }).then(function () { - self.bindEvents(); - self.bindWindowEvents(); - _ui_utils.localized.then(function () { - self.eventBus.dispatch('localized'); + this.eventBus.dispatch('textlayerrendered', { + source: this, + pageNumber: this.pageNumber, + numTextDivs: this.textDivs.length }); - if (self.isViewerEmbedded && !_pdfjs.PDFJS.isExternalLinkTargetSet()) { - _pdfjs.PDFJS.externalLinkTarget = _pdfjs.PDFJS.LinkTarget.TOP; - } - self.initialized = true; - }); - }, - _readPreferences: function _readPreferences() { - var self = this; - return Promise.all([_preferences.Preferences.get('enableWebGL').then(function resolved(value) { - _pdfjs.PDFJS.disableWebGL = !value; - }), _preferences.Preferences.get('sidebarViewOnLoad').then(function resolved(value) { - self.viewerPrefs['sidebarViewOnLoad'] = value; - }), _preferences.Preferences.get('pdfBugEnabled').then(function resolved(value) { - self.viewerPrefs['pdfBugEnabled'] = value; - }), _preferences.Preferences.get('showPreviousViewOnLoad').then(function resolved(value) { - self.viewerPrefs['showPreviousViewOnLoad'] = value; - }), _preferences.Preferences.get('defaultZoomValue').then(function resolved(value) { - self.viewerPrefs['defaultZoomValue'] = value; - }), _preferences.Preferences.get('enhanceTextSelection').then(function resolved(value) { - self.viewerPrefs['enhanceTextSelection'] = value; - }), _preferences.Preferences.get('disableTextLayer').then(function resolved(value) { - if (_pdfjs.PDFJS.disableTextLayer === true) { - return; - } - _pdfjs.PDFJS.disableTextLayer = value; - }), _preferences.Preferences.get('disableRange').then(function resolved(value) { - if (_pdfjs.PDFJS.disableRange === true) { - return; - } - _pdfjs.PDFJS.disableRange = value; - }), _preferences.Preferences.get('disableStream').then(function resolved(value) { - if (_pdfjs.PDFJS.disableStream === true) { - return; - } - _pdfjs.PDFJS.disableStream = value; - }), _preferences.Preferences.get('disableAutoFetch').then(function resolved(value) { - _pdfjs.PDFJS.disableAutoFetch = value; - }), _preferences.Preferences.get('disableFontFace').then(function resolved(value) { - if (_pdfjs.PDFJS.disableFontFace === true) { - return; - } - _pdfjs.PDFJS.disableFontFace = value; - }), _preferences.Preferences.get('useOnlyCssZoom').then(function resolved(value) { - _pdfjs.PDFJS.useOnlyCssZoom = value; - }), _preferences.Preferences.get('externalLinkTarget').then(function resolved(value) { - if (_pdfjs.PDFJS.isExternalLinkTargetSet()) { + }, + render: function TextLayerBuilder_render(timeout) { + if (!this.textContent || this.renderingDone) { return; } - _pdfjs.PDFJS.externalLinkTarget = value; - }), _preferences.Preferences.get('renderer').then(function resolved(value) { - self.viewerPrefs['renderer'] = value; - }), _preferences.Preferences.get('renderInteractiveForms').then(function resolved(value) { - self.viewerPrefs['renderInteractiveForms'] = value; - }), _preferences.Preferences.get('disablePageLabels').then(function resolved(value) { - self.viewerPrefs['disablePageLabels'] = value; - }), _preferences.Preferences.get('enablePrintAutoRotate').then(function resolved(value) { - self.viewerPrefs['enablePrintAutoRotate'] = value; - })]).catch(function (reason) {}); - }, - _initializeViewerComponents: function _initializeViewerComponents() { - var self = this; - var appConfig = this.appConfig; - return new Promise(function (resolve, reject) { - var eventBus = appConfig.eventBus || (0, _dom_events.getGlobalEventBus)(); - self.eventBus = eventBus; - var pdfRenderingQueue = new _pdf_rendering_queue.PDFRenderingQueue(); - pdfRenderingQueue.onIdle = self.cleanup.bind(self); - self.pdfRenderingQueue = pdfRenderingQueue; - var pdfLinkService = new _pdf_link_service.PDFLinkService({ eventBus: eventBus }); - self.pdfLinkService = pdfLinkService; - var downloadManager = self.externalServices.createDownloadManager(); - self.downloadManager = downloadManager; - var container = appConfig.mainContainer; - var viewer = appConfig.viewerContainer; - self.pdfViewer = new _pdf_viewer.PDFViewer({ - container: container, - viewer: viewer, - eventBus: eventBus, - renderingQueue: pdfRenderingQueue, - linkService: pdfLinkService, - downloadManager: downloadManager, - renderer: self.viewerPrefs['renderer'], - enhanceTextSelection: self.viewerPrefs['enhanceTextSelection'], - renderInteractiveForms: self.viewerPrefs['renderInteractiveForms'], - enablePrintAutoRotate: self.viewerPrefs['enablePrintAutoRotate'] - }); - pdfRenderingQueue.setViewer(self.pdfViewer); - pdfLinkService.setViewer(self.pdfViewer); - var thumbnailContainer = appConfig.sidebar.thumbnailView; - self.pdfThumbnailViewer = new _pdf_thumbnail_viewer.PDFThumbnailViewer({ - container: thumbnailContainer, - renderingQueue: pdfRenderingQueue, - linkService: pdfLinkService - }); - pdfRenderingQueue.setThumbnailViewer(self.pdfThumbnailViewer); - self.pdfHistory = new _pdf_history.PDFHistory({ - linkService: pdfLinkService, - eventBus: eventBus - }); - pdfLinkService.setHistory(self.pdfHistory); - self.findController = new _pdf_find_controller.PDFFindController({ pdfViewer: self.pdfViewer }); - self.findController.onUpdateResultsCount = function (matchCount) { - if (self.supportsIntegratedFind) { - return; - } - self.findBar.updateResultsCount(matchCount); - }; - self.findController.onUpdateState = function (state, previous, matchCount) { - if (self.supportsIntegratedFind) { - self.externalServices.updateFindControlState({ - result: state, - findPrevious: previous - }); - } else { - self.findBar.updateUIState(state, previous, matchCount); - } - }; - self.pdfViewer.setFindController(self.findController); - var findBarConfig = Object.create(appConfig.findBar); - findBarConfig.findController = self.findController; - findBarConfig.eventBus = eventBus; - self.findBar = new _pdf_find_bar.PDFFindBar(findBarConfig); - self.overlayManager = _overlay_manager.OverlayManager; - self.handTool = new _hand_tool.HandTool({ - container: container, - eventBus: eventBus - }); - self.pdfDocumentProperties = new _pdf_document_properties.PDFDocumentProperties(appConfig.documentProperties); - self.toolbar = new _toolbar.Toolbar(appConfig.toolbar, container, eventBus); - self.secondaryToolbar = new _secondary_toolbar.SecondaryToolbar(appConfig.secondaryToolbar, container, eventBus); - if (self.supportsFullscreen) { - self.pdfPresentationMode = new _pdf_presentation_mode.PDFPresentationMode({ - container: container, - viewer: viewer, - pdfViewer: self.pdfViewer, - eventBus: eventBus, - contextMenuItems: appConfig.fullscreen - }); - } - self.passwordPrompt = new _password_prompt.PasswordPrompt(appConfig.passwordOverlay); - self.pdfOutlineViewer = new _pdf_outline_viewer.PDFOutlineViewer({ - container: appConfig.sidebar.outlineView, - eventBus: eventBus, - linkService: pdfLinkService - }); - self.pdfAttachmentViewer = new _pdf_attachment_viewer.PDFAttachmentViewer({ - container: appConfig.sidebar.attachmentsView, - eventBus: eventBus, - downloadManager: downloadManager + this.cancel(); + this.textDivs = []; + var textLayerFrag = document.createDocumentFragment(); + this.textLayerRenderTask = (0, _pdfjs.renderTextLayer)({ + textContent: this.textContent, + container: textLayerFrag, + viewport: this.viewport, + textDivs: this.textDivs, + timeout: timeout, + enhanceTextSelection: this.enhanceTextSelection }); - var sidebarConfig = Object.create(appConfig.sidebar); - sidebarConfig.pdfViewer = self.pdfViewer; - sidebarConfig.pdfThumbnailViewer = self.pdfThumbnailViewer; - sidebarConfig.pdfOutlineViewer = self.pdfOutlineViewer; - sidebarConfig.eventBus = eventBus; - self.pdfSidebar = new _pdf_sidebar.PDFSidebar(sidebarConfig); - self.pdfSidebar.onToggled = self.forceRendering.bind(self); - resolve(undefined); - }); - }, - run: function pdfViewRun(config) { - this.initialize(config).then(webViewerInitialized); - }, - zoomIn: function pdfViewZoomIn(ticks) { - var newScale = this.pdfViewer.currentScale; - do { - newScale = (newScale * DEFAULT_SCALE_DELTA).toFixed(2); - newScale = Math.ceil(newScale * 10) / 10; - newScale = Math.min(_ui_utils.MAX_SCALE, newScale); - } while (--ticks > 0 && newScale < _ui_utils.MAX_SCALE); - this.pdfViewer.currentScaleValue = newScale; - }, - zoomOut: function pdfViewZoomOut(ticks) { - var newScale = this.pdfViewer.currentScale; - do { - newScale = (newScale / DEFAULT_SCALE_DELTA).toFixed(2); - newScale = Math.floor(newScale * 10) / 10; - newScale = Math.max(_ui_utils.MIN_SCALE, newScale); - } while (--ticks > 0 && newScale > _ui_utils.MIN_SCALE); - this.pdfViewer.currentScaleValue = newScale; - }, - get pagesCount() { - return this.pdfDocument ? this.pdfDocument.numPages : 0; - }, - set page(val) { - this.pdfViewer.currentPageNumber = val; - }, - get page() { - return this.pdfViewer.currentPageNumber; - }, - get printing() { - return !!this.printService; - }, - get supportsPrinting() { - return PDFPrintServiceFactory.instance.supportsPrinting; - }, - get supportsFullscreen() { - var support; - var doc = document.documentElement; - support = !!(doc.requestFullscreen || doc.mozRequestFullScreen || doc.webkitRequestFullScreen || doc.msRequestFullscreen); - if (document.fullscreenEnabled === false || document.mozFullScreenEnabled === false || document.webkitFullscreenEnabled === false || document.msFullscreenEnabled === false) { - support = false; - } - if (support && _pdfjs.PDFJS.disableFullscreen === true) { - support = false; - } - return (0, _pdfjs.shadow)(this, 'supportsFullscreen', support); - }, - get supportsIntegratedFind() { - return this.externalServices.supportsIntegratedFind; - }, - get supportsDocumentFonts() { - return this.externalServices.supportsDocumentFonts; - }, - get supportsDocumentColors() { - return this.externalServices.supportsDocumentColors; - }, - get loadingBar() { - var bar = new _ui_utils.ProgressBar('#loadingBar', {}); - return (0, _pdfjs.shadow)(this, 'loadingBar', bar); - }, - get supportedMouseWheelZoomModifierKeys() { - return this.externalServices.supportedMouseWheelZoomModifierKeys; - }, - initPassiveLoading: function pdfViewInitPassiveLoading() { - throw new Error('Not implemented: initPassiveLoading'); - }, - setTitleUsingUrl: function pdfViewSetTitleUsingUrl(url) { - this.url = url; - this.baseUrl = url.split('#')[0]; - var title = (0, _ui_utils.getPDFFileNameFromURL)(url, ''); - if (!title) { - try { - title = decodeURIComponent((0, _pdfjs.getFilenameFromUrl)(url)) || url; - } catch (e) { - title = url; - } - } - this.setTitle(title); - }, - setTitle: function pdfViewSetTitle(title) { - if (this.isViewerEmbedded) { - return; - } - document.title = title; - }, - close: function pdfViewClose() { - var errorWrapper = this.appConfig.errorWrapper.container; - errorWrapper.setAttribute('hidden', 'true'); - if (!this.pdfLoadingTask) { - return Promise.resolve(); - } - var promise = this.pdfLoadingTask.destroy(); - this.pdfLoadingTask = null; - if (this.pdfDocument) { - this.pdfDocument = null; - this.pdfThumbnailViewer.setDocument(null); - this.pdfViewer.setDocument(null); - this.pdfLinkService.setDocument(null, null); - } - this.store = null; - this.isInitialViewSet = false; - this.pdfSidebar.reset(); - this.pdfOutlineViewer.reset(); - this.pdfAttachmentViewer.reset(); - this.findController.reset(); - this.findBar.reset(); - this.toolbar.reset(); - this.secondaryToolbar.reset(); - if (typeof PDFBug !== 'undefined') { - PDFBug.cleanup(); - } - return promise; - }, - open: function pdfViewOpen(file, args) { - if (arguments.length > 2 || typeof args === 'number') { - return Promise.reject(new Error('Call of open() with obsolete signature.')); - } - if (this.pdfLoadingTask) { - return this.close().then(function () { - _preferences.Preferences.reload(); - return this.open(file, args); - }.bind(this)); - } - var parameters = Object.create(null), - scale; - if (typeof file === 'string') { - this.setTitleUsingUrl(file); - parameters.url = file; - } else if (file && 'byteLength' in file) { - parameters.data = file; - } else if (file.url && file.originalUrl) { - this.setTitleUsingUrl(file.originalUrl); - parameters.url = file.url; - } - if (args) { - for (var prop in args) { - parameters[prop] = args[prop]; - } - if (args.scale) { - scale = args.scale; - } - if (args.length) { - this.pdfDocumentProperties.setFileSize(args.length); - } - } - var self = this; - self.downloadComplete = false; - var loadingTask = (0, _pdfjs.getDocument)(parameters); - this.pdfLoadingTask = loadingTask; - loadingTask.onPassword = function passwordNeeded(updateCallback, reason) { - self.passwordPrompt.setUpdateCallback(updateCallback, reason); - self.passwordPrompt.open(); - }; - loadingTask.onProgress = function getDocumentProgress(progressData) { - self.progress(progressData.loaded / progressData.total); - }; - loadingTask.onUnsupportedFeature = this.fallback.bind(this); - return loadingTask.promise.then(function getDocumentCallback(pdfDocument) { - self.load(pdfDocument, scale); - }, function getDocumentError(exception) { - var message = exception && exception.message; - var loadingErrorMessage = _ui_utils.mozL10n.get('loading_error', null, 'An error occurred while loading the PDF.'); - if (exception instanceof _pdfjs.InvalidPDFException) { - loadingErrorMessage = _ui_utils.mozL10n.get('invalid_file_error', null, 'Invalid or corrupted PDF file.'); - } else if (exception instanceof _pdfjs.MissingPDFException) { - loadingErrorMessage = _ui_utils.mozL10n.get('missing_file_error', null, 'Missing PDF file.'); - } else if (exception instanceof _pdfjs.UnexpectedResponseException) { - loadingErrorMessage = _ui_utils.mozL10n.get('unexpected_response_error', null, 'Unexpected server response.'); - } - var moreInfo = { message: message }; - self.error(loadingErrorMessage, moreInfo); - throw new Error(loadingErrorMessage); - }); - }, - download: function pdfViewDownload() { - function downloadByUrl() { - downloadManager.downloadUrl(url, filename); - } - var url = this.baseUrl; - var filename = (0, _ui_utils.getPDFFileNameFromURL)(this.url); - var downloadManager = this.downloadManager; - downloadManager.onerror = function (err) { - PDFViewerApplication.error('PDF failed to download.'); - }; - if (!this.pdfDocument) { - downloadByUrl(); - return; - } - if (!this.downloadComplete) { - downloadByUrl(); - return; - } - this.pdfDocument.getData().then(function getDataSuccess(data) { - var blob = (0, _pdfjs.createBlob)(data, 'application/pdf'); - downloadManager.download(blob, url, filename); - }, downloadByUrl).then(null, downloadByUrl); - }, - fallback: function pdfViewFallback(featureId) {}, - error: function pdfViewError(message, moreInfo) { - var moreInfoText = _ui_utils.mozL10n.get('error_version_info', { - version: _pdfjs.version || '?', - build: _pdfjs.build || '?' - }, 'PDF.js v{{version}} (build: {{build}})') + '\n'; - if (moreInfo) { - moreInfoText += _ui_utils.mozL10n.get('error_message', { message: moreInfo.message }, 'Message: {{message}}'); - if (moreInfo.stack) { - moreInfoText += '\n' + _ui_utils.mozL10n.get('error_stack', { stack: moreInfo.stack }, 'Stack: {{stack}}'); - } else { - if (moreInfo.filename) { - moreInfoText += '\n' + _ui_utils.mozL10n.get('error_file', { file: moreInfo.filename }, 'File: {{file}}'); - } - if (moreInfo.lineNumber) { - moreInfoText += '\n' + _ui_utils.mozL10n.get('error_line', { line: moreInfo.lineNumber }, 'Line: {{line}}'); - } - } - } - var errorWrapperConfig = this.appConfig.errorWrapper; - var errorWrapper = errorWrapperConfig.container; - errorWrapper.removeAttribute('hidden'); - var errorMessage = errorWrapperConfig.errorMessage; - errorMessage.textContent = message; - var closeButton = errorWrapperConfig.closeButton; - closeButton.onclick = function () { - errorWrapper.setAttribute('hidden', 'true'); - }; - var errorMoreInfo = errorWrapperConfig.errorMoreInfo; - var moreInfoButton = errorWrapperConfig.moreInfoButton; - var lessInfoButton = errorWrapperConfig.lessInfoButton; - moreInfoButton.onclick = function () { - errorMoreInfo.removeAttribute('hidden'); - moreInfoButton.setAttribute('hidden', 'true'); - lessInfoButton.removeAttribute('hidden'); - errorMoreInfo.style.height = errorMoreInfo.scrollHeight + 'px'; - }; - lessInfoButton.onclick = function () { - errorMoreInfo.setAttribute('hidden', 'true'); - moreInfoButton.removeAttribute('hidden'); - lessInfoButton.setAttribute('hidden', 'true'); - }; - moreInfoButton.oncontextmenu = _ui_utils.noContextMenuHandler; - lessInfoButton.oncontextmenu = _ui_utils.noContextMenuHandler; - closeButton.oncontextmenu = _ui_utils.noContextMenuHandler; - moreInfoButton.removeAttribute('hidden'); - lessInfoButton.setAttribute('hidden', 'true'); - errorMoreInfo.value = moreInfoText; - }, - progress: function pdfViewProgress(level) { - var percent = Math.round(level * 100); - if (percent > this.loadingBar.percent || isNaN(percent)) { - this.loadingBar.percent = percent; - if (_pdfjs.PDFJS.disableAutoFetch && percent) { - if (this.disableAutoFetchLoadingBarTimeout) { - clearTimeout(this.disableAutoFetchLoadingBarTimeout); - this.disableAutoFetchLoadingBarTimeout = null; - } - this.loadingBar.show(); - this.disableAutoFetchLoadingBarTimeout = setTimeout(function () { - this.loadingBar.hide(); - this.disableAutoFetchLoadingBarTimeout = null; - }.bind(this), DISABLE_AUTO_FETCH_LOADING_BAR_TIMEOUT); + this.textLayerRenderTask.promise.then(function () { + this.textLayerDiv.appendChild(textLayerFrag); + this._finishRendering(); + this.updateMatches(); + }.bind(this), function (reason) {}); + }, + cancel: function TextLayerBuilder_cancel() { + if (this.textLayerRenderTask) { + this.textLayerRenderTask.cancel(); + this.textLayerRenderTask = null; } - } - }, - load: function pdfViewLoad(pdfDocument, scale) { - var self = this; - scale = scale || _ui_utils.UNKNOWN_SCALE; - this.pdfDocument = pdfDocument; - this.pdfDocumentProperties.setDocumentAndUrl(pdfDocument, this.url); - var downloadedPromise = pdfDocument.getDownloadInfo().then(function () { - self.downloadComplete = true; - self.loadingBar.hide(); - }); - this.toolbar.setPagesCount(pdfDocument.numPages, false); - this.secondaryToolbar.setPagesCount(pdfDocument.numPages); - var id = this.documentFingerprint = pdfDocument.fingerprint; - var store = this.store = new _view_history.ViewHistory(id); - var baseDocumentUrl; - baseDocumentUrl = null; - this.pdfLinkService.setDocument(pdfDocument, baseDocumentUrl); - var pdfViewer = this.pdfViewer; - pdfViewer.currentScale = scale; - pdfViewer.setDocument(pdfDocument); - var firstPagePromise = pdfViewer.firstPagePromise; - var pagesPromise = pdfViewer.pagesPromise; - var onePageRendered = pdfViewer.onePageRendered; - this.pageRotation = 0; - var pdfThumbnailViewer = this.pdfThumbnailViewer; - pdfThumbnailViewer.setDocument(pdfDocument); - firstPagePromise.then(function (pdfPage) { - downloadedPromise.then(function () { - self.eventBus.dispatch('documentload', { source: self }); - }); - self.loadingBar.setWidth(self.appConfig.viewerContainer); - if (!_pdfjs.PDFJS.disableHistory && !self.isViewerEmbedded) { - if (!self.viewerPrefs['showPreviousViewOnLoad']) { - self.pdfHistory.clearHistoryState(); - } - self.pdfHistory.initialize(self.documentFingerprint); - if (self.pdfHistory.initialDestination) { - self.initialDestination = self.pdfHistory.initialDestination; - } else if (self.pdfHistory.initialBookmark) { - self.initialBookmark = self.pdfHistory.initialBookmark; - } + }, + setTextContent: function TextLayerBuilder_setTextContent(textContent) { + this.cancel(); + this.textContent = textContent; + }, + convertMatches: function TextLayerBuilder_convertMatches(matches, matchesLength) { + var i = 0; + var iIndex = 0; + var bidiTexts = this.textContent.items; + var end = bidiTexts.length - 1; + var queryLen = this.findController === null ? 0 : this.findController.state.query.length; + var ret = []; + if (!matches) { + return ret; } - var initialParams = { - destination: self.initialDestination, - bookmark: self.initialBookmark, - hash: null - }; - store.initializedPromise.then(function resolved() { - var storedHash = null, - sidebarView = null; - if (self.viewerPrefs['showPreviousViewOnLoad'] && store.get('exists', false)) { - var pageNum = store.get('page', '1'); - var zoom = self.viewerPrefs['defaultZoomValue'] || store.get('zoom', _ui_utils.DEFAULT_SCALE_VALUE); - var left = store.get('scrollLeft', '0'); - var top = store.get('scrollTop', '0'); - storedHash = 'page=' + pageNum + '&zoom=' + zoom + ',' + left + ',' + top; - sidebarView = store.get('sidebarView', _pdf_sidebar.SidebarView.NONE); - } else if (self.viewerPrefs['defaultZoomValue']) { - storedHash = 'page=1&zoom=' + self.viewerPrefs['defaultZoomValue']; + for (var m = 0, len = matches.length; m < len; m++) { + var matchIdx = matches[m]; + while (i !== end && matchIdx >= iIndex + bidiTexts[i].str.length) { + iIndex += bidiTexts[i].str.length; + i++; } - self.setInitialView(storedHash, { - scale: scale, - sidebarView: sidebarView - }); - initialParams.hash = storedHash; - if (!self.isViewerEmbedded) { - self.pdfViewer.focus(); + if (i === bidiTexts.length) { + console.error('Could not find a matching mapping'); } - }, function rejected(reason) { - console.error(reason); - self.setInitialView(null, { scale: scale }); - }); - pagesPromise.then(function resolved() { - if (!initialParams.destination && !initialParams.bookmark && !initialParams.hash) { - return; + var match = { + begin: { + divIdx: i, + offset: matchIdx - iIndex + } + }; + if (matchesLength) { + matchIdx += matchesLength[m]; + } else { + matchIdx += queryLen; } - if (self.hasEqualPageSizes) { - return; + while (i !== end && matchIdx > iIndex + bidiTexts[i].str.length) { + iIndex += bidiTexts[i].str.length; + i++; } - self.initialDestination = initialParams.destination; - self.initialBookmark = initialParams.bookmark; - self.pdfViewer.currentScaleValue = self.pdfViewer.currentScaleValue; - self.setInitialView(initialParams.hash); - }); - }); - pdfDocument.getPageLabels().then(function (labels) { - if (!labels || self.viewerPrefs['disablePageLabels']) { - return; - } - var i = 0, - numLabels = labels.length; - if (numLabels !== self.pagesCount) { - console.error('The number of Page Labels does not match ' + 'the number of pages in the document.'); - return; - } - while (i < numLabels && labels[i] === (i + 1).toString()) { - i++; + match.end = { + divIdx: i, + offset: matchIdx - iIndex + }; + ret.push(match); } - if (i === numLabels) { + return ret; + }, + renderMatches: function TextLayerBuilder_renderMatches(matches) { + if (matches.length === 0) { return; } - pdfViewer.setPageLabels(labels); - pdfThumbnailViewer.setPageLabels(labels); - self.toolbar.setPagesCount(pdfDocument.numPages, true); - self.toolbar.setPageNumber(pdfViewer.currentPageNumber, pdfViewer.currentPageLabel); - }); - pagesPromise.then(function () { - if (self.supportsPrinting) { - pdfDocument.getJavaScript().then(function (javaScript) { - if (javaScript.length) { - console.warn('Warning: JavaScript is not supported'); - self.fallback(_pdfjs.UNSUPPORTED_FEATURES.javaScript); - } - var regex = /\bprint\s*\(/; - for (var i = 0, ii = javaScript.length; i < ii; i++) { - var js = javaScript[i]; - if (js && regex.test(js)) { - setTimeout(function () { - window.print(); - }); - return; - } - } - }); + var bidiTexts = this.textContent.items; + var textDivs = this.textDivs; + var prevEnd = null; + var pageIdx = this.pageIdx; + var isSelectedPage = this.findController === null ? false : pageIdx === this.findController.selected.pageIdx; + var selectedMatchIdx = this.findController === null ? -1 : this.findController.selected.matchIdx; + var highlightAll = this.findController === null ? false : this.findController.state.highlightAll; + var infinity = { + divIdx: -1, + offset: undefined + }; + function beginText(begin, className) { + var divIdx = begin.divIdx; + textDivs[divIdx].textContent = ''; + appendTextToDiv(divIdx, 0, begin.offset, className); } - }); - Promise.all([onePageRendered, _ui_utils.animationStarted]).then(function () { - pdfDocument.getOutline().then(function (outline) { - self.pdfOutlineViewer.render({ outline: outline }); - }); - pdfDocument.getAttachments().then(function (attachments) { - self.pdfAttachmentViewer.render({ attachments: attachments }); - }); - }); - pdfDocument.getMetadata().then(function (data) { - var info = data.info, - metadata = data.metadata; - self.documentInfo = info; - self.metadata = metadata; - console.log('PDF ' + pdfDocument.fingerprint + ' [' + info.PDFFormatVersion + ' ' + (info.Producer || '-').trim() + ' / ' + (info.Creator || '-').trim() + ']' + ' (PDF.js: ' + (_pdfjs.version || '-') + (!_pdfjs.PDFJS.disableWebGL ? ' [WebGL]' : '') + ')'); - var pdfTitle; - if (metadata && metadata.has('dc:title')) { - var title = metadata.get('dc:title'); - if (title !== 'Untitled') { - pdfTitle = title; + function appendTextToDiv(divIdx, fromOffset, toOffset, className) { + var div = textDivs[divIdx]; + var content = bidiTexts[divIdx].str.substring(fromOffset, toOffset); + var node = document.createTextNode(content); + if (className) { + var span = document.createElement('span'); + span.className = className; + span.appendChild(node); + div.appendChild(span); + return; } + div.appendChild(node); } - if (!pdfTitle && info && info['Title']) { - pdfTitle = info['Title']; - } - if (pdfTitle) { - self.setTitle(pdfTitle + ' - ' + document.title); - } - if (info.IsAcroFormPresent) { - console.warn('Warning: AcroForm/XFA is not supported'); - self.fallback(_pdfjs.UNSUPPORTED_FEATURES.forms); - } - }); - }, - setInitialView: function pdfViewSetInitialView(storedHash, options) { - var scale = options && options.scale; - var sidebarView = options && options.sidebarView; - this.isInitialViewSet = true; - this.pdfSidebar.setInitialView(this.viewerPrefs['sidebarViewOnLoad'] || sidebarView | 0); - if (this.initialDestination) { - this.pdfLinkService.navigateTo(this.initialDestination); - this.initialDestination = null; - } else if (this.initialBookmark) { - this.pdfLinkService.setHash(this.initialBookmark); - this.pdfHistory.push({ hash: this.initialBookmark }, true); - this.initialBookmark = null; - } else if (storedHash) { - this.pdfLinkService.setHash(storedHash); - } else if (scale) { - this.pdfViewer.currentScaleValue = scale; - this.page = 1; - } - this.toolbar.setPageNumber(this.pdfViewer.currentPageNumber, this.pdfViewer.currentPageLabel); - this.secondaryToolbar.setPageNumber(this.pdfViewer.currentPageNumber); - if (!this.pdfViewer.currentScaleValue) { - this.pdfViewer.currentScaleValue = _ui_utils.DEFAULT_SCALE_VALUE; - } - }, - cleanup: function pdfViewCleanup() { - if (!this.pdfDocument) { - return; - } - this.pdfViewer.cleanup(); - this.pdfThumbnailViewer.cleanup(); - if (this.pdfViewer.renderer !== _ui_utils.RendererType.SVG) { - this.pdfDocument.cleanup(); - } - }, - forceRendering: function pdfViewForceRendering() { - this.pdfRenderingQueue.printing = this.printing; - this.pdfRenderingQueue.isThumbnailViewEnabled = this.pdfSidebar.isThumbnailViewVisible; - this.pdfRenderingQueue.renderHighestPriority(); - }, - beforePrint: function pdfViewSetupBeforePrint() { - if (this.printService) { - return; - } - if (!this.supportsPrinting) { - var printMessage = _ui_utils.mozL10n.get('printing_not_supported', null, 'Warning: Printing is not fully supported by this browser.'); - this.error(printMessage); - return; - } - if (!this.pdfViewer.pageViewsReady) { - var notReadyMessage = _ui_utils.mozL10n.get('printing_not_ready', null, 'Warning: The PDF is not fully loaded for printing.'); - window.alert(notReadyMessage); - return; - } - var pagesOverview = this.pdfViewer.getPagesOverview(); - var printContainer = this.appConfig.printContainer; - var printService = PDFPrintServiceFactory.instance.createPrintService(this.pdfDocument, pagesOverview, printContainer); - this.printService = printService; - this.forceRendering(); - printService.layout(); - }, - get hasEqualPageSizes() { - var firstPage = this.pdfViewer.getPageView(0); - for (var i = 1, ii = this.pagesCount; i < ii; ++i) { - var pageView = this.pdfViewer.getPageView(i); - if (pageView.width !== firstPage.width || pageView.height !== firstPage.height) { - return false; - } - } - return true; - }, - afterPrint: function pdfViewSetupAfterPrint() { - if (this.printService) { - this.printService.destroy(); - this.printService = null; - } - this.forceRendering(); - }, - rotatePages: function pdfViewRotatePages(delta) { - var pageNumber = this.page; - this.pageRotation = (this.pageRotation + 360 + delta) % 360; - this.pdfViewer.pagesRotation = this.pageRotation; - this.pdfThumbnailViewer.pagesRotation = this.pageRotation; - this.forceRendering(); - this.pdfViewer.currentPageNumber = pageNumber; - }, - requestPresentationMode: function pdfViewRequestPresentationMode() { - if (!this.pdfPresentationMode) { - return; - } - this.pdfPresentationMode.request(); - }, - bindEvents: function pdfViewBindEvents() { - var eventBus = this.eventBus; - eventBus.on('resize', webViewerResize); - eventBus.on('hashchange', webViewerHashchange); - eventBus.on('beforeprint', this.beforePrint.bind(this)); - eventBus.on('afterprint', this.afterPrint.bind(this)); - eventBus.on('pagerendered', webViewerPageRendered); - eventBus.on('textlayerrendered', webViewerTextLayerRendered); - eventBus.on('updateviewarea', webViewerUpdateViewarea); - eventBus.on('pagechanging', webViewerPageChanging); - eventBus.on('scalechanging', webViewerScaleChanging); - eventBus.on('sidebarviewchanged', webViewerSidebarViewChanged); - eventBus.on('pagemode', webViewerPageMode); - eventBus.on('namedaction', webViewerNamedAction); - eventBus.on('presentationmodechanged', webViewerPresentationModeChanged); - eventBus.on('presentationmode', webViewerPresentationMode); - eventBus.on('openfile', webViewerOpenFile); - eventBus.on('print', webViewerPrint); - eventBus.on('download', webViewerDownload); - eventBus.on('firstpage', webViewerFirstPage); - eventBus.on('lastpage', webViewerLastPage); - eventBus.on('nextpage', webViewerNextPage); - eventBus.on('previouspage', webViewerPreviousPage); - eventBus.on('zoomin', webViewerZoomIn); - eventBus.on('zoomout', webViewerZoomOut); - eventBus.on('pagenumberchanged', webViewerPageNumberChanged); - eventBus.on('scalechanged', webViewerScaleChanged); - eventBus.on('rotatecw', webViewerRotateCw); - eventBus.on('rotateccw', webViewerRotateCcw); - eventBus.on('documentproperties', webViewerDocumentProperties); - eventBus.on('find', webViewerFind); - eventBus.on('findfromurlhash', webViewerFindFromUrlHash); - eventBus.on('fileinputchange', webViewerFileInputChange); - }, - bindWindowEvents: function pdfViewBindWindowEvents() { - var eventBus = this.eventBus; - window.addEventListener('wheel', webViewerWheel); - window.addEventListener('click', webViewerClick); - window.addEventListener('keydown', webViewerKeyDown); - window.addEventListener('resize', function windowResize() { - eventBus.dispatch('resize'); - }); - window.addEventListener('hashchange', function windowHashChange() { - eventBus.dispatch('hashchange', { hash: document.location.hash.substring(1) }); - }); - window.addEventListener('beforeprint', function windowBeforePrint() { - eventBus.dispatch('beforeprint'); - }); - window.addEventListener('afterprint', function windowAfterPrint() { - eventBus.dispatch('afterprint'); - }); - window.addEventListener('change', function windowChange(evt) { - var files = evt.target.files; - if (!files || files.length === 0) { - return; - } - eventBus.dispatch('fileinputchange', { fileInput: evt.target }); - }); - } -}; -var validateFileURL; -{ - var HOSTED_VIEWER_ORIGINS = ['null', 'http://mozilla.github.io', 'https://mozilla.github.io']; - validateFileURL = function validateFileURL(file) { - try { - var viewerOrigin = new URL(window.location.href).origin || 'null'; - if (HOSTED_VIEWER_ORIGINS.indexOf(viewerOrigin) >= 0) { + var i0 = selectedMatchIdx, + i1 = i0 + 1; + if (highlightAll) { + i0 = 0; + i1 = matches.length; + } else if (!isSelectedPage) { return; } - var fileOrigin = new URL(file, window.location.href).origin; - if (fileOrigin !== viewerOrigin) { - throw new Error('file origin does not match viewer\'s'); - } - } catch (e) { - var message = e && e.message; - var loadingErrorMessage = _ui_utils.mozL10n.get('loading_error', null, 'An error occurred while loading the PDF.'); - var moreInfo = { message: message }; - PDFViewerApplication.error(loadingErrorMessage, moreInfo); - throw e; - } - }; -} -function loadAndEnablePDFBug(enabledTabs) { - return new Promise(function (resolve, reject) { - var appConfig = PDFViewerApplication.appConfig; - var script = document.createElement('script'); - script.src = appConfig.debuggerScriptPath; - script.onload = function () { - PDFBug.enable(enabledTabs); - PDFBug.init({ - PDFJS: _pdfjs.PDFJS, - OPS: _pdfjs.OPS - }, appConfig.mainContainer); - resolve(); - }; - script.onerror = function () { - reject(new Error('Cannot load debugger at ' + script.src)); - }; - (document.getElementsByTagName('head')[0] || document.body).appendChild(script); - }); -} -function webViewerInitialized() { - var appConfig = PDFViewerApplication.appConfig; - var file; - var queryString = document.location.search.substring(1); - var params = (0, _ui_utils.parseQueryString)(queryString); - file = 'file' in params ? params.file : appConfig.defaultUrl; - validateFileURL(file); - var waitForBeforeOpening = []; - var fileInput = document.createElement('input'); - fileInput.id = appConfig.openFileInputName; - fileInput.className = 'fileInput'; - fileInput.setAttribute('type', 'file'); - fileInput.oncontextmenu = _ui_utils.noContextMenuHandler; - document.body.appendChild(fileInput); - if (!window.File || !window.FileReader || !window.FileList || !window.Blob) { - appConfig.toolbar.openFile.setAttribute('hidden', 'true'); - appConfig.secondaryToolbar.openFileButton.setAttribute('hidden', 'true'); - } else { - fileInput.value = null; - } - if (PDFViewerApplication.viewerPrefs['pdfBugEnabled']) { - var hash = document.location.hash.substring(1); - var hashParams = (0, _ui_utils.parseQueryString)(hash); - if ('disableworker' in hashParams) { - _pdfjs.PDFJS.disableWorker = hashParams['disableworker'] === 'true'; - } - if ('disablerange' in hashParams) { - _pdfjs.PDFJS.disableRange = hashParams['disablerange'] === 'true'; - } - if ('disablestream' in hashParams) { - _pdfjs.PDFJS.disableStream = hashParams['disablestream'] === 'true'; - } - if ('disableautofetch' in hashParams) { - _pdfjs.PDFJS.disableAutoFetch = hashParams['disableautofetch'] === 'true'; - } - if ('disablefontface' in hashParams) { - _pdfjs.PDFJS.disableFontFace = hashParams['disablefontface'] === 'true'; - } - if ('disablehistory' in hashParams) { - _pdfjs.PDFJS.disableHistory = hashParams['disablehistory'] === 'true'; - } - if ('webgl' in hashParams) { - _pdfjs.PDFJS.disableWebGL = hashParams['webgl'] !== 'true'; - } - if ('useonlycsszoom' in hashParams) { - _pdfjs.PDFJS.useOnlyCssZoom = hashParams['useonlycsszoom'] === 'true'; - } - if ('verbosity' in hashParams) { - _pdfjs.PDFJS.verbosity = hashParams['verbosity'] | 0; - } - if ('ignorecurrentpositiononzoom' in hashParams) { - _pdfjs.PDFJS.ignoreCurrentPositionOnZoom = hashParams['ignorecurrentpositiononzoom'] === 'true'; - } - if ('locale' in hashParams) { - _pdfjs.PDFJS.locale = hashParams['locale']; - } - if ('textlayer' in hashParams) { - switch (hashParams['textlayer']) { - case 'off': - _pdfjs.PDFJS.disableTextLayer = true; - break; - case 'visible': - case 'shadow': - case 'hover': - var viewer = appConfig.viewerContainer; - viewer.classList.add('textLayer-' + hashParams['textlayer']); - break; - } - } - if ('pdfbug' in hashParams) { - _pdfjs.PDFJS.pdfBug = true; - var pdfBug = hashParams['pdfbug']; - var enabled = pdfBug.split(','); - waitForBeforeOpening.push(loadAndEnablePDFBug(enabled)); - } - } - _ui_utils.mozL10n.setLanguage(_pdfjs.PDFJS.locale); - if (!PDFViewerApplication.supportsPrinting) { - appConfig.toolbar.print.classList.add('hidden'); - appConfig.secondaryToolbar.printButton.classList.add('hidden'); - } - if (!PDFViewerApplication.supportsFullscreen) { - appConfig.toolbar.presentationModeButton.classList.add('hidden'); - appConfig.secondaryToolbar.presentationModeButton.classList.add('hidden'); - } - if (PDFViewerApplication.supportsIntegratedFind) { - appConfig.toolbar.viewFind.classList.add('hidden'); - } - appConfig.sidebar.mainContainer.addEventListener('transitionend', function (e) { - if (e.target === this) { - PDFViewerApplication.eventBus.dispatch('resize'); - } - }, true); - appConfig.sidebar.toggleButton.addEventListener('click', function () { - PDFViewerApplication.pdfSidebar.toggle(); - }); - Promise.all(waitForBeforeOpening).then(function () { - webViewerOpenFileViaURL(file); - }).catch(function (reason) { - PDFViewerApplication.error(_ui_utils.mozL10n.get('loading_error', null, 'An error occurred while opening.'), reason); - }); -} -var webViewerOpenFileViaURL; -{ - webViewerOpenFileViaURL = function webViewerOpenFileViaURL(file) { - if (file && file.lastIndexOf('file:', 0) === 0) { - PDFViewerApplication.setTitleUsingUrl(file); - var xhr = new XMLHttpRequest(); - xhr.onload = function () { - PDFViewerApplication.open(new Uint8Array(xhr.response)); - }; - try { - xhr.open('GET', file); - xhr.responseType = 'arraybuffer'; - xhr.send(); - } catch (e) { - PDFViewerApplication.error(_ui_utils.mozL10n.get('loading_error', null, 'An error occurred while loading the PDF.'), e); - } - return; - } - if (file) { - PDFViewerApplication.open(file); - } - }; -} -function webViewerPageRendered(e) { - var pageNumber = e.pageNumber; - var pageIndex = pageNumber - 1; - var pageView = PDFViewerApplication.pdfViewer.getPageView(pageIndex); - if (pageNumber === PDFViewerApplication.page) { - PDFViewerApplication.toolbar.updateLoadingIndicatorState(false); - } - if (!pageView) { - return; - } - if (PDFViewerApplication.pdfSidebar.isThumbnailViewVisible) { - var thumbnailView = PDFViewerApplication.pdfThumbnailViewer.getThumbnail(pageIndex); - thumbnailView.setImage(pageView); - } - if (_pdfjs.PDFJS.pdfBug && Stats.enabled && pageView.stats) { - Stats.add(pageNumber, pageView.stats); - } - if (pageView.error) { - PDFViewerApplication.error(_ui_utils.mozL10n.get('rendering_error', null, 'An error occurred while rendering the page.'), pageView.error); - } -} -function webViewerTextLayerRendered(e) {} -function webViewerPageMode(e) { - var mode = e.mode, - view; - switch (mode) { - case 'thumbs': - view = _pdf_sidebar.SidebarView.THUMBS; - break; - case 'bookmarks': - case 'outline': - view = _pdf_sidebar.SidebarView.OUTLINE; - break; - case 'attachments': - view = _pdf_sidebar.SidebarView.ATTACHMENTS; - break; - case 'none': - view = _pdf_sidebar.SidebarView.NONE; - break; - default: - console.error('Invalid "pagemode" hash parameter: ' + mode); - return; - } - PDFViewerApplication.pdfSidebar.switchView(view, true); -} -function webViewerNamedAction(e) { - var action = e.action; - switch (action) { - case 'GoToPage': - PDFViewerApplication.appConfig.toolbar.pageNumber.select(); - break; - case 'Find': - if (!PDFViewerApplication.supportsIntegratedFind) { - PDFViewerApplication.findBar.toggle(); - } - break; - } -} -function webViewerPresentationModeChanged(e) { - var active = e.active; - var switchInProgress = e.switchInProgress; - PDFViewerApplication.pdfViewer.presentationModeState = switchInProgress ? _pdf_viewer.PresentationModeState.CHANGING : active ? _pdf_viewer.PresentationModeState.FULLSCREEN : _pdf_viewer.PresentationModeState.NORMAL; -} -function webViewerSidebarViewChanged(e) { - PDFViewerApplication.pdfRenderingQueue.isThumbnailViewEnabled = PDFViewerApplication.pdfSidebar.isThumbnailViewVisible; - var store = PDFViewerApplication.store; - if (!store || !PDFViewerApplication.isInitialViewSet) { - return; - } - store.initializedPromise.then(function () { - store.set('sidebarView', e.view).catch(function () {}); - }); -} -function webViewerUpdateViewarea(e) { - var location = e.location, - store = PDFViewerApplication.store; - if (store) { - store.initializedPromise.then(function () { - store.setMultiple({ - 'exists': true, - 'page': location.pageNumber, - 'zoom': location.scale, - 'scrollLeft': location.left, - 'scrollTop': location.top - }).catch(function () {}); - }); - } - var href = PDFViewerApplication.pdfLinkService.getAnchorUrl(location.pdfOpenParams); - PDFViewerApplication.appConfig.toolbar.viewBookmark.href = href; - PDFViewerApplication.appConfig.secondaryToolbar.viewBookmarkButton.href = href; - PDFViewerApplication.pdfHistory.updateCurrentBookmark(location.pdfOpenParams, location.pageNumber); - var currentPage = PDFViewerApplication.pdfViewer.getPageView(PDFViewerApplication.page - 1); - var loading = currentPage.renderingState !== _pdf_rendering_queue.RenderingStates.FINISHED; - PDFViewerApplication.toolbar.updateLoadingIndicatorState(loading); -} -function webViewerResize() { - var currentScaleValue = PDFViewerApplication.pdfViewer.currentScaleValue; - if (currentScaleValue === 'auto' || currentScaleValue === 'page-fit' || currentScaleValue === 'page-width') { - PDFViewerApplication.pdfViewer.currentScaleValue = currentScaleValue; - } else if (!currentScaleValue) { - PDFViewerApplication.pdfViewer.currentScaleValue = _ui_utils.DEFAULT_SCALE_VALUE; - } - PDFViewerApplication.pdfViewer.update(); -} -function webViewerHashchange(e) { - if (PDFViewerApplication.pdfHistory.isHashChangeUnlocked) { - var hash = e.hash; - if (!hash) { - return; - } - if (!PDFViewerApplication.isInitialViewSet) { - PDFViewerApplication.initialBookmark = hash; - } else { - PDFViewerApplication.pdfLinkService.setHash(hash); - } - } -} -var webViewerFileInputChange; -{ - webViewerFileInputChange = function webViewerFileInputChange(e) { - var file = e.fileInput.files[0]; - if (!_pdfjs.PDFJS.disableCreateObjectURL && typeof URL !== 'undefined' && URL.createObjectURL) { - PDFViewerApplication.open(URL.createObjectURL(file)); - } else { - var fileReader = new FileReader(); - fileReader.onload = function webViewerChangeFileReaderOnload(evt) { - var buffer = evt.target.result; - var uint8Array = new Uint8Array(buffer); - PDFViewerApplication.open(uint8Array); - }; - fileReader.readAsArrayBuffer(file); - } - PDFViewerApplication.setTitleUsingUrl(file.name); - var appConfig = PDFViewerApplication.appConfig; - appConfig.toolbar.viewBookmark.setAttribute('hidden', 'true'); - appConfig.secondaryToolbar.viewBookmarkButton.setAttribute('hidden', 'true'); - appConfig.toolbar.download.setAttribute('hidden', 'true'); - appConfig.secondaryToolbar.downloadButton.setAttribute('hidden', 'true'); - }; -} -function webViewerPresentationMode() { - PDFViewerApplication.requestPresentationMode(); -} -function webViewerOpenFile() { - var openFileInputName = PDFViewerApplication.appConfig.openFileInputName; - document.getElementById(openFileInputName).click(); -} -function webViewerPrint() { - window.print(); -} -function webViewerDownload() { - PDFViewerApplication.download(); -} -function webViewerFirstPage() { - if (PDFViewerApplication.pdfDocument) { - PDFViewerApplication.page = 1; - } -} -function webViewerLastPage() { - if (PDFViewerApplication.pdfDocument) { - PDFViewerApplication.page = PDFViewerApplication.pagesCount; - } -} -function webViewerNextPage() { - PDFViewerApplication.page++; -} -function webViewerPreviousPage() { - PDFViewerApplication.page--; -} -function webViewerZoomIn() { - PDFViewerApplication.zoomIn(); -} -function webViewerZoomOut() { - PDFViewerApplication.zoomOut(); -} -function webViewerPageNumberChanged(e) { - var pdfViewer = PDFViewerApplication.pdfViewer; - pdfViewer.currentPageLabel = e.value; - if (e.value !== pdfViewer.currentPageNumber.toString() && e.value !== pdfViewer.currentPageLabel) { - PDFViewerApplication.toolbar.setPageNumber(pdfViewer.currentPageNumber, pdfViewer.currentPageLabel); - } -} -function webViewerScaleChanged(e) { - PDFViewerApplication.pdfViewer.currentScaleValue = e.value; -} -function webViewerRotateCw() { - PDFViewerApplication.rotatePages(90); -} -function webViewerRotateCcw() { - PDFViewerApplication.rotatePages(-90); -} -function webViewerDocumentProperties() { - PDFViewerApplication.pdfDocumentProperties.open(); -} -function webViewerFind(e) { - PDFViewerApplication.findController.executeCommand('find' + e.type, { - query: e.query, - phraseSearch: e.phraseSearch, - caseSensitive: e.caseSensitive, - highlightAll: e.highlightAll, - findPrevious: e.findPrevious - }); -} -function webViewerFindFromUrlHash(e) { - PDFViewerApplication.findController.executeCommand('find', { - query: e.query, - phraseSearch: e.phraseSearch, - caseSensitive: false, - highlightAll: true, - findPrevious: false - }); -} -function webViewerScaleChanging(e) { - PDFViewerApplication.toolbar.setPageScale(e.presetValue, e.scale); - PDFViewerApplication.pdfViewer.update(); -} -function webViewerPageChanging(e) { - var page = e.pageNumber; - PDFViewerApplication.toolbar.setPageNumber(page, e.pageLabel || null); - PDFViewerApplication.secondaryToolbar.setPageNumber(page); - if (PDFViewerApplication.pdfSidebar.isThumbnailViewVisible) { - PDFViewerApplication.pdfThumbnailViewer.scrollThumbnailIntoView(page); - } - if (_pdfjs.PDFJS.pdfBug && Stats.enabled) { - var pageView = PDFViewerApplication.pdfViewer.getPageView(page - 1); - if (pageView.stats) { - Stats.add(page, pageView.stats); - } - } -} -var zoomDisabled = false, - zoomDisabledTimeout; -function webViewerWheel(evt) { - var pdfViewer = PDFViewerApplication.pdfViewer; - if (pdfViewer.isInPresentationMode) { - return; - } - if (evt.ctrlKey || evt.metaKey) { - var support = PDFViewerApplication.supportedMouseWheelZoomModifierKeys; - if (evt.ctrlKey && !support.ctrlKey || evt.metaKey && !support.metaKey) { - return; - } - evt.preventDefault(); - if (zoomDisabled) { - return; - } - var previousScale = pdfViewer.currentScale; - var delta = (0, _ui_utils.normalizeWheelEventDelta)(evt); - var MOUSE_WHEEL_DELTA_PER_PAGE_SCALE = 3.0; - var ticks = delta * MOUSE_WHEEL_DELTA_PER_PAGE_SCALE; - if (ticks < 0) { - PDFViewerApplication.zoomOut(-ticks); - } else { - PDFViewerApplication.zoomIn(ticks); - } - var currentScale = pdfViewer.currentScale; - if (previousScale !== currentScale) { - var scaleCorrectionFactor = currentScale / previousScale - 1; - var rect = pdfViewer.container.getBoundingClientRect(); - var dx = evt.clientX - rect.left; - var dy = evt.clientY - rect.top; - pdfViewer.container.scrollLeft += dx * scaleCorrectionFactor; - pdfViewer.container.scrollTop += dy * scaleCorrectionFactor; - } - } else { - zoomDisabled = true; - clearTimeout(zoomDisabledTimeout); - zoomDisabledTimeout = setTimeout(function () { - zoomDisabled = false; - }, 1000); - } -} -function webViewerClick(evt) { - if (!PDFViewerApplication.secondaryToolbar.isOpen) { - return; - } - var appConfig = PDFViewerApplication.appConfig; - if (PDFViewerApplication.pdfViewer.containsElement(evt.target) || appConfig.toolbar.container.contains(evt.target) && evt.target !== appConfig.secondaryToolbar.toggleButton) { - PDFViewerApplication.secondaryToolbar.close(); - } -} -function webViewerKeyDown(evt) { - if (_overlay_manager.OverlayManager.active) { - return; - } - var handled = false, - ensureViewerFocused = false; - var cmd = (evt.ctrlKey ? 1 : 0) | (evt.altKey ? 2 : 0) | (evt.shiftKey ? 4 : 0) | (evt.metaKey ? 8 : 0); - var pdfViewer = PDFViewerApplication.pdfViewer; - var isViewerInPresentationMode = pdfViewer && pdfViewer.isInPresentationMode; - if (cmd === 1 || cmd === 8 || cmd === 5 || cmd === 12) { - switch (evt.keyCode) { - case 70: - if (!PDFViewerApplication.supportsIntegratedFind) { - PDFViewerApplication.findBar.open(); - handled = true; + for (var i = i0; i < i1; i++) { + var match = matches[i]; + var begin = match.begin; + var end = match.end; + var isSelected = isSelectedPage && i === selectedMatchIdx; + var highlightSuffix = isSelected ? ' selected' : ''; + if (this.findController) { + this.findController.updateMatchPosition(pageIdx, i, textDivs, begin.divIdx); } - break; - case 71: - if (!PDFViewerApplication.supportsIntegratedFind) { - var findState = PDFViewerApplication.findController.state; - if (findState) { - PDFViewerApplication.findController.executeCommand('findagain', { - query: findState.query, - phraseSearch: findState.phraseSearch, - caseSensitive: findState.caseSensitive, - highlightAll: findState.highlightAll, - findPrevious: cmd === 5 || cmd === 12 - }); + if (!prevEnd || begin.divIdx !== prevEnd.divIdx) { + if (prevEnd !== null) { + appendTextToDiv(prevEnd.divIdx, prevEnd.offset, infinity.offset); } - handled = true; + beginText(begin); + } else { + appendTextToDiv(prevEnd.divIdx, prevEnd.offset, begin.offset); } - break; - case 61: - case 107: - case 187: - case 171: - if (!isViewerInPresentationMode) { - PDFViewerApplication.zoomIn(); + if (begin.divIdx === end.divIdx) { + appendTextToDiv(begin.divIdx, begin.offset, end.offset, 'highlight' + highlightSuffix); + } else { + appendTextToDiv(begin.divIdx, begin.offset, infinity.offset, 'highlight begin' + highlightSuffix); + for (var n0 = begin.divIdx + 1, n1 = end.divIdx; n0 < n1; n0++) { + textDivs[n0].className = 'highlight middle' + highlightSuffix; + } + beginText(end, 'highlight end' + highlightSuffix); } - handled = true; - break; - case 173: - case 109: - case 189: - if (!isViewerInPresentationMode) { - PDFViewerApplication.zoomOut(); + prevEnd = end; + } + if (prevEnd) { + appendTextToDiv(prevEnd.divIdx, prevEnd.offset, infinity.offset); + } + }, + updateMatches: function TextLayerBuilder_updateMatches() { + if (!this.renderingDone) { + return; + } + var matches = this.matches; + var textDivs = this.textDivs; + var bidiTexts = this.textContent.items; + var clearedUntilDivIdx = -1; + for (var i = 0, len = matches.length; i < len; i++) { + var match = matches[i]; + var begin = Math.max(clearedUntilDivIdx, match.begin.divIdx); + for (var n = begin, end = match.end.divIdx; n <= end; n++) { + var div = textDivs[n]; + div.textContent = bidiTexts[n].str; + div.className = ''; } - handled = true; - break; - case 48: - case 96: - if (!isViewerInPresentationMode) { - setTimeout(function () { - pdfViewer.currentScaleValue = _ui_utils.DEFAULT_SCALE_VALUE; - }); - handled = false; + clearedUntilDivIdx = match.end.divIdx + 1; + } + if (this.findController === null || !this.findController.active) { + return; + } + var pageMatches, pageMatchesLength; + if (this.findController !== null) { + pageMatches = this.findController.pageMatches[this.pageIdx] || null; + pageMatchesLength = this.findController.pageMatchesLength ? this.findController.pageMatchesLength[this.pageIdx] || null : null; + } + this.matches = this.convertMatches(pageMatches, pageMatchesLength); + this.renderMatches(this.matches); + }, + _bindMouse: function TextLayerBuilder_bindMouse() { + var div = this.textLayerDiv; + var self = this; + var expandDivsTimer = null; + div.addEventListener('mousedown', function (e) { + if (self.enhanceTextSelection && self.textLayerRenderTask) { + self.textLayerRenderTask.expandTextDivs(true); + if (expandDivsTimer) { + clearTimeout(expandDivsTimer); + expandDivsTimer = null; + } + return; } - break; - case 38: - if (isViewerInPresentationMode || PDFViewerApplication.page > 1) { - PDFViewerApplication.page = 1; - handled = true; - ensureViewerFocused = true; + var end = div.querySelector('.endOfContent'); + if (!end) { + return; } - break; - case 40: - if (isViewerInPresentationMode || PDFViewerApplication.page < PDFViewerApplication.pagesCount) { - PDFViewerApplication.page = PDFViewerApplication.pagesCount; - handled = true; - ensureViewerFocused = true; + var adjustTop = e.target !== div; + adjustTop = adjustTop && window.getComputedStyle(end).getPropertyValue('-moz-user-select') !== 'none'; + if (adjustTop) { + var divBounds = div.getBoundingClientRect(); + var r = Math.max(0, (e.pageY - divBounds.top) / divBounds.height); + end.style.top = (r * 100).toFixed(2) + '%'; } - break; - } - } - if (cmd === 1 || cmd === 8) { - switch (evt.keyCode) { - case 83: - PDFViewerApplication.download(); - handled = true; - break; - } - } - if (cmd === 3 || cmd === 10) { - switch (evt.keyCode) { - case 80: - PDFViewerApplication.requestPresentationMode(); - handled = true; - break; - case 71: - PDFViewerApplication.appConfig.toolbar.pageNumber.select(); - handled = true; - break; - } - } - if (handled) { - if (ensureViewerFocused && !isViewerInPresentationMode) { - pdfViewer.focus(); + end.classList.add('active'); + }); + div.addEventListener('mouseup', function (e) { + if (self.enhanceTextSelection && self.textLayerRenderTask) { + expandDivsTimer = setTimeout(function () { + if (self.textLayerRenderTask) { + self.textLayerRenderTask.expandTextDivs(false); + } + expandDivsTimer = null; + }, EXPAND_DIVS_TIMEOUT); + return; + } + var end = div.querySelector('.endOfContent'); + if (!end) { + return; + } + end.style.top = ''; + end.classList.remove('active'); + }); } - evt.preventDefault(); - return; + }; + return TextLayerBuilder; +}(); +function DefaultTextLayerFactory() {} +DefaultTextLayerFactory.prototype = { + createTextLayerBuilder: function createTextLayerBuilder(textLayerDiv, pageIndex, viewport, enhanceTextSelection) { + return new TextLayerBuilder({ + textLayerDiv: textLayerDiv, + pageIndex: pageIndex, + viewport: viewport, + enhanceTextSelection: enhanceTextSelection + }); } - var curElement = document.activeElement || document.querySelector(':focus'); - var curElementTagName = curElement && curElement.tagName.toUpperCase(); - if (curElementTagName === 'INPUT' || curElementTagName === 'TEXTAREA' || curElementTagName === 'SELECT') { - if (evt.keyCode !== 27) { - return; - } +}; +exports.TextLayerBuilder = TextLayerBuilder; +exports.DefaultTextLayerFactory = DefaultTextLayerFactory; + +/***/ }), +/* 7 */ +/***/ (function(module, exports, __w_pdfjs_require__) { + +"use strict"; + + +Object.defineProperty(exports, "__esModule", { + value: true +}); +var CLEANUP_TIMEOUT = 30000; +var RenderingStates = { + INITIAL: 0, + RUNNING: 1, + PAUSED: 2, + FINISHED: 3 +}; +var PDFRenderingQueue = function PDFRenderingQueueClosure() { + function PDFRenderingQueue() { + this.pdfViewer = null; + this.pdfThumbnailViewer = null; + this.onIdle = null; + this.highestPriorityPage = null; + this.idleTimeout = null; + this.printing = false; + this.isThumbnailViewEnabled = false; } - if (cmd === 0) { - switch (evt.keyCode) { - case 38: - case 33: - case 8: - if (!isViewerInPresentationMode && pdfViewer.currentScaleValue !== 'page-fit') { - break; - } - case 37: - if (pdfViewer.isHorizontalScrollbarEnabled) { - break; - } - case 75: - case 80: - if (PDFViewerApplication.page > 1) { - PDFViewerApplication.page--; + PDFRenderingQueue.prototype = { + setViewer: function PDFRenderingQueue_setViewer(pdfViewer) { + this.pdfViewer = pdfViewer; + }, + setThumbnailViewer: function PDFRenderingQueue_setThumbnailViewer(pdfThumbnailViewer) { + this.pdfThumbnailViewer = pdfThumbnailViewer; + }, + isHighestPriority: function PDFRenderingQueue_isHighestPriority(view) { + return this.highestPriorityPage === view.renderingId; + }, + renderHighestPriority: function PDFRenderingQueue_renderHighestPriority(currentlyVisiblePages) { + if (this.idleTimeout) { + clearTimeout(this.idleTimeout); + this.idleTimeout = null; + } + if (this.pdfViewer.forceRendering(currentlyVisiblePages)) { + return; + } + if (this.pdfThumbnailViewer && this.isThumbnailViewEnabled) { + if (this.pdfThumbnailViewer.forceRendering()) { + return; } - handled = true; - break; - case 27: - if (PDFViewerApplication.secondaryToolbar.isOpen) { - PDFViewerApplication.secondaryToolbar.close(); - handled = true; + } + if (this.printing) { + return; + } + if (this.onIdle) { + this.idleTimeout = setTimeout(this.onIdle.bind(this), CLEANUP_TIMEOUT); + } + }, + getHighestPriority: function PDFRenderingQueue_getHighestPriority(visible, views, scrolledDown) { + var visibleViews = visible.views; + var numVisible = visibleViews.length; + if (numVisible === 0) { + return false; + } + for (var i = 0; i < numVisible; ++i) { + var view = visibleViews[i].view; + if (!this.isViewFinished(view)) { + return view; } - if (!PDFViewerApplication.supportsIntegratedFind && PDFViewerApplication.findBar.opened) { - PDFViewerApplication.findBar.close(); - handled = true; + } + if (scrolledDown) { + var nextPageIndex = visible.last.id; + if (views[nextPageIndex] && !this.isViewFinished(views[nextPageIndex])) { + return views[nextPageIndex]; } - break; - case 40: - case 34: - case 32: - if (!isViewerInPresentationMode && pdfViewer.currentScaleValue !== 'page-fit') { - break; + } else { + var previousPageIndex = visible.first.id - 2; + if (views[previousPageIndex] && !this.isViewFinished(views[previousPageIndex])) { + return views[previousPageIndex]; } - case 39: - if (pdfViewer.isHorizontalScrollbarEnabled) { + } + return null; + }, + isViewFinished: function PDFRenderingQueue_isViewFinished(view) { + return view.renderingState === RenderingStates.FINISHED; + }, + renderView: function PDFRenderingQueue_renderView(view) { + var state = view.renderingState; + switch (state) { + case RenderingStates.FINISHED: + return false; + case RenderingStates.PAUSED: + this.highestPriorityPage = view.renderingId; + view.resume(); break; - } - case 74: - case 78: - if (PDFViewerApplication.page < PDFViewerApplication.pagesCount) { - PDFViewerApplication.page++; - } - handled = true; - break; - case 36: - if (isViewerInPresentationMode || PDFViewerApplication.page > 1) { - PDFViewerApplication.page = 1; - handled = true; - ensureViewerFocused = true; - } - break; - case 35: - if (isViewerInPresentationMode || PDFViewerApplication.page < PDFViewerApplication.pagesCount) { - PDFViewerApplication.page = PDFViewerApplication.pagesCount; - handled = true; - ensureViewerFocused = true; - } - break; - case 72: - if (!isViewerInPresentationMode) { - PDFViewerApplication.handTool.toggle(); - } - break; - case 82: - PDFViewerApplication.rotatePages(90); - break; - } - } - if (cmd === 4) { - switch (evt.keyCode) { - case 32: - if (!isViewerInPresentationMode && pdfViewer.currentScaleValue !== 'page-fit') { + case RenderingStates.RUNNING: + this.highestPriorityPage = view.renderingId; break; - } - if (PDFViewerApplication.page > 1) { - PDFViewerApplication.page--; - } - handled = true; - break; - case 82: - PDFViewerApplication.rotatePages(-90); - break; - } - } - if (!handled && !isViewerInPresentationMode) { - if (evt.keyCode >= 33 && evt.keyCode <= 40 || evt.keyCode === 32 && curElementTagName !== 'BUTTON') { - ensureViewerFocused = true; - } - } - if (cmd === 2) { - switch (evt.keyCode) { - case 37: - if (isViewerInPresentationMode) { - PDFViewerApplication.pdfHistory.back(); - handled = true; - } - break; - case 39: - if (isViewerInPresentationMode) { - PDFViewerApplication.pdfHistory.forward(); - handled = true; - } - break; - } - } - if (ensureViewerFocused && !pdfViewer.containsElement(curElement)) { - pdfViewer.focus(); - } - if (handled) { - evt.preventDefault(); - } -} -_ui_utils.localized.then(function webViewerLocalized() { - document.getElementsByTagName('html')[0].dir = _ui_utils.mozL10n.getDirection(); -}); -var PDFPrintServiceFactory = { - instance: { - supportsPrinting: false, - createPrintService: function createPrintService() { - throw new Error('Not implemented: createPrintService'); + case RenderingStates.INITIAL: + this.highestPriorityPage = view.renderingId; + var continueRendering = function () { + this.renderHighestPriority(); + }.bind(this); + view.draw().then(continueRendering, continueRendering); + break; + } + return true; } - } -}; -exports.PDFViewerApplication = PDFViewerApplication; -exports.DefaultExternalServices = DefaultExternalServices; -exports.PDFPrintServiceFactory = PDFPrintServiceFactory; + }; + return PDFRenderingQueue; +}(); +exports.RenderingStates = RenderingStates; +exports.PDFRenderingQueue = PDFRenderingQueue; /***/ }), -/* 15 */ +/* 8 */ /***/ (function(module, exports, __w_pdfjs_require__) { "use strict"; @@ -5194,139 +1948,64 @@ exports.PDFPrintServiceFactory = PDFPrintServiceFactory; Object.defineProperty(exports, "__esModule", { value: true }); -function GrabToPan(options) { - this.element = options.element; - this.document = options.element.ownerDocument; - if (typeof options.ignoreTarget === 'function') { - this.ignoreTarget = options.ignoreTarget; +exports.DownloadManager = undefined; + +var _pdfjs = __w_pdfjs_require__(0); + +; +function download(blobUrl, filename) { + var a = document.createElement('a'); + if (a.click) { + a.href = blobUrl; + a.target = '_parent'; + if ('download' in a) { + a.download = filename; + } + (document.body || document.documentElement).appendChild(a); + a.click(); + a.parentNode.removeChild(a); + } else { + if (window.top === window && blobUrl.split('#')[0] === window.location.href.split('#')[0]) { + var padCharacter = blobUrl.indexOf('?') === -1 ? '?' : '&'; + blobUrl = blobUrl.replace(/#|$/, padCharacter + '$&'); + } + window.open(blobUrl, '_parent'); } - this.onActiveChanged = options.onActiveChanged; - this.activate = this.activate.bind(this); - this.deactivate = this.deactivate.bind(this); - this.toggle = this.toggle.bind(this); - this._onmousedown = this._onmousedown.bind(this); - this._onmousemove = this._onmousemove.bind(this); - this._endPan = this._endPan.bind(this); - var overlay = this.overlay = document.createElement('div'); - overlay.className = 'grab-to-pan-grabbing'; } -GrabToPan.prototype = { - CSS_CLASS_GRAB: 'grab-to-pan-grab', - activate: function GrabToPan_activate() { - if (!this.active) { - this.active = true; - this.element.addEventListener('mousedown', this._onmousedown, true); - this.element.classList.add(this.CSS_CLASS_GRAB); - if (this.onActiveChanged) { - this.onActiveChanged(true); - } - } - }, - deactivate: function GrabToPan_deactivate() { - if (this.active) { - this.active = false; - this.element.removeEventListener('mousedown', this._onmousedown, true); - this._endPan(); - this.element.classList.remove(this.CSS_CLASS_GRAB); - if (this.onActiveChanged) { - this.onActiveChanged(false); - } +function DownloadManager() {} +DownloadManager.prototype = { + downloadUrl: function DownloadManager_downloadUrl(url, filename) { + if (!(0, _pdfjs.createValidAbsoluteUrl)(url, 'http://example.com')) { + return; } + download(url + '#pdfjs.action=download', filename); }, - toggle: function GrabToPan_toggle() { - if (this.active) { - this.deactivate(); - } else { - this.activate(); + downloadData: function DownloadManager_downloadData(data, filename, contentType) { + if (navigator.msSaveBlob) { + return navigator.msSaveBlob(new Blob([data], { type: contentType }), filename); } + var blobUrl = (0, _pdfjs.createObjectURL)(data, contentType, _pdfjs.PDFJS.disableCreateObjectURL); + download(blobUrl, filename); }, - ignoreTarget: function GrabToPan_ignoreTarget(node) { - return node[matchesSelector]('a[href], a[href] *, input, textarea, button, button *, select, option'); - }, - _onmousedown: function GrabToPan__onmousedown(event) { - if (event.button !== 0 || this.ignoreTarget(event.target)) { - return; - } - if (event.originalTarget) { - try { - event.originalTarget.tagName; - } catch (e) { - return; + download: function DownloadManager_download(blob, url, filename) { + if (navigator.msSaveBlob) { + if (!navigator.msSaveBlob(blob, filename)) { + this.downloadUrl(url, filename); } - } - this.scrollLeftStart = this.element.scrollLeft; - this.scrollTopStart = this.element.scrollTop; - this.clientXStart = event.clientX; - this.clientYStart = event.clientY; - this.document.addEventListener('mousemove', this._onmousemove, true); - this.document.addEventListener('mouseup', this._endPan, true); - this.element.addEventListener('scroll', this._endPan, true); - event.preventDefault(); - event.stopPropagation(); - var focusedElement = document.activeElement; - if (focusedElement && !focusedElement.contains(event.target)) { - focusedElement.blur(); - } - }, - _onmousemove: function GrabToPan__onmousemove(event) { - this.element.removeEventListener('scroll', this._endPan, true); - if (isLeftMouseReleased(event)) { - this._endPan(); return; } - var xDiff = event.clientX - this.clientXStart; - var yDiff = event.clientY - this.clientYStart; - var scrollTop = this.scrollTopStart - yDiff; - var scrollLeft = this.scrollLeftStart - xDiff; - if (this.element.scrollTo) { - this.element.scrollTo({ - top: scrollTop, - left: scrollLeft, - behavior: 'instant' - }); - } else { - this.element.scrollTop = scrollTop; - this.element.scrollLeft = scrollLeft; - } - if (!this.overlay.parentNode) { - document.body.appendChild(this.overlay); + if (_pdfjs.PDFJS.disableCreateObjectURL) { + this.downloadUrl(url, filename); + return; } - }, - _endPan: function GrabToPan__endPan() { - this.element.removeEventListener('scroll', this._endPan, true); - this.document.removeEventListener('mousemove', this._onmousemove, true); - this.document.removeEventListener('mouseup', this._endPan, true); - this.overlay.remove(); + var blobUrl = URL.createObjectURL(blob); + download(blobUrl, filename); } }; -var matchesSelector; -['webkitM', 'mozM', 'msM', 'oM', 'm'].some(function (prefix) { - var name = prefix + 'atches'; - if (name in document.documentElement) { - matchesSelector = name; - } - name += 'Selector'; - if (name in document.documentElement) { - matchesSelector = name; - } - return matchesSelector; -}); -var isNotIEorIsIE10plus = !document.documentMode || document.documentMode > 9; -var chrome = window.chrome; -var isChrome15OrOpera15plus = chrome && (chrome.webstore || chrome.app); -var isSafari6plus = /Apple/.test(navigator.vendor) && /Version\/([6-9]\d*|[1-5]\d+)/.test(navigator.userAgent); -function isLeftMouseReleased(event) { - if ('buttons' in event && isNotIEorIsIE10plus) { - return !(event.buttons & 1); - } - if (isChrome15OrOpera15plus || isSafari6plus) { - return event.which === 0; - } -} -exports.GrabToPan = GrabToPan; +exports.DownloadManager = DownloadManager; /***/ }), -/* 16 */ +/* 9 */ /***/ (function(module, exports, __w_pdfjs_require__) { "use strict"; @@ -5335,256 +2014,370 @@ exports.GrabToPan = GrabToPan; Object.defineProperty(exports, "__esModule", { value: true }); -exports.HandTool = undefined; - -var _grab_to_pan = __w_pdfjs_require__(15); +exports.PDFFindController = exports.FindStates = undefined; -var _ui_utils = __w_pdfjs_require__(0); +var _ui_utils = __w_pdfjs_require__(1); -var _preferences = __w_pdfjs_require__(12); +var FindStates = { + FIND_FOUND: 0, + FIND_NOTFOUND: 1, + FIND_WRAPPED: 2, + FIND_PENDING: 3 +}; +var FIND_SCROLL_OFFSET_TOP = -50; +var FIND_SCROLL_OFFSET_LEFT = -400; +var CHARACTERS_TO_NORMALIZE = { + '\u2018': '\'', + '\u2019': '\'', + '\u201A': '\'', + '\u201B': '\'', + '\u201C': '"', + '\u201D': '"', + '\u201E': '"', + '\u201F': '"', + '\xBC': '1/4', + '\xBD': '1/2', + '\xBE': '3/4' +}; +var PDFFindController = function PDFFindControllerClosure() { + function PDFFindController(options) { + this.pdfViewer = options.pdfViewer || null; + this.onUpdateResultsCount = null; + this.onUpdateState = null; + this.reset(); + var replace = Object.keys(CHARACTERS_TO_NORMALIZE).join(''); + this.normalizationRegex = new RegExp('[' + replace + ']', 'g'); + } + PDFFindController.prototype = { + reset: function PDFFindController_reset() { + var _this = this; -var HandTool = function HandToolClosure() { - function HandTool(options) { - this.container = options.container; - this.eventBus = options.eventBus; - this.wasActive = false; - this.handTool = new _grab_to_pan.GrabToPan({ - element: this.container, - onActiveChanged: function (isActive) { - this.eventBus.dispatch('handtoolchanged', { isActive: isActive }); - }.bind(this) - }); - this.eventBus.on('togglehandtool', this.toggle.bind(this)); - Promise.all([_ui_utils.localized, _preferences.Preferences.get('enableHandToolOnLoad')]).then(function resolved(values) { - if (values[1] === true) { - this.handTool.activate(); - } - }.bind(this)).catch(function rejected(reason) {}); - this.eventBus.on('presentationmodechanged', function (e) { - if (e.switchInProgress) { + this.startedTextExtraction = false; + this.extractTextPromises = []; + this.pendingFindMatches = Object.create(null); + this.active = false; + this.pageContents = []; + this.pageMatches = []; + this.pageMatchesLength = null; + this.matchCount = 0; + this.selected = { + pageIdx: -1, + matchIdx: -1 + }; + this.offset = { + pageIdx: null, + matchIdx: null + }; + this.pagesToSearch = null; + this.resumePageIdx = null; + this.state = null; + this.dirtyMatch = false; + this.findTimeout = null; + this._firstPagePromise = new Promise(function (resolve) { + _this.resolveFirstPage = resolve; + }); + }, + normalize: function PDFFindController_normalize(text) { + return text.replace(this.normalizationRegex, function (ch) { + return CHARACTERS_TO_NORMALIZE[ch]; + }); + }, + _prepareMatches: function PDFFindController_prepareMatches(matchesWithLength, matches, matchesLength) { + function isSubTerm(matchesWithLength, currentIndex) { + var currentElem, prevElem, nextElem; + currentElem = matchesWithLength[currentIndex]; + nextElem = matchesWithLength[currentIndex + 1]; + if (currentIndex < matchesWithLength.length - 1 && currentElem.match === nextElem.match) { + currentElem.skipped = true; + return true; + } + for (var i = currentIndex - 1; i >= 0; i--) { + prevElem = matchesWithLength[i]; + if (prevElem.skipped) { + continue; + } + if (prevElem.match + prevElem.matchLength < currentElem.match) { + break; + } + if (prevElem.match + prevElem.matchLength >= currentElem.match + currentElem.matchLength) { + currentElem.skipped = true; + return true; + } + } + return false; + } + var i, len; + matchesWithLength.sort(function (a, b) { + return a.match === b.match ? a.matchLength - b.matchLength : a.match - b.match; + }); + for (i = 0, len = matchesWithLength.length; i < len; i++) { + if (isSubTerm(matchesWithLength, i)) { + continue; + } + matches.push(matchesWithLength[i].match); + matchesLength.push(matchesWithLength[i].matchLength); + } + }, + calcFindPhraseMatch: function PDFFindController_calcFindPhraseMatch(query, pageIndex, pageContent) { + var matches = []; + var queryLen = query.length; + var matchIdx = -queryLen; + while (true) { + matchIdx = pageContent.indexOf(query, matchIdx + queryLen); + if (matchIdx === -1) { + break; + } + matches.push(matchIdx); + } + this.pageMatches[pageIndex] = matches; + }, + calcFindWordMatch: function PDFFindController_calcFindWordMatch(query, pageIndex, pageContent) { + var matchesWithLength = []; + var queryArray = query.match(/\S+/g); + var subquery, subqueryLen, matchIdx; + for (var i = 0, len = queryArray.length; i < len; i++) { + subquery = queryArray[i]; + subqueryLen = subquery.length; + matchIdx = -subqueryLen; + while (true) { + matchIdx = pageContent.indexOf(subquery, matchIdx + subqueryLen); + if (matchIdx === -1) { + break; + } + matchesWithLength.push({ + match: matchIdx, + matchLength: subqueryLen, + skipped: false + }); + } + } + if (!this.pageMatchesLength) { + this.pageMatchesLength = []; + } + this.pageMatchesLength[pageIndex] = []; + this.pageMatches[pageIndex] = []; + this._prepareMatches(matchesWithLength, this.pageMatches[pageIndex], this.pageMatchesLength[pageIndex]); + }, + calcFindMatch: function PDFFindController_calcFindMatch(pageIndex) { + var pageContent = this.normalize(this.pageContents[pageIndex]); + var query = this.normalize(this.state.query); + var caseSensitive = this.state.caseSensitive; + var phraseSearch = this.state.phraseSearch; + var queryLen = query.length; + if (queryLen === 0) { return; } - if (e.active) { - this.enterPresentationMode(); + if (!caseSensitive) { + pageContent = pageContent.toLowerCase(); + query = query.toLowerCase(); + } + if (phraseSearch) { + this.calcFindPhraseMatch(query, pageIndex, pageContent); } else { - this.exitPresentationMode(); + this.calcFindWordMatch(query, pageIndex, pageContent); + } + this.updatePage(pageIndex); + if (this.resumePageIdx === pageIndex) { + this.resumePageIdx = null; + this.nextPageMatch(); + } + if (this.pageMatches[pageIndex].length > 0) { + this.matchCount += this.pageMatches[pageIndex].length; + this.updateUIResultsCount(); + } + }, + extractText: function PDFFindController_extractText() { + if (this.startedTextExtraction) { + return; + } + this.startedTextExtraction = true; + this.pageContents = []; + var extractTextPromisesResolves = []; + var numPages = this.pdfViewer.pagesCount; + for (var i = 0; i < numPages; i++) { + this.extractTextPromises.push(new Promise(function (resolve) { + extractTextPromisesResolves.push(resolve); + })); } - }.bind(this)); - } - HandTool.prototype = { - get isActive() { - return !!this.handTool.active; - }, - toggle: function HandTool_toggle() { - this.handTool.toggle(); - }, - enterPresentationMode: function HandTool_enterPresentationMode() { - if (this.isActive) { - this.wasActive = true; - this.handTool.deactivate(); + var self = this; + function extractPageText(pageIndex) { + self.pdfViewer.getPageTextContent(pageIndex).then(function textContentResolved(textContent) { + var textItems = textContent.items; + var str = []; + for (var i = 0, len = textItems.length; i < len; i++) { + str.push(textItems[i].str); + } + self.pageContents.push(str.join('')); + extractTextPromisesResolves[pageIndex](pageIndex); + if (pageIndex + 1 < self.pdfViewer.pagesCount) { + extractPageText(pageIndex + 1); + } + }); } + extractPageText(0); }, - exitPresentationMode: function HandTool_exitPresentationMode() { - if (this.wasActive) { - this.wasActive = false; - this.handTool.activate(); + executeCommand: function PDFFindController_executeCommand(cmd, state) { + if (this.state === null || cmd !== 'findagain') { + this.dirtyMatch = true; } - } - }; - return HandTool; -}(); -exports.HandTool = HandTool; - -/***/ }), -/* 17 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.PasswordPrompt = undefined; - -var _ui_utils = __w_pdfjs_require__(0); - -var _overlay_manager = __w_pdfjs_require__(6); - -var _pdfjs = __w_pdfjs_require__(1); - -var PasswordPrompt = function PasswordPromptClosure() { - function PasswordPrompt(options) { - this.overlayName = options.overlayName; - this.container = options.container; - this.label = options.label; - this.input = options.input; - this.submitButton = options.submitButton; - this.cancelButton = options.cancelButton; - this.updateCallback = null; - this.reason = null; - this.submitButton.addEventListener('click', this.verify.bind(this)); - this.cancelButton.addEventListener('click', this.close.bind(this)); - this.input.addEventListener('keydown', function (e) { - if (e.keyCode === 13) { - this.verify(); - } - }.bind(this)); - _overlay_manager.OverlayManager.register(this.overlayName, this.container, this.close.bind(this), true); - } - PasswordPrompt.prototype = { - open: function PasswordPrompt_open() { - _overlay_manager.OverlayManager.open(this.overlayName).then(function () { - this.input.type = 'password'; - this.input.focus(); - var promptString = _ui_utils.mozL10n.get('password_label', null, 'Enter the password to open this PDF file.'); - if (this.reason === _pdfjs.PasswordResponses.INCORRECT_PASSWORD) { - promptString = _ui_utils.mozL10n.get('password_invalid', null, 'Invalid password. Please try again.'); + this.state = state; + this.updateUIState(FindStates.FIND_PENDING); + this._firstPagePromise.then(function () { + this.extractText(); + clearTimeout(this.findTimeout); + if (cmd === 'find') { + this.findTimeout = setTimeout(this.nextMatch.bind(this), 250); + } else { + this.nextMatch(); } - this.label.textContent = promptString; }.bind(this)); }, - close: function PasswordPrompt_close() { - _overlay_manager.OverlayManager.close(this.overlayName).then(function () { - this.input.value = ''; - this.input.type = ''; - }.bind(this)); - }, - verify: function PasswordPrompt_verify() { - var password = this.input.value; - if (password && password.length > 0) { - this.close(); - return this.updateCallback(password); + updatePage: function PDFFindController_updatePage(index) { + if (this.selected.pageIdx === index) { + this.pdfViewer.currentPageNumber = index + 1; } - }, - setUpdateCallback: function PasswordPrompt_setUpdateCallback(updateCallback, reason) { - this.updateCallback = updateCallback; - this.reason = reason; - } - }; - return PasswordPrompt; -}(); -exports.PasswordPrompt = PasswordPrompt; - -/***/ }), -/* 18 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.PDFAttachmentViewer = undefined; - -var _pdfjs = __w_pdfjs_require__(1); - -var PDFAttachmentViewer = function PDFAttachmentViewerClosure() { - function PDFAttachmentViewer(options) { - this.attachments = null; - this.container = options.container; - this.eventBus = options.eventBus; - this.downloadManager = options.downloadManager; - this._renderedCapability = (0, _pdfjs.createPromiseCapability)(); - this.eventBus.on('fileattachmentannotation', this._appendAttachment.bind(this)); - } - PDFAttachmentViewer.prototype = { - reset: function PDFAttachmentViewer_reset(keepRenderedCapability) { - this.attachments = null; - this.container.textContent = ''; - if (!keepRenderedCapability) { - this._renderedCapability = (0, _pdfjs.createPromiseCapability)(); + var page = this.pdfViewer.getPageView(index); + if (page.textLayer) { + page.textLayer.updateMatches(); } }, - _dispatchEvent: function PDFAttachmentViewer_dispatchEvent(attachmentsCount) { - this.eventBus.dispatch('attachmentsloaded', { - source: this, - attachmentsCount: attachmentsCount - }); - this._renderedCapability.resolve(); + nextMatch: function PDFFindController_nextMatch() { + var previous = this.state.findPrevious; + var currentPageIndex = this.pdfViewer.currentPageNumber - 1; + var numPages = this.pdfViewer.pagesCount; + this.active = true; + if (this.dirtyMatch) { + this.dirtyMatch = false; + this.selected.pageIdx = this.selected.matchIdx = -1; + this.offset.pageIdx = currentPageIndex; + this.offset.matchIdx = null; + this.hadMatch = false; + this.resumePageIdx = null; + this.pageMatches = []; + this.matchCount = 0; + this.pageMatchesLength = null; + var self = this; + for (var i = 0; i < numPages; i++) { + this.updatePage(i); + if (!(i in this.pendingFindMatches)) { + this.pendingFindMatches[i] = true; + this.extractTextPromises[i].then(function (pageIdx) { + delete self.pendingFindMatches[pageIdx]; + self.calcFindMatch(pageIdx); + }); + } + } + } + if (this.state.query === '') { + this.updateUIState(FindStates.FIND_FOUND); + return; + } + if (this.resumePageIdx) { + return; + } + var offset = this.offset; + this.pagesToSearch = numPages; + if (offset.matchIdx !== null) { + var numPageMatches = this.pageMatches[offset.pageIdx].length; + if (!previous && offset.matchIdx + 1 < numPageMatches || previous && offset.matchIdx > 0) { + this.hadMatch = true; + offset.matchIdx = previous ? offset.matchIdx - 1 : offset.matchIdx + 1; + this.updateMatch(true); + return; + } + this.advanceOffsetPage(previous); + } + this.nextPageMatch(); }, - _bindPdfLink: function PDFAttachmentViewer_bindPdfLink(button, content, filename) { - var blobUrl; - button.onclick = function () { - if (!blobUrl) { - blobUrl = (0, _pdfjs.createObjectURL)(content, 'application/pdf', _pdfjs.PDFJS.disableCreateObjectURL); + matchesReady: function PDFFindController_matchesReady(matches) { + var offset = this.offset; + var numMatches = matches.length; + var previous = this.state.findPrevious; + if (numMatches) { + this.hadMatch = true; + offset.matchIdx = previous ? numMatches - 1 : 0; + this.updateMatch(true); + return true; + } + this.advanceOffsetPage(previous); + if (offset.wrapped) { + offset.matchIdx = null; + if (this.pagesToSearch < 0) { + this.updateMatch(false); + return true; } - var viewerUrl; - viewerUrl = '?file=' + encodeURIComponent(blobUrl + '#' + filename); - window.open(viewerUrl); - return false; - }; + } + return false; }, - _bindLink: function PDFAttachmentViewer_bindLink(button, content, filename) { - button.onclick = function downloadFile(e) { - this.downloadManager.downloadData(content, filename, ''); - return false; - }.bind(this); + updateMatchPosition: function PDFFindController_updateMatchPosition(pageIndex, index, elements, beginIdx) { + if (this.selected.matchIdx === index && this.selected.pageIdx === pageIndex) { + var spot = { + top: FIND_SCROLL_OFFSET_TOP, + left: FIND_SCROLL_OFFSET_LEFT + }; + (0, _ui_utils.scrollIntoView)(elements[beginIdx], spot, true); + } }, - render: function PDFAttachmentViewer_render(params) { - params = params || {}; - var attachments = params.attachments || null; - var attachmentsCount = 0; - if (this.attachments) { - var keepRenderedCapability = params.keepRenderedCapability === true; - this.reset(keepRenderedCapability); - } - this.attachments = attachments; - if (!attachments) { - this._dispatchEvent(attachmentsCount); - return; + nextPageMatch: function PDFFindController_nextPageMatch() { + if (this.resumePageIdx !== null) { + console.error('There can only be one pending page.'); } - var names = Object.keys(attachments).sort(function (a, b) { - return a.toLowerCase().localeCompare(b.toLowerCase()); - }); - attachmentsCount = names.length; - for (var i = 0; i < attachmentsCount; i++) { - var item = attachments[names[i]]; - var filename = (0, _pdfjs.removeNullCharacters)((0, _pdfjs.getFilenameFromUrl)(item.filename)); - var div = document.createElement('div'); - div.className = 'attachmentsItem'; - var button = document.createElement('button'); - button.textContent = filename; - if (/\.pdf$/i.test(filename)) { - this._bindPdfLink(button, item.content, filename); - } else { - this._bindLink(button, item.content, filename); + do { + var pageIdx = this.offset.pageIdx; + var matches = this.pageMatches[pageIdx]; + if (!matches) { + this.resumePageIdx = pageIdx; + break; } - div.appendChild(button); - this.container.appendChild(div); + } while (!this.matchesReady(matches)); + }, + advanceOffsetPage: function PDFFindController_advanceOffsetPage(previous) { + var offset = this.offset; + var numPages = this.extractTextPromises.length; + offset.pageIdx = previous ? offset.pageIdx - 1 : offset.pageIdx + 1; + offset.matchIdx = null; + this.pagesToSearch--; + if (offset.pageIdx >= numPages || offset.pageIdx < 0) { + offset.pageIdx = previous ? numPages - 1 : 0; + offset.wrapped = true; } - this._dispatchEvent(attachmentsCount); }, - _appendAttachment: function PDFAttachmentViewer_appendAttachment(item) { - this._renderedCapability.promise.then(function (id, filename, content) { - var attachments = this.attachments; - if (!attachments) { - attachments = Object.create(null); - } else { - for (var name in attachments) { - if (id === name) { - return; - } - } + updateMatch: function PDFFindController_updateMatch(found) { + var state = FindStates.FIND_NOTFOUND; + var wrapped = this.offset.wrapped; + this.offset.wrapped = false; + if (found) { + var previousPage = this.selected.pageIdx; + this.selected.pageIdx = this.offset.pageIdx; + this.selected.matchIdx = this.offset.matchIdx; + state = wrapped ? FindStates.FIND_WRAPPED : FindStates.FIND_FOUND; + if (previousPage !== -1 && previousPage !== this.selected.pageIdx) { + this.updatePage(previousPage); } - attachments[id] = { - filename: filename, - content: content - }; - this.render({ - attachments: attachments, - keepRenderedCapability: true - }); - }.bind(this, item.id, item.filename, item.content)); + } + this.updateUIState(state, this.state.findPrevious); + if (this.selected.pageIdx !== -1) { + this.updatePage(this.selected.pageIdx); + } + }, + updateUIResultsCount: function PDFFindController_updateUIResultsCount() { + if (this.onUpdateResultsCount) { + this.onUpdateResultsCount(this.matchCount); + } + }, + updateUIState: function PDFFindController_updateUIState(state, previous) { + if (this.onUpdateState) { + this.onUpdateState(state, previous, this.matchCount); + } } }; - return PDFAttachmentViewer; + return PDFFindController; }(); -exports.PDFAttachmentViewer = PDFAttachmentViewer; +exports.FindStates = FindStates; +exports.PDFFindController = PDFFindController; /***/ }), -/* 19 */ +/* 10 */ /***/ (function(module, exports, __w_pdfjs_require__) { "use strict"; @@ -5593,305 +2386,305 @@ exports.PDFAttachmentViewer = PDFAttachmentViewer; Object.defineProperty(exports, "__esModule", { value: true }); -exports.PDFDocumentProperties = undefined; - -var _ui_utils = __w_pdfjs_require__(0); +exports.PDFHistory = undefined; -var _overlay_manager = __w_pdfjs_require__(6); +var _dom_events = __w_pdfjs_require__(2); -var PDFDocumentProperties = function PDFDocumentPropertiesClosure() { - function PDFDocumentProperties(options) { - this.fields = options.fields; - this.overlayName = options.overlayName; - this.container = options.container; - this.rawFileSize = 0; - this.url = null; - this.pdfDocument = null; - if (options.closeButton) { - options.closeButton.addEventListener('click', this.close.bind(this)); +function PDFHistory(options) { + this.linkService = options.linkService; + this.eventBus = options.eventBus || (0, _dom_events.getGlobalEventBus)(); + this.initialized = false; + this.initialDestination = null; + this.initialBookmark = null; +} +PDFHistory.prototype = { + initialize: function pdfHistoryInitialize(fingerprint) { + this.initialized = true; + this.reInitialized = false; + this.allowHashChange = true; + this.historyUnlocked = true; + this.isViewerInPresentationMode = false; + this.previousHash = window.location.hash.substring(1); + this.currentBookmark = ''; + this.currentPage = 0; + this.updatePreviousBookmark = false; + this.previousBookmark = ''; + this.previousPage = 0; + this.nextHashParam = ''; + this.fingerprint = fingerprint; + this.currentUid = this.uid = 0; + this.current = {}; + var state = window.history.state; + if (this._isStateObjectDefined(state)) { + if (state.target.dest) { + this.initialDestination = state.target.dest; + } else { + this.initialBookmark = state.target.hash; + } + this.currentUid = state.uid; + this.uid = state.uid + 1; + this.current = state.target; + } else { + if (state && state.fingerprint && this.fingerprint !== state.fingerprint) { + this.reInitialized = true; + } + this._pushOrReplaceState({ fingerprint: this.fingerprint }, true); } - this.dataAvailablePromise = new Promise(function (resolve) { - this.resolveDataAvailable = resolve; - }.bind(this)); - _overlay_manager.OverlayManager.register(this.overlayName, this.container, this.close.bind(this)); - } - PDFDocumentProperties.prototype = { - open: function PDFDocumentProperties_open() { - Promise.all([_overlay_manager.OverlayManager.open(this.overlayName), this.dataAvailablePromise]).then(function () { - this._getProperties(); - }.bind(this)); - }, - close: function PDFDocumentProperties_close() { - _overlay_manager.OverlayManager.close(this.overlayName); - }, - setFileSize: function PDFDocumentProperties_setFileSize(fileSize) { - if (fileSize > 0) { - this.rawFileSize = fileSize; + var self = this; + window.addEventListener('popstate', function pdfHistoryPopstate(evt) { + if (!self.historyUnlocked) { + return; } - }, - setDocumentAndUrl: function PDFDocumentProperties_setDocumentAndUrl(pdfDocument, url) { - this.pdfDocument = pdfDocument; - this.url = url; - this.resolveDataAvailable(); - }, - _getProperties: function PDFDocumentProperties_getProperties() { - if (!_overlay_manager.OverlayManager.active) { + if (evt.state) { + self._goTo(evt.state); return; } - this.pdfDocument.getDownloadInfo().then(function (data) { - if (data.length === this.rawFileSize) { - return; - } - this.setFileSize(data.length); - this._updateUI(this.fields['fileSize'], this._parseFileSize()); - }.bind(this)); - this.pdfDocument.getMetadata().then(function (data) { - var content = { - 'fileName': (0, _ui_utils.getPDFFileNameFromURL)(this.url), - 'fileSize': this._parseFileSize(), - 'title': data.info.Title, - 'author': data.info.Author, - 'subject': data.info.Subject, - 'keywords': data.info.Keywords, - 'creationDate': this._parseDate(data.info.CreationDate), - 'modificationDate': this._parseDate(data.info.ModDate), - 'creator': data.info.Creator, - 'producer': data.info.Producer, - 'version': data.info.PDFFormatVersion, - 'pageCount': this.pdfDocument.numPages - }; - for (var identifier in content) { - this._updateUI(this.fields[identifier], content[identifier]); - } - }.bind(this)); - }, - _updateUI: function PDFDocumentProperties_updateUI(field, content) { - if (field && content !== undefined && content !== '') { - field.textContent = content; + if (self.uid === 0) { + var previousParams = self.previousHash && self.currentBookmark && self.previousHash !== self.currentBookmark ? { + hash: self.currentBookmark, + page: self.currentPage + } : { page: 1 }; + replacePreviousHistoryState(previousParams, function () { + updateHistoryWithCurrentHash(); + }); + } else { + updateHistoryWithCurrentHash(); } - }, - _parseFileSize: function PDFDocumentProperties_parseFileSize() { - var fileSize = this.rawFileSize, - kb = fileSize / 1024; - if (!kb) { - return; - } else if (kb < 1024) { - return _ui_utils.mozL10n.get('document_properties_kb', { - size_kb: (+kb.toPrecision(3)).toLocaleString(), - size_b: fileSize.toLocaleString() - }, '{{size_kb}} KB ({{size_b}} bytes)'); - } - return _ui_utils.mozL10n.get('document_properties_mb', { - size_mb: (+(kb / 1024).toPrecision(3)).toLocaleString(), - size_b: fileSize.toLocaleString() - }, '{{size_mb}} MB ({{size_b}} bytes)'); - }, - _parseDate: function PDFDocumentProperties_parseDate(inputDate) { - var dateToParse = inputDate; - if (dateToParse === undefined) { - return ''; - } - if (dateToParse.substring(0, 2) === 'D:') { - dateToParse = dateToParse.substring(2); - } - var year = parseInt(dateToParse.substring(0, 4), 10); - var month = parseInt(dateToParse.substring(4, 6), 10) - 1; - var day = parseInt(dateToParse.substring(6, 8), 10); - var hours = parseInt(dateToParse.substring(8, 10), 10); - var minutes = parseInt(dateToParse.substring(10, 12), 10); - var seconds = parseInt(dateToParse.substring(12, 14), 10); - var utRel = dateToParse.substring(14, 15); - var offsetHours = parseInt(dateToParse.substring(15, 17), 10); - var offsetMinutes = parseInt(dateToParse.substring(18, 20), 10); - if (utRel === '-') { - hours += offsetHours; - minutes += offsetMinutes; - } else if (utRel === '+') { - hours -= offsetHours; - minutes -= offsetMinutes; - } - var date = new Date(Date.UTC(year, month, day, hours, minutes, seconds)); - var dateString = date.toLocaleDateString(); - var timeString = date.toLocaleTimeString(); - return _ui_utils.mozL10n.get('document_properties_date_string', { - date: dateString, - time: timeString - }, '{{date}}, {{time}}'); + }); + function updateHistoryWithCurrentHash() { + self.previousHash = window.location.hash.slice(1); + self._pushToHistory({ hash: self.previousHash }, false, true); + self._updatePreviousBookmark(); } - }; - return PDFDocumentProperties; -}(); -exports.PDFDocumentProperties = PDFDocumentProperties; - -/***/ }), -/* 20 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.PDFFindBar = undefined; - -var _pdf_find_controller = __w_pdfjs_require__(5); - -var _ui_utils = __w_pdfjs_require__(0); - -var PDFFindBar = function PDFFindBarClosure() { - function PDFFindBar(options) { - this.opened = false; - this.bar = options.bar || null; - this.toggleButton = options.toggleButton || null; - this.findField = options.findField || null; - this.highlightAll = options.highlightAllCheckbox || null; - this.caseSensitive = options.caseSensitiveCheckbox || null; - this.findMsg = options.findMsg || null; - this.findResultsCount = options.findResultsCount || null; - this.findStatusIcon = options.findStatusIcon || null; - this.findPreviousButton = options.findPreviousButton || null; - this.findNextButton = options.findNextButton || null; - this.findController = options.findController || null; - this.eventBus = options.eventBus; - if (this.findController === null) { - throw new Error('PDFFindBar cannot be used without a ' + 'PDFFindController instance.'); + function replacePreviousHistoryState(params, callback) { + self.historyUnlocked = false; + self.allowHashChange = false; + window.addEventListener('popstate', rewriteHistoryAfterBack); + history.back(); + function rewriteHistoryAfterBack() { + window.removeEventListener('popstate', rewriteHistoryAfterBack); + window.addEventListener('popstate', rewriteHistoryAfterForward); + self._pushToHistory(params, false, true); + history.forward(); + } + function rewriteHistoryAfterForward() { + window.removeEventListener('popstate', rewriteHistoryAfterForward); + self.allowHashChange = true; + self.historyUnlocked = true; + callback(); + } } - var self = this; - this.toggleButton.addEventListener('click', function () { - self.toggle(); - }); - this.findField.addEventListener('input', function () { - self.dispatchEvent(''); - }); - this.bar.addEventListener('keydown', function (evt) { - switch (evt.keyCode) { - case 13: - if (evt.target === self.findField) { - self.dispatchEvent('again', evt.shiftKey); - } - break; - case 27: - self.close(); - break; + function pdfHistoryBeforeUnload() { + var previousParams = self._getPreviousParams(null, true); + if (previousParams) { + var replacePrevious = !self.current.dest && self.current.hash !== self.previousHash; + self._pushToHistory(previousParams, false, replacePrevious); + self._updatePreviousBookmark(); } + window.removeEventListener('beforeunload', pdfHistoryBeforeUnload); + } + window.addEventListener('beforeunload', pdfHistoryBeforeUnload); + window.addEventListener('pageshow', function pdfHistoryPageShow(evt) { + window.addEventListener('beforeunload', pdfHistoryBeforeUnload); }); - this.findPreviousButton.addEventListener('click', function () { - self.dispatchEvent('again', true); - }); - this.findNextButton.addEventListener('click', function () { - self.dispatchEvent('again', false); - }); - this.highlightAll.addEventListener('click', function () { - self.dispatchEvent('highlightallchange'); - }); - this.caseSensitive.addEventListener('click', function () { - self.dispatchEvent('casesensitivitychange'); + self.eventBus.on('presentationmodechanged', function (e) { + self.isViewerInPresentationMode = e.active; }); - this.eventBus.on('resize', this._adjustWidth.bind(this)); - } - PDFFindBar.prototype = { - reset: function PDFFindBar_reset() { - this.updateUIState(); - }, - dispatchEvent: function PDFFindBar_dispatchEvent(type, findPrev) { - this.eventBus.dispatch('find', { - source: this, - type: type, - query: this.findField.value, - caseSensitive: this.caseSensitive.checked, - phraseSearch: true, - highlightAll: this.highlightAll.checked, - findPrevious: findPrev - }); - }, - updateUIState: function PDFFindBar_updateUIState(state, previous, matchCount) { - var notFound = false; - var findMsg = ''; - var status = ''; - switch (state) { - case _pdf_find_controller.FindStates.FIND_FOUND: - break; - case _pdf_find_controller.FindStates.FIND_PENDING: - status = 'pending'; - break; - case _pdf_find_controller.FindStates.FIND_NOTFOUND: - findMsg = _ui_utils.mozL10n.get('find_not_found', null, 'Phrase not found'); - notFound = true; - break; - case _pdf_find_controller.FindStates.FIND_WRAPPED: - if (previous) { - findMsg = _ui_utils.mozL10n.get('find_reached_top', null, 'Reached top of document, continued from bottom'); - } else { - findMsg = _ui_utils.mozL10n.get('find_reached_bottom', null, 'Reached end of document, continued from top'); - } - break; + }, + clearHistoryState: function pdfHistory_clearHistoryState() { + this._pushOrReplaceState(null, true); + }, + _isStateObjectDefined: function pdfHistory_isStateObjectDefined(state) { + return state && state.uid >= 0 && state.fingerprint && this.fingerprint === state.fingerprint && state.target && state.target.hash ? true : false; + }, + _pushOrReplaceState: function pdfHistory_pushOrReplaceState(stateObj, replace) { + if (replace) { + window.history.replaceState(stateObj, '', document.URL); + } else { + window.history.pushState(stateObj, '', document.URL); + } + }, + get isHashChangeUnlocked() { + if (!this.initialized) { + return true; + } + return this.allowHashChange; + }, + _updatePreviousBookmark: function pdfHistory_updatePreviousBookmark() { + if (this.updatePreviousBookmark && this.currentBookmark && this.currentPage) { + this.previousBookmark = this.currentBookmark; + this.previousPage = this.currentPage; + this.updatePreviousBookmark = false; + } + }, + updateCurrentBookmark: function pdfHistoryUpdateCurrentBookmark(bookmark, pageNum) { + if (this.initialized) { + this.currentBookmark = bookmark.substring(1); + this.currentPage = pageNum | 0; + this._updatePreviousBookmark(); + } + }, + updateNextHashParam: function pdfHistoryUpdateNextHashParam(param) { + if (this.initialized) { + this.nextHashParam = param; + } + }, + push: function pdfHistoryPush(params, isInitialBookmark) { + if (!(this.initialized && this.historyUnlocked)) { + return; + } + if (params.dest && !params.hash) { + params.hash = this.current.hash && this.current.dest && this.current.dest === params.dest ? this.current.hash : this.linkService.getDestinationHash(params.dest).split('#')[1]; + } + if (params.page) { + params.page |= 0; + } + if (isInitialBookmark) { + var target = window.history.state.target; + if (!target) { + this._pushToHistory(params, false); + this.previousHash = window.location.hash.substring(1); } - if (notFound) { - this.findField.classList.add('notFound'); - } else { - this.findField.classList.remove('notFound'); + this.updatePreviousBookmark = this.nextHashParam ? false : true; + if (target) { + this._updatePreviousBookmark(); } - this.findField.setAttribute('data-status', status); - this.findMsg.textContent = findMsg; - this.updateResultsCount(matchCount); - this._adjustWidth(); - }, - updateResultsCount: function updateResultsCount(matchCount) { - if (!this.findResultsCount) { + return; + } + if (this.nextHashParam) { + if (this.nextHashParam === params.hash) { + this.nextHashParam = null; + this.updatePreviousBookmark = true; return; } - if (!matchCount) { - this.findResultsCount.classList.add('hidden'); - return; + this.nextHashParam = null; + } + if (params.hash) { + if (this.current.hash) { + if (this.current.hash !== params.hash) { + this._pushToHistory(params, true); + } else { + if (!this.current.page && params.page) { + this._pushToHistory(params, false, true); + } + this.updatePreviousBookmark = true; + } + } else { + this._pushToHistory(params, true); } - this.findResultsCount.textContent = matchCount.toLocaleString(); - this.findResultsCount.classList.remove('hidden'); - }, - open: function PDFFindBar_open() { - if (!this.opened) { - this.opened = true; - this.toggleButton.classList.add('toggled'); - this.bar.classList.remove('hidden'); - } - this.findField.select(); - this.findField.focus(); - this._adjustWidth(); - }, - close: function PDFFindBar_close() { - if (!this.opened) { - return; + } else if (this.current.page && params.page && this.current.page !== params.page) { + this._pushToHistory(params, true); + } + }, + _getPreviousParams: function pdfHistory_getPreviousParams(onlyCheckPage, beforeUnload) { + if (!(this.currentBookmark && this.currentPage)) { + return null; + } else if (this.updatePreviousBookmark) { + this.updatePreviousBookmark = false; + } + if (this.uid > 0 && !(this.previousBookmark && this.previousPage)) { + return null; + } + if (!this.current.dest && !onlyCheckPage || beforeUnload) { + if (this.previousBookmark === this.currentBookmark) { + return null; } - this.opened = false; - this.toggleButton.classList.remove('toggled'); - this.bar.classList.add('hidden'); - this.findController.active = false; - }, - toggle: function PDFFindBar_toggle() { - if (this.opened) { - this.close(); - } else { - this.open(); + } else if (this.current.page || onlyCheckPage) { + if (this.previousPage === this.currentPage) { + return null; } - }, - _adjustWidth: function PDFFindBar_adjustWidth() { - if (!this.opened) { + } else { + return null; + } + var params = { + hash: this.currentBookmark, + page: this.currentPage + }; + if (this.isViewerInPresentationMode) { + params.hash = null; + } + return params; + }, + _stateObj: function pdfHistory_stateObj(params) { + return { + fingerprint: this.fingerprint, + uid: this.uid, + target: params + }; + }, + _pushToHistory: function pdfHistory_pushToHistory(params, addPrevious, overwrite) { + if (!this.initialized) { + return; + } + if (!params.hash && params.page) { + params.hash = 'page=' + params.page; + } + if (addPrevious && !overwrite) { + var previousParams = this._getPreviousParams(); + if (previousParams) { + var replacePrevious = !this.current.dest && this.current.hash !== this.previousHash; + this._pushToHistory(previousParams, false, replacePrevious); + } + } + this._pushOrReplaceState(this._stateObj(params), overwrite || this.uid === 0); + this.currentUid = this.uid++; + this.current = params; + this.updatePreviousBookmark = true; + }, + _goTo: function pdfHistory_goTo(state) { + if (!(this.initialized && this.historyUnlocked && this._isStateObjectDefined(state))) { + return; + } + if (!this.reInitialized && state.uid < this.currentUid) { + var previousParams = this._getPreviousParams(true); + if (previousParams) { + this._pushToHistory(this.current, false); + this._pushToHistory(previousParams, false); + this.currentUid = state.uid; + window.history.back(); return; } - this.bar.classList.remove('wrapContainers'); - var findbarHeight = this.bar.clientHeight; - var inputContainerHeight = this.bar.firstElementChild.clientHeight; - if (findbarHeight > inputContainerHeight) { - this.bar.classList.add('wrapContainers'); + } + this.historyUnlocked = false; + if (state.target.dest) { + this.linkService.navigateTo(state.target.dest); + } else { + this.linkService.setHash(state.target.hash); + } + this.currentUid = state.uid; + if (state.uid > this.uid) { + this.uid = state.uid; + } + this.current = state.target; + this.updatePreviousBookmark = true; + var currentHash = window.location.hash.substring(1); + if (this.previousHash !== currentHash) { + this.allowHashChange = false; + } + this.previousHash = currentHash; + this.historyUnlocked = true; + }, + back: function pdfHistoryBack() { + this.go(-1); + }, + forward: function pdfHistoryForward() { + this.go(1); + }, + go: function pdfHistoryGo(direction) { + if (this.initialized && this.historyUnlocked) { + var state = window.history.state; + if (direction === -1 && state && state.uid > 0) { + window.history.back(); + } else if (direction === 1 && state && state.uid < this.uid - 1) { + window.history.forward(); } } - }; - return PDFFindBar; -}(); -exports.PDFFindBar = PDFFindBar; + } +}; +exports.PDFHistory = PDFHistory; /***/ }), -/* 21 */ +/* 11 */ /***/ (function(module, exports, __w_pdfjs_require__) { "use strict"; @@ -5900,1236 +2693,712 @@ exports.PDFFindBar = PDFFindBar; Object.defineProperty(exports, "__esModule", { value: true }); -exports.PDFOutlineViewer = undefined; +exports.PDFViewer = exports.PresentationModeState = undefined; -var _pdfjs = __w_pdfjs_require__(1); +var _pdfjs = __w_pdfjs_require__(0); -var DEFAULT_TITLE = '\u2013'; -var PDFOutlineViewer = function PDFOutlineViewerClosure() { - function PDFOutlineViewer(options) { - this.outline = null; - this.lastToggleIsShow = true; - this.container = options.container; - this.linkService = options.linkService; - this.eventBus = options.eventBus; - } - PDFOutlineViewer.prototype = { - reset: function PDFOutlineViewer_reset() { - this.outline = null; - this.lastToggleIsShow = true; - this.container.textContent = ''; - this.container.classList.remove('outlineWithDeepNesting'); - }, - _dispatchEvent: function PDFOutlineViewer_dispatchEvent(outlineCount) { - this.eventBus.dispatch('outlineloaded', { - source: this, - outlineCount: outlineCount - }); - }, - _bindLink: function PDFOutlineViewer_bindLink(element, item) { - if (item.url) { - (0, _pdfjs.addLinkAttributes)(element, { - url: item.url, - target: item.newWindow ? _pdfjs.PDFJS.LinkTarget.BLANK : undefined - }); - return; - } - var self = this, - destination = item.dest; - element.href = self.linkService.getDestinationHash(destination); - element.onclick = function () { - if (destination) { - self.linkService.navigateTo(destination); - } - return false; - }; - }, - _setStyles: function PDFOutlineViewer_setStyles(element, item) { - var styleStr = ''; - if (item.bold) { - styleStr += 'font-weight: bold;'; - } - if (item.italic) { - styleStr += 'font-style: italic;'; - } - if (styleStr) { - element.setAttribute('style', styleStr); - } - }, - _addToggleButton: function PDFOutlineViewer_addToggleButton(div) { - var toggler = document.createElement('div'); - toggler.className = 'outlineItemToggler'; - toggler.onclick = function (event) { - event.stopPropagation(); - toggler.classList.toggle('outlineItemsHidden'); - if (event.shiftKey) { - var shouldShowAll = !toggler.classList.contains('outlineItemsHidden'); - this._toggleOutlineItem(div, shouldShowAll); - } - }.bind(this); - div.insertBefore(toggler, div.firstChild); - }, - _toggleOutlineItem: function PDFOutlineViewer_toggleOutlineItem(root, show) { - this.lastToggleIsShow = show; - var togglers = root.querySelectorAll('.outlineItemToggler'); - for (var i = 0, ii = togglers.length; i < ii; ++i) { - togglers[i].classList[show ? 'remove' : 'add']('outlineItemsHidden'); - } - }, - toggleOutlineTree: function PDFOutlineViewer_toggleOutlineTree() { - if (!this.outline) { - return; - } - this._toggleOutlineItem(this.container, !this.lastToggleIsShow); - }, - render: function PDFOutlineViewer_render(params) { - var outline = params && params.outline || null; - var outlineCount = 0; - if (this.outline) { - this.reset(); - } - this.outline = outline; - if (!outline) { - this._dispatchEvent(outlineCount); - return; - } - var fragment = document.createDocumentFragment(); - var queue = [{ - parent: fragment, - items: this.outline - }]; - var hasAnyNesting = false; - while (queue.length > 0) { - var levelData = queue.shift(); - for (var i = 0, len = levelData.items.length; i < len; i++) { - var item = levelData.items[i]; - var div = document.createElement('div'); - div.className = 'outlineItem'; - var element = document.createElement('a'); - this._bindLink(element, item); - this._setStyles(element, item); - element.textContent = (0, _pdfjs.removeNullCharacters)(item.title) || DEFAULT_TITLE; - div.appendChild(element); - if (item.items.length > 0) { - hasAnyNesting = true; - this._addToggleButton(div); - var itemsDiv = document.createElement('div'); - itemsDiv.className = 'outlineItems'; - div.appendChild(itemsDiv); - queue.push({ - parent: itemsDiv, - items: item.items - }); - } - levelData.parent.appendChild(div); - outlineCount++; - } - } - if (hasAnyNesting) { - this.container.classList.add('outlineWithDeepNesting'); - } - this.container.appendChild(fragment); - this._dispatchEvent(outlineCount); - } - }; - return PDFOutlineViewer; -}(); -exports.PDFOutlineViewer = PDFOutlineViewer; +var _ui_utils = __w_pdfjs_require__(1); -/***/ }), -/* 22 */ -/***/ (function(module, exports, __w_pdfjs_require__) { +var _pdf_rendering_queue = __w_pdfjs_require__(7); -"use strict"; +var _annotation_layer_builder = __w_pdfjs_require__(4); +var _dom_events = __w_pdfjs_require__(2); -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.PDFPresentationMode = undefined; +var _pdf_page_view = __w_pdfjs_require__(5); -var _ui_utils = __w_pdfjs_require__(0); +var _pdf_link_service = __w_pdfjs_require__(3); -var DELAY_BEFORE_RESETTING_SWITCH_IN_PROGRESS = 1500; -var DELAY_BEFORE_HIDING_CONTROLS = 3000; -var ACTIVE_SELECTOR = 'pdfPresentationMode'; -var CONTROLS_SELECTOR = 'pdfPresentationModeControls'; -var PDFPresentationMode = function PDFPresentationModeClosure() { - function PDFPresentationMode(options) { - this.container = options.container; - this.viewer = options.viewer || options.container.firstElementChild; - this.pdfViewer = options.pdfViewer; - this.eventBus = options.eventBus; - var contextMenuItems = options.contextMenuItems || null; - this.active = false; - this.args = null; - this.contextMenuOpen = false; - this.mouseScrollTimeStamp = 0; - this.mouseScrollDelta = 0; - this.touchSwipeState = null; - if (contextMenuItems) { - contextMenuItems.contextFirstPage.addEventListener('click', function PDFPresentationMode_contextFirstPageClick(e) { - this.contextMenuOpen = false; - this.eventBus.dispatch('firstpage'); - }.bind(this)); - contextMenuItems.contextLastPage.addEventListener('click', function PDFPresentationMode_contextLastPageClick(e) { - this.contextMenuOpen = false; - this.eventBus.dispatch('lastpage'); - }.bind(this)); - contextMenuItems.contextPageRotateCw.addEventListener('click', function PDFPresentationMode_contextPageRotateCwClick(e) { - this.contextMenuOpen = false; - this.eventBus.dispatch('rotatecw'); - }.bind(this)); - contextMenuItems.contextPageRotateCcw.addEventListener('click', function PDFPresentationMode_contextPageRotateCcwClick(e) { - this.contextMenuOpen = false; - this.eventBus.dispatch('rotateccw'); - }.bind(this)); - } - } - PDFPresentationMode.prototype = { - request: function PDFPresentationMode_request() { - if (this.switchInProgress || this.active || !this.viewer.hasChildNodes()) { - return false; - } - this._addFullscreenChangeListeners(); - this._setSwitchInProgress(); - this._notifyStateChange(); - if (this.container.requestFullscreen) { - this.container.requestFullscreen(); - } else if (this.container.mozRequestFullScreen) { - this.container.mozRequestFullScreen(); - } else if (this.container.webkitRequestFullscreen) { - this.container.webkitRequestFullscreen(Element.ALLOW_KEYBOARD_INPUT); - } else if (this.container.msRequestFullscreen) { - this.container.msRequestFullscreen(); - } else { - return false; - } - this.args = { - page: this.pdfViewer.currentPageNumber, - previousScale: this.pdfViewer.currentScaleValue - }; - return true; - }, - _mouseWheel: function PDFPresentationMode_mouseWheel(evt) { - if (!this.active) { - return; - } - evt.preventDefault(); - var delta = (0, _ui_utils.normalizeWheelEventDelta)(evt); - var MOUSE_SCROLL_COOLDOWN_TIME = 50; - var PAGE_SWITCH_THRESHOLD = 0.1; - var currentTime = new Date().getTime(); - var storedTime = this.mouseScrollTimeStamp; - if (currentTime > storedTime && currentTime - storedTime < MOUSE_SCROLL_COOLDOWN_TIME) { - return; - } - if (this.mouseScrollDelta > 0 && delta < 0 || this.mouseScrollDelta < 0 && delta > 0) { - this._resetMouseScrollState(); +var _text_layer_builder = __w_pdfjs_require__(6); + +var PresentationModeState = { + UNKNOWN: 0, + NORMAL: 1, + CHANGING: 2, + FULLSCREEN: 3 +}; +var DEFAULT_CACHE_SIZE = 10; +var PDFViewer = function pdfViewer() { + function PDFPageViewBuffer(size) { + var data = []; + this.push = function cachePush(view) { + var i = data.indexOf(view); + if (i >= 0) { + data.splice(i, 1); } - this.mouseScrollDelta += delta; - if (Math.abs(this.mouseScrollDelta) >= PAGE_SWITCH_THRESHOLD) { - var totalDelta = this.mouseScrollDelta; - this._resetMouseScrollState(); - var success = totalDelta > 0 ? this._goToPreviousPage() : this._goToNextPage(); - if (success) { - this.mouseScrollTimeStamp = currentTime; - } + data.push(view); + if (data.length > size) { + data.shift().destroy(); } - }, - get isFullscreen() { - return !!(document.fullscreenElement || document.mozFullScreen || document.webkitIsFullScreen || document.msFullscreenElement); - }, - _goToPreviousPage: function PDFPresentationMode_goToPreviousPage() { - var page = this.pdfViewer.currentPageNumber; - if (page <= 1) { - return false; + }; + this.resize = function (newSize) { + size = newSize; + while (data.length > size) { + data.shift().destroy(); } - this.pdfViewer.currentPageNumber = page - 1; + }; + } + function isSameScale(oldScale, newScale) { + if (newScale === oldScale) { return true; - }, - _goToNextPage: function PDFPresentationMode_goToNextPage() { - var page = this.pdfViewer.currentPageNumber; - if (page >= this.pdfViewer.pagesCount) { - return false; - } - this.pdfViewer.currentPageNumber = page + 1; + } + if (Math.abs(newScale - oldScale) < 1e-15) { return true; + } + return false; + } + function isPortraitOrientation(size) { + return size.width <= size.height; + } + function PDFViewer(options) { + this.container = options.container; + this.viewer = options.viewer || options.container.firstElementChild; + this.eventBus = options.eventBus || (0, _dom_events.getGlobalEventBus)(); + this.linkService = options.linkService || new _pdf_link_service.SimpleLinkService(); + this.downloadManager = options.downloadManager || null; + this.removePageBorders = options.removePageBorders || false; + this.enhanceTextSelection = options.enhanceTextSelection || false; + this.renderInteractiveForms = options.renderInteractiveForms || false; + this.enablePrintAutoRotate = options.enablePrintAutoRotate || false; + this.renderer = options.renderer || _ui_utils.RendererType.CANVAS; + this.defaultRenderingQueue = !options.renderingQueue; + if (this.defaultRenderingQueue) { + this.renderingQueue = new _pdf_rendering_queue.PDFRenderingQueue(); + this.renderingQueue.setViewer(this); + } else { + this.renderingQueue = options.renderingQueue; + } + this.scroll = (0, _ui_utils.watchScroll)(this.container, this._scrollUpdate.bind(this)); + this.presentationModeState = PresentationModeState.UNKNOWN; + this._resetView(); + if (this.removePageBorders) { + this.viewer.classList.add('removePageBorders'); + } + } + PDFViewer.prototype = { + get pagesCount() { + return this._pages.length; }, - _notifyStateChange: function PDFPresentationMode_notifyStateChange() { - this.eventBus.dispatch('presentationmodechanged', { - source: this, - active: this.active, - switchInProgress: !!this.switchInProgress - }); - }, - _setSwitchInProgress: function PDFPresentationMode_setSwitchInProgress() { - if (this.switchInProgress) { - clearTimeout(this.switchInProgress); - } - this.switchInProgress = setTimeout(function switchInProgressTimeout() { - this._removeFullscreenChangeListeners(); - delete this.switchInProgress; - this._notifyStateChange(); - }.bind(this), DELAY_BEFORE_RESETTING_SWITCH_IN_PROGRESS); - }, - _resetSwitchInProgress: function PDFPresentationMode_resetSwitchInProgress() { - if (this.switchInProgress) { - clearTimeout(this.switchInProgress); - delete this.switchInProgress; - } - }, - _enter: function PDFPresentationMode_enter() { - this.active = true; - this._resetSwitchInProgress(); - this._notifyStateChange(); - this.container.classList.add(ACTIVE_SELECTOR); - setTimeout(function enterPresentationModeTimeout() { - this.pdfViewer.currentPageNumber = this.args.page; - this.pdfViewer.currentScaleValue = 'page-fit'; - }.bind(this), 0); - this._addWindowListeners(); - this._showControls(); - this.contextMenuOpen = false; - this.container.setAttribute('contextmenu', 'viewerContextMenu'); - window.getSelection().removeAllRanges(); - }, - _exit: function PDFPresentationMode_exit() { - var page = this.pdfViewer.currentPageNumber; - this.container.classList.remove(ACTIVE_SELECTOR); - setTimeout(function exitPresentationModeTimeout() { - this.active = false; - this._removeFullscreenChangeListeners(); - this._notifyStateChange(); - this.pdfViewer.currentScaleValue = this.args.previousScale; - this.pdfViewer.currentPageNumber = page; - this.args = null; - }.bind(this), 0); - this._removeWindowListeners(); - this._hideControls(); - this._resetMouseScrollState(); - this.container.removeAttribute('contextmenu'); - this.contextMenuOpen = false; + getPageView: function getPageView(index) { + return this._pages[index]; }, - _mouseDown: function PDFPresentationMode_mouseDown(evt) { - if (this.contextMenuOpen) { - this.contextMenuOpen = false; - evt.preventDefault(); - return; - } - if (evt.button === 0) { - var isInternalLink = evt.target.href && evt.target.classList.contains('internalLink'); - if (!isInternalLink) { - evt.preventDefault(); - this.pdfViewer.currentPageNumber += evt.shiftKey ? -1 : 1; - } - } + get pageViewsReady() { + return this._pageViewsReady; }, - _contextMenu: function PDFPresentationMode_contextMenu() { - this.contextMenuOpen = true; + get currentPageNumber() { + return this._currentPageNumber; }, - _showControls: function PDFPresentationMode_showControls() { - if (this.controlsTimeout) { - clearTimeout(this.controlsTimeout); - } else { - this.container.classList.add(CONTROLS_SELECTOR); + set currentPageNumber(val) { + if ((val | 0) !== val) { + throw new Error('Invalid page number.'); } - this.controlsTimeout = setTimeout(function showControlsTimeout() { - this.container.classList.remove(CONTROLS_SELECTOR); - delete this.controlsTimeout; - }.bind(this), DELAY_BEFORE_HIDING_CONTROLS); - }, - _hideControls: function PDFPresentationMode_hideControls() { - if (!this.controlsTimeout) { + if (!this.pdfDocument) { + this._currentPageNumber = val; return; } - clearTimeout(this.controlsTimeout); - this.container.classList.remove(CONTROLS_SELECTOR); - delete this.controlsTimeout; - }, - _resetMouseScrollState: function PDFPresentationMode_resetMouseScrollState() { - this.mouseScrollTimeStamp = 0; - this.mouseScrollDelta = 0; + this._setCurrentPageNumber(val, true); }, - _touchSwipe: function PDFPresentationMode_touchSwipe(evt) { - if (!this.active) { + _setCurrentPageNumber: function PDFViewer_setCurrentPageNumber(val, resetCurrentPageView) { + if (this._currentPageNumber === val) { + if (resetCurrentPageView) { + this._resetCurrentPageView(); + } return; } - var SWIPE_MIN_DISTANCE_THRESHOLD = 50; - var SWIPE_ANGLE_THRESHOLD = Math.PI / 6; - if (evt.touches.length > 1) { - this.touchSwipeState = null; + if (!(0 < val && val <= this.pagesCount)) { + console.error('PDFViewer_setCurrentPageNumber: "' + val + '" is out of bounds.'); return; } - switch (evt.type) { - case 'touchstart': - this.touchSwipeState = { - startX: evt.touches[0].pageX, - startY: evt.touches[0].pageY, - endX: evt.touches[0].pageX, - endY: evt.touches[0].pageY - }; - break; - case 'touchmove': - if (this.touchSwipeState === null) { - return; - } - this.touchSwipeState.endX = evt.touches[0].pageX; - this.touchSwipeState.endY = evt.touches[0].pageY; - evt.preventDefault(); - break; - case 'touchend': - if (this.touchSwipeState === null) { - return; - } - var delta = 0; - var dx = this.touchSwipeState.endX - this.touchSwipeState.startX; - var dy = this.touchSwipeState.endY - this.touchSwipeState.startY; - var absAngle = Math.abs(Math.atan2(dy, dx)); - if (Math.abs(dx) > SWIPE_MIN_DISTANCE_THRESHOLD && (absAngle <= SWIPE_ANGLE_THRESHOLD || absAngle >= Math.PI - SWIPE_ANGLE_THRESHOLD)) { - delta = dx; - } else if (Math.abs(dy) > SWIPE_MIN_DISTANCE_THRESHOLD && Math.abs(absAngle - Math.PI / 2) <= SWIPE_ANGLE_THRESHOLD) { - delta = dy; - } - if (delta > 0) { - this._goToPreviousPage(); - } else if (delta < 0) { - this._goToNextPage(); - } - break; - } - }, - _addWindowListeners: function PDFPresentationMode_addWindowListeners() { - this.showControlsBind = this._showControls.bind(this); - this.mouseDownBind = this._mouseDown.bind(this); - this.mouseWheelBind = this._mouseWheel.bind(this); - this.resetMouseScrollStateBind = this._resetMouseScrollState.bind(this); - this.contextMenuBind = this._contextMenu.bind(this); - this.touchSwipeBind = this._touchSwipe.bind(this); - window.addEventListener('mousemove', this.showControlsBind); - window.addEventListener('mousedown', this.mouseDownBind); - window.addEventListener('wheel', this.mouseWheelBind); - window.addEventListener('keydown', this.resetMouseScrollStateBind); - window.addEventListener('contextmenu', this.contextMenuBind); - window.addEventListener('touchstart', this.touchSwipeBind); - window.addEventListener('touchmove', this.touchSwipeBind); - window.addEventListener('touchend', this.touchSwipeBind); - }, - _removeWindowListeners: function PDFPresentationMode_removeWindowListeners() { - window.removeEventListener('mousemove', this.showControlsBind); - window.removeEventListener('mousedown', this.mouseDownBind); - window.removeEventListener('wheel', this.mouseWheelBind); - window.removeEventListener('keydown', this.resetMouseScrollStateBind); - window.removeEventListener('contextmenu', this.contextMenuBind); - window.removeEventListener('touchstart', this.touchSwipeBind); - window.removeEventListener('touchmove', this.touchSwipeBind); - window.removeEventListener('touchend', this.touchSwipeBind); - delete this.showControlsBind; - delete this.mouseDownBind; - delete this.mouseWheelBind; - delete this.resetMouseScrollStateBind; - delete this.contextMenuBind; - delete this.touchSwipeBind; - }, - _fullscreenChange: function PDFPresentationMode_fullscreenChange() { - if (this.isFullscreen) { - this._enter(); - } else { - this._exit(); - } - }, - _addFullscreenChangeListeners: function PDFPresentationMode_addFullscreenChangeListeners() { - this.fullscreenChangeBind = this._fullscreenChange.bind(this); - window.addEventListener('fullscreenchange', this.fullscreenChangeBind); - window.addEventListener('mozfullscreenchange', this.fullscreenChangeBind); - window.addEventListener('webkitfullscreenchange', this.fullscreenChangeBind); - window.addEventListener('MSFullscreenChange', this.fullscreenChangeBind); - }, - _removeFullscreenChangeListeners: function PDFPresentationMode_removeFullscreenChangeListeners() { - window.removeEventListener('fullscreenchange', this.fullscreenChangeBind); - window.removeEventListener('mozfullscreenchange', this.fullscreenChangeBind); - window.removeEventListener('webkitfullscreenchange', this.fullscreenChangeBind); - window.removeEventListener('MSFullscreenChange', this.fullscreenChangeBind); - delete this.fullscreenChangeBind; - } - }; - return PDFPresentationMode; -}(); -exports.PDFPresentationMode = PDFPresentationMode; - -/***/ }), -/* 23 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.PDFSidebar = exports.SidebarView = undefined; - -var _ui_utils = __w_pdfjs_require__(0); - -var _pdf_rendering_queue = __w_pdfjs_require__(3); - -var UI_NOTIFICATION_CLASS = 'pdfSidebarNotification'; -var SidebarView = { - NONE: 0, - THUMBS: 1, - OUTLINE: 2, - ATTACHMENTS: 3 -}; -var PDFSidebar = function PDFSidebarClosure() { - function PDFSidebar(options) { - this.isOpen = false; - this.active = SidebarView.THUMBS; - this.isInitialViewSet = false; - this.onToggled = null; - this.pdfViewer = options.pdfViewer; - this.pdfThumbnailViewer = options.pdfThumbnailViewer; - this.pdfOutlineViewer = options.pdfOutlineViewer; - this.mainContainer = options.mainContainer; - this.outerContainer = options.outerContainer; - this.eventBus = options.eventBus; - this.toggleButton = options.toggleButton; - this.thumbnailButton = options.thumbnailButton; - this.outlineButton = options.outlineButton; - this.attachmentsButton = options.attachmentsButton; - this.thumbnailView = options.thumbnailView; - this.outlineView = options.outlineView; - this.attachmentsView = options.attachmentsView; - this.disableNotification = options.disableNotification || false; - this._addEventListeners(); - } - PDFSidebar.prototype = { - reset: function PDFSidebar_reset() { - this.isInitialViewSet = false; - this._hideUINotification(null); - this.switchView(SidebarView.THUMBS); - this.outlineButton.disabled = false; - this.attachmentsButton.disabled = false; - }, - get visibleView() { - return this.isOpen ? this.active : SidebarView.NONE; + var arg = { + source: this, + pageNumber: val, + pageLabel: this._pageLabels && this._pageLabels[val - 1] + }; + this._currentPageNumber = val; + this.eventBus.dispatch('pagechanging', arg); + this.eventBus.dispatch('pagechange', arg); + if (resetCurrentPageView) { + this._resetCurrentPageView(); + } }, - get isThumbnailViewVisible() { - return this.isOpen && this.active === SidebarView.THUMBS; + get currentPageLabel() { + return this._pageLabels && this._pageLabels[this._currentPageNumber - 1]; }, - get isOutlineViewVisible() { - return this.isOpen && this.active === SidebarView.OUTLINE; + set currentPageLabel(val) { + var pageNumber = val | 0; + if (this._pageLabels) { + var i = this._pageLabels.indexOf(val); + if (i >= 0) { + pageNumber = i + 1; + } + } + this.currentPageNumber = pageNumber; }, - get isAttachmentsViewVisible() { - return this.isOpen && this.active === SidebarView.ATTACHMENTS; + get currentScale() { + return this._currentScale !== _ui_utils.UNKNOWN_SCALE ? this._currentScale : _ui_utils.DEFAULT_SCALE; }, - setInitialView: function PDFSidebar_setInitialView(view) { - if (this.isInitialViewSet) { - return; + set currentScale(val) { + if (isNaN(val)) { + throw new Error('Invalid numeric scale'); } - this.isInitialViewSet = true; - if (this.isOpen && view === SidebarView.NONE) { - this._dispatchEvent(); + if (!this.pdfDocument) { + this._currentScale = val; + this._currentScaleValue = val !== _ui_utils.UNKNOWN_SCALE ? val.toString() : null; return; } - var isViewPreserved = view === this.visibleView; - this.switchView(view, true); - if (isViewPreserved) { - this._dispatchEvent(); - } + this._setScale(val, false); + }, + get currentScaleValue() { + return this._currentScaleValue; }, - switchView: function PDFSidebar_switchView(view, forceOpen) { - if (view === SidebarView.NONE) { - this.close(); + set currentScaleValue(val) { + if (!this.pdfDocument) { + this._currentScale = isNaN(val) ? _ui_utils.UNKNOWN_SCALE : val; + this._currentScaleValue = val.toString(); return; } - var isViewChanged = view !== this.active; - var shouldForceRendering = false; - switch (view) { - case SidebarView.THUMBS: - this.thumbnailButton.classList.add('toggled'); - this.outlineButton.classList.remove('toggled'); - this.attachmentsButton.classList.remove('toggled'); - this.thumbnailView.classList.remove('hidden'); - this.outlineView.classList.add('hidden'); - this.attachmentsView.classList.add('hidden'); - if (this.isOpen && isViewChanged) { - this._updateThumbnailViewer(); - shouldForceRendering = true; - } - break; - case SidebarView.OUTLINE: - if (this.outlineButton.disabled) { - return; - } - this.thumbnailButton.classList.remove('toggled'); - this.outlineButton.classList.add('toggled'); - this.attachmentsButton.classList.remove('toggled'); - this.thumbnailView.classList.add('hidden'); - this.outlineView.classList.remove('hidden'); - this.attachmentsView.classList.add('hidden'); - break; - case SidebarView.ATTACHMENTS: - if (this.attachmentsButton.disabled) { - return; - } - this.thumbnailButton.classList.remove('toggled'); - this.outlineButton.classList.remove('toggled'); - this.attachmentsButton.classList.add('toggled'); - this.thumbnailView.classList.add('hidden'); - this.outlineView.classList.add('hidden'); - this.attachmentsView.classList.remove('hidden'); - break; - default: - console.error('PDFSidebar_switchView: "' + view + '" is an unsupported value.'); - return; + this._setScale(val, false); + }, + get pagesRotation() { + return this._pagesRotation; + }, + set pagesRotation(rotation) { + if (!(typeof rotation === 'number' && rotation % 90 === 0)) { + throw new Error('Invalid pages rotation angle.'); } - this.active = view | 0; - if (forceOpen && !this.isOpen) { - this.open(); + this._pagesRotation = rotation; + if (!this.pdfDocument) { return; } - if (shouldForceRendering) { - this._forceRendering(); + for (var i = 0, l = this._pages.length; i < l; i++) { + var pageView = this._pages[i]; + pageView.update(pageView.scale, rotation); } - if (isViewChanged) { - this._dispatchEvent(); + this._setScale(this._currentScaleValue, true); + if (this.defaultRenderingQueue) { + this.update(); } - this._hideUINotification(this.active); }, - open: function PDFSidebar_open() { - if (this.isOpen) { - return; + setDocument: function setDocument(pdfDocument) { + var _this = this; + + if (this.pdfDocument) { + this._cancelRendering(); + this._resetView(); } - this.isOpen = true; - this.toggleButton.classList.add('toggled'); - this.outerContainer.classList.add('sidebarMoving'); - this.outerContainer.classList.add('sidebarOpen'); - if (this.active === SidebarView.THUMBS) { - this._updateThumbnailViewer(); + this.pdfDocument = pdfDocument; + if (!pdfDocument) { + return; } - this._forceRendering(); - this._dispatchEvent(); - this._hideUINotification(this.active); + var pagesCount = pdfDocument.numPages; + var pagesCapability = (0, _pdfjs.createPromiseCapability)(); + this.pagesPromise = pagesCapability.promise; + pagesCapability.promise.then(function () { + _this._pageViewsReady = true; + _this.eventBus.dispatch('pagesloaded', { + source: _this, + pagesCount: pagesCount + }); + }); + var isOnePageRenderedResolved = false; + var onePageRenderedCapability = (0, _pdfjs.createPromiseCapability)(); + this.onePageRendered = onePageRenderedCapability.promise; + var bindOnAfterAndBeforeDraw = function bindOnAfterAndBeforeDraw(pageView) { + pageView.onBeforeDraw = function () { + _this._buffer.push(pageView); + }; + pageView.onAfterDraw = function () { + if (!isOnePageRenderedResolved) { + isOnePageRenderedResolved = true; + onePageRenderedCapability.resolve(); + } + }; + }; + var firstPagePromise = pdfDocument.getPage(1); + this.firstPagePromise = firstPagePromise; + return firstPagePromise.then(function (pdfPage) { + var scale = _this.currentScale; + var viewport = pdfPage.getViewport(scale * _ui_utils.CSS_UNITS); + for (var pageNum = 1; pageNum <= pagesCount; ++pageNum) { + var textLayerFactory = null; + if (!_pdfjs.PDFJS.disableTextLayer) { + textLayerFactory = _this; + } + var pageView = new _pdf_page_view.PDFPageView({ + container: _this.viewer, + eventBus: _this.eventBus, + id: pageNum, + scale: scale, + defaultViewport: viewport.clone(), + renderingQueue: _this.renderingQueue, + textLayerFactory: textLayerFactory, + annotationLayerFactory: _this, + enhanceTextSelection: _this.enhanceTextSelection, + renderInteractiveForms: _this.renderInteractiveForms, + renderer: _this.renderer + }); + bindOnAfterAndBeforeDraw(pageView); + _this._pages.push(pageView); + } + onePageRenderedCapability.promise.then(function () { + if (_pdfjs.PDFJS.disableAutoFetch) { + pagesCapability.resolve(); + return; + } + var getPagesLeft = pagesCount; + for (var pageNum = 1; pageNum <= pagesCount; ++pageNum) { + pdfDocument.getPage(pageNum).then(function (pageNum, pdfPage) { + var pageView = this._pages[pageNum - 1]; + if (!pageView.pdfPage) { + pageView.setPdfPage(pdfPage); + } + this.linkService.cachePageRef(pageNum, pdfPage.ref); + if (--getPagesLeft === 0) { + pagesCapability.resolve(); + } + }.bind(_this, pageNum)); + } + }); + _this.eventBus.dispatch('pagesinit', { source: _this }); + if (_this.defaultRenderingQueue) { + _this.update(); + } + if (_this.findController) { + _this.findController.resolveFirstPage(); + } + }); }, - close: function PDFSidebar_close() { - if (!this.isOpen) { + setPageLabels: function PDFViewer_setPageLabels(labels) { + if (!this.pdfDocument) { return; } - this.isOpen = false; - this.toggleButton.classList.remove('toggled'); - this.outerContainer.classList.add('sidebarMoving'); - this.outerContainer.classList.remove('sidebarOpen'); - this._forceRendering(); - this._dispatchEvent(); - }, - toggle: function PDFSidebar_toggle() { - if (this.isOpen) { - this.close(); + if (!labels) { + this._pageLabels = null; + } else if (!(labels instanceof Array && this.pdfDocument.numPages === labels.length)) { + this._pageLabels = null; + console.error('PDFViewer_setPageLabels: Invalid page labels.'); } else { - this.open(); + this._pageLabels = labels; } - }, - _dispatchEvent: function PDFSidebar_dispatchEvent() { - this.eventBus.dispatch('sidebarviewchanged', { - source: this, - view: this.visibleView - }); - }, - _forceRendering: function PDFSidebar_forceRendering() { - if (this.onToggled) { - this.onToggled(); - } else { - this.pdfViewer.forceRendering(); - this.pdfThumbnailViewer.forceRendering(); + for (var i = 0, ii = this._pages.length; i < ii; i++) { + var pageView = this._pages[i]; + var label = this._pageLabels && this._pageLabels[i]; + pageView.setPageLabel(label); } }, - _updateThumbnailViewer: function PDFSidebar_updateThumbnailViewer() { - var pdfViewer = this.pdfViewer; - var thumbnailViewer = this.pdfThumbnailViewer; - var pagesCount = pdfViewer.pagesCount; - for (var pageIndex = 0; pageIndex < pagesCount; pageIndex++) { - var pageView = pdfViewer.getPageView(pageIndex); - if (pageView && pageView.renderingState === _pdf_rendering_queue.RenderingStates.FINISHED) { - var thumbnailView = thumbnailViewer.getThumbnail(pageIndex); - thumbnailView.setImage(pageView); - } - } - thumbnailViewer.scrollThumbnailIntoView(pdfViewer.currentPageNumber); + _resetView: function _resetView() { + this._pages = []; + this._currentPageNumber = 1; + this._currentScale = _ui_utils.UNKNOWN_SCALE; + this._currentScaleValue = null; + this._pageLabels = null; + this._buffer = new PDFPageViewBuffer(DEFAULT_CACHE_SIZE); + this._location = null; + this._pagesRotation = 0; + this._pagesRequests = []; + this._pageViewsReady = false; + this.viewer.textContent = ''; }, - _showUINotification: function _showUINotification(view) { - if (this.disableNotification) { - return; - } - this.toggleButton.title = _ui_utils.mozL10n.get('toggle_sidebar_notification.title', null, 'Toggle Sidebar (document contains outline/attachments)'); - if (!this.isOpen) { - this.toggleButton.classList.add(UI_NOTIFICATION_CLASS); - } else if (view === this.active) { + _scrollUpdate: function PDFViewer_scrollUpdate() { + if (this.pagesCount === 0) { return; } - switch (view) { - case SidebarView.OUTLINE: - this.outlineButton.classList.add(UI_NOTIFICATION_CLASS); - break; - case SidebarView.ATTACHMENTS: - this.attachmentsButton.classList.add(UI_NOTIFICATION_CLASS); - break; + this.update(); + for (var i = 0, ii = this._pages.length; i < ii; i++) { + this._pages[i].updatePosition(); } }, - _hideUINotification: function _hideUINotification(view) { - if (this.disableNotification) { - return; - } - var removeNotification = function (view) { - switch (view) { - case SidebarView.OUTLINE: - this.outlineButton.classList.remove(UI_NOTIFICATION_CLASS); - break; - case SidebarView.ATTACHMENTS: - this.attachmentsButton.classList.remove(UI_NOTIFICATION_CLASS); - break; + _setScaleDispatchEvent: function pdfViewer_setScaleDispatchEvent(newScale, newValue, preset) { + var arg = { + source: this, + scale: newScale, + presetValue: preset ? newValue : undefined + }; + this.eventBus.dispatch('scalechanging', arg); + this.eventBus.dispatch('scalechange', arg); + }, + _setScaleUpdatePages: function pdfViewer_setScaleUpdatePages(newScale, newValue, noScroll, preset) { + this._currentScaleValue = newValue.toString(); + if (isSameScale(this._currentScale, newScale)) { + if (preset) { + this._setScaleDispatchEvent(newScale, newValue, true); } - }.bind(this); - if (!this.isOpen && view !== null) { return; } - this.toggleButton.classList.remove(UI_NOTIFICATION_CLASS); - if (view !== null) { - removeNotification(view); - return; - } - for (view in SidebarView) { - removeNotification(SidebarView[view]); + for (var i = 0, ii = this._pages.length; i < ii; i++) { + this._pages[i].update(newScale); } - this.toggleButton.title = _ui_utils.mozL10n.get('toggle_sidebar.title', null, 'Toggle Sidebar'); - }, - _addEventListeners: function PDFSidebar_addEventListeners() { - var self = this; - self.mainContainer.addEventListener('transitionend', function (evt) { - if (evt.target === this) { - self.outerContainer.classList.remove('sidebarMoving'); - } - }); - self.thumbnailButton.addEventListener('click', function () { - self.switchView(SidebarView.THUMBS); - }); - self.outlineButton.addEventListener('click', function () { - self.switchView(SidebarView.OUTLINE); - }); - self.outlineButton.addEventListener('dblclick', function () { - self.pdfOutlineViewer.toggleOutlineTree(); - }); - self.attachmentsButton.addEventListener('click', function () { - self.switchView(SidebarView.ATTACHMENTS); - }); - self.eventBus.on('outlineloaded', function (e) { - var outlineCount = e.outlineCount; - self.outlineButton.disabled = !outlineCount; - if (outlineCount) { - self._showUINotification(SidebarView.OUTLINE); - } else if (self.active === SidebarView.OUTLINE) { - self.switchView(SidebarView.THUMBS); - } - }); - self.eventBus.on('attachmentsloaded', function (e) { - var attachmentsCount = e.attachmentsCount; - self.attachmentsButton.disabled = !attachmentsCount; - if (attachmentsCount) { - self._showUINotification(SidebarView.ATTACHMENTS); - } else if (self.active === SidebarView.ATTACHMENTS) { - self.switchView(SidebarView.THUMBS); - } - }); - self.eventBus.on('presentationmodechanged', function (e) { - if (!e.active && !e.switchInProgress && self.isThumbnailViewVisible) { - self._updateThumbnailViewer(); + this._currentScale = newScale; + if (!noScroll) { + var page = this._currentPageNumber, + dest; + if (this._location && !_pdfjs.PDFJS.ignoreCurrentPositionOnZoom && !(this.isInPresentationMode || this.isChangingPresentationMode)) { + page = this._location.pageNumber; + dest = [null, { name: 'XYZ' }, this._location.left, this._location.top, null]; } - }); - } - }; - return PDFSidebar; -}(); -exports.SidebarView = SidebarView; -exports.PDFSidebar = PDFSidebar; - -/***/ }), -/* 24 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.PDFThumbnailView = undefined; - -var _ui_utils = __w_pdfjs_require__(0); - -var _pdfjs = __w_pdfjs_require__(1); - -var _pdf_rendering_queue = __w_pdfjs_require__(3); - -var THUMBNAIL_WIDTH = 98; -var THUMBNAIL_CANVAS_BORDER_WIDTH = 1; -var PDFThumbnailView = function PDFThumbnailViewClosure() { - function getTempCanvas(width, height) { - var tempCanvas = PDFThumbnailView.tempImageCache; - if (!tempCanvas) { - tempCanvas = document.createElement('canvas'); - PDFThumbnailView.tempImageCache = tempCanvas; - } - tempCanvas.width = width; - tempCanvas.height = height; - tempCanvas.mozOpaque = true; - var ctx = tempCanvas.getContext('2d', { alpha: false }); - ctx.save(); - ctx.fillStyle = 'rgb(255, 255, 255)'; - ctx.fillRect(0, 0, width, height); - ctx.restore(); - return tempCanvas; - } - function PDFThumbnailView(options) { - var container = options.container; - var id = options.id; - var defaultViewport = options.defaultViewport; - var linkService = options.linkService; - var renderingQueue = options.renderingQueue; - var disableCanvasToImageConversion = options.disableCanvasToImageConversion || false; - this.id = id; - this.renderingId = 'thumbnail' + id; - this.pageLabel = null; - this.pdfPage = null; - this.rotation = 0; - this.viewport = defaultViewport; - this.pdfPageRotate = defaultViewport.rotation; - this.linkService = linkService; - this.renderingQueue = renderingQueue; - this.renderTask = null; - this.renderingState = _pdf_rendering_queue.RenderingStates.INITIAL; - this.resume = null; - this.disableCanvasToImageConversion = disableCanvasToImageConversion; - this.pageWidth = this.viewport.width; - this.pageHeight = this.viewport.height; - this.pageRatio = this.pageWidth / this.pageHeight; - this.canvasWidth = THUMBNAIL_WIDTH; - this.canvasHeight = this.canvasWidth / this.pageRatio | 0; - this.scale = this.canvasWidth / this.pageWidth; - var anchor = document.createElement('a'); - anchor.href = linkService.getAnchorUrl('#page=' + id); - anchor.title = _ui_utils.mozL10n.get('thumb_page_title', { page: id }, 'Page {{page}}'); - anchor.onclick = function stopNavigation() { - linkService.page = id; - return false; - }; - this.anchor = anchor; - var div = document.createElement('div'); - div.className = 'thumbnail'; - div.setAttribute('data-page-number', this.id); - this.div = div; - if (id === 1) { - div.classList.add('selected'); - } - var ring = document.createElement('div'); - ring.className = 'thumbnailSelectionRing'; - var borderAdjustment = 2 * THUMBNAIL_CANVAS_BORDER_WIDTH; - ring.style.width = this.canvasWidth + borderAdjustment + 'px'; - ring.style.height = this.canvasHeight + borderAdjustment + 'px'; - this.ring = ring; - div.appendChild(ring); - anchor.appendChild(div); - container.appendChild(anchor); - } - PDFThumbnailView.prototype = { - setPdfPage: function PDFThumbnailView_setPdfPage(pdfPage) { - this.pdfPage = pdfPage; - this.pdfPageRotate = pdfPage.rotate; - var totalRotation = (this.rotation + this.pdfPageRotate) % 360; - this.viewport = pdfPage.getViewport(1, totalRotation); - this.reset(); - }, - reset: function PDFThumbnailView_reset() { - this.cancelRendering(); - this.pageWidth = this.viewport.width; - this.pageHeight = this.viewport.height; - this.pageRatio = this.pageWidth / this.pageHeight; - this.canvasHeight = this.canvasWidth / this.pageRatio | 0; - this.scale = this.canvasWidth / this.pageWidth; - this.div.removeAttribute('data-loaded'); - var ring = this.ring; - var childNodes = ring.childNodes; - for (var i = childNodes.length - 1; i >= 0; i--) { - ring.removeChild(childNodes[i]); - } - var borderAdjustment = 2 * THUMBNAIL_CANVAS_BORDER_WIDTH; - ring.style.width = this.canvasWidth + borderAdjustment + 'px'; - ring.style.height = this.canvasHeight + borderAdjustment + 'px'; - if (this.canvas) { - this.canvas.width = 0; - this.canvas.height = 0; - delete this.canvas; + this.scrollPageIntoView({ + pageNumber: page, + destArray: dest, + allowNegativeOffset: true + }); } - if (this.image) { - this.image.removeAttribute('src'); - delete this.image; + this._setScaleDispatchEvent(newScale, newValue, preset); + if (this.defaultRenderingQueue) { + this.update(); } }, - update: function PDFThumbnailView_update(rotation) { - if (typeof rotation !== 'undefined') { - this.rotation = rotation; + _setScale: function PDFViewer_setScale(value, noScroll) { + var scale = parseFloat(value); + if (scale > 0) { + this._setScaleUpdatePages(scale, value, noScroll, false); + } else { + var currentPage = this._pages[this._currentPageNumber - 1]; + if (!currentPage) { + return; + } + var hPadding = this.isInPresentationMode || this.removePageBorders ? 0 : _ui_utils.SCROLLBAR_PADDING; + var vPadding = this.isInPresentationMode || this.removePageBorders ? 0 : _ui_utils.VERTICAL_PADDING; + var pageWidthScale = (this.container.clientWidth - hPadding) / currentPage.width * currentPage.scale; + var pageHeightScale = (this.container.clientHeight - vPadding) / currentPage.height * currentPage.scale; + switch (value) { + case 'page-actual': + scale = 1; + break; + case 'page-width': + scale = pageWidthScale; + break; + case 'page-height': + scale = pageHeightScale; + break; + case 'page-fit': + scale = Math.min(pageWidthScale, pageHeightScale); + break; + case 'auto': + var isLandscape = currentPage.width > currentPage.height; + var horizontalScale = isLandscape ? Math.min(pageHeightScale, pageWidthScale) : pageWidthScale; + scale = Math.min(_ui_utils.MAX_AUTO_SCALE, horizontalScale); + break; + default: + console.error('PDFViewer_setScale: "' + value + '" is an unknown zoom value.'); + return; + } + this._setScaleUpdatePages(scale, value, noScroll, true); } - var totalRotation = (this.rotation + this.pdfPageRotate) % 360; - this.viewport = this.viewport.clone({ - scale: 1, - rotation: totalRotation - }); - this.reset(); }, - cancelRendering: function PDFThumbnailView_cancelRendering() { - if (this.renderTask) { - this.renderTask.cancel(); - this.renderTask = null; + _resetCurrentPageView: function _resetCurrentPageView() { + if (this.isInPresentationMode) { + this._setScale(this._currentScaleValue, true); } - this.renderingState = _pdf_rendering_queue.RenderingStates.INITIAL; - this.resume = null; - }, - _getPageDrawContext: function PDFThumbnailView_getPageDrawContext(noCtxScale) { - var canvas = document.createElement('canvas'); - this.canvas = canvas; - canvas.mozOpaque = true; - var ctx = canvas.getContext('2d', { alpha: false }); - var outputScale = (0, _ui_utils.getOutputScale)(ctx); - canvas.width = this.canvasWidth * outputScale.sx | 0; - canvas.height = this.canvasHeight * outputScale.sy | 0; - canvas.style.width = this.canvasWidth + 'px'; - canvas.style.height = this.canvasHeight + 'px'; - if (!noCtxScale && outputScale.scaled) { - ctx.scale(outputScale.sx, outputScale.sy); - } - return ctx; + var pageView = this._pages[this._currentPageNumber - 1]; + (0, _ui_utils.scrollIntoView)(pageView.div); }, - _convertCanvasToImage: function PDFThumbnailView_convertCanvasToImage() { - if (!this.canvas) { - return; - } - if (this.renderingState !== _pdf_rendering_queue.RenderingStates.FINISHED) { - return; - } - var id = this.renderingId; - var className = 'thumbnailImage'; - var ariaLabel = _ui_utils.mozL10n.get('thumb_page_canvas', { page: this.pageId }, 'Thumbnail of Page {{page}}'); - if (this.disableCanvasToImageConversion) { - this.canvas.id = id; - this.canvas.className = className; - this.canvas.setAttribute('aria-label', ariaLabel); - this.div.setAttribute('data-loaded', true); - this.ring.appendChild(this.canvas); + scrollPageIntoView: function PDFViewer_scrollPageIntoView(params) { + if (!this.pdfDocument) { return; } - var image = document.createElement('img'); - image.id = id; - image.className = className; - image.setAttribute('aria-label', ariaLabel); - image.style.width = this.canvasWidth + 'px'; - image.style.height = this.canvasHeight + 'px'; - image.src = this.canvas.toDataURL(); - this.image = image; - this.div.setAttribute('data-loaded', true); - this.ring.appendChild(image); - this.canvas.width = 0; - this.canvas.height = 0; - delete this.canvas; - }, - draw: function PDFThumbnailView_draw() { - if (this.renderingState !== _pdf_rendering_queue.RenderingStates.INITIAL) { - console.error('Must be in new state before drawing'); - return Promise.resolve(undefined); - } - this.renderingState = _pdf_rendering_queue.RenderingStates.RUNNING; - var resolveRenderPromise, rejectRenderPromise; - var promise = new Promise(function (resolve, reject) { - resolveRenderPromise = resolve; - rejectRenderPromise = reject; - }); - var self = this; - function thumbnailDrawCallback(error) { - if (renderTask === self.renderTask) { - self.renderTask = null; - } - if (error === 'cancelled' || error instanceof _pdfjs.RenderingCancelledException) { - resolveRenderPromise(undefined); - return; + if (arguments.length > 1 || typeof params === 'number') { + console.warn('Call of scrollPageIntoView() with obsolete signature.'); + var paramObj = {}; + if (typeof params === 'number') { + paramObj.pageNumber = params; } - self.renderingState = _pdf_rendering_queue.RenderingStates.FINISHED; - self._convertCanvasToImage(); - if (!error) { - resolveRenderPromise(undefined); - } else { - rejectRenderPromise(error); + if (arguments[1] instanceof Array) { + paramObj.destArray = arguments[1]; } + params = paramObj; } - var ctx = this._getPageDrawContext(); - var drawViewport = this.viewport.clone({ scale: this.scale }); - var renderContinueCallback = function renderContinueCallback(cont) { - if (!self.renderingQueue.isHighestPriority(self)) { - self.renderingState = _pdf_rendering_queue.RenderingStates.PAUSED; - self.resume = function resumeCallback() { - self.renderingState = _pdf_rendering_queue.RenderingStates.RUNNING; - cont(); - }; - return; - } - cont(); - }; - var renderContext = { - canvasContext: ctx, - viewport: drawViewport - }; - var renderTask = this.renderTask = this.pdfPage.render(renderContext); - renderTask.onContinue = renderContinueCallback; - renderTask.promise.then(function pdfPageRenderCallback() { - thumbnailDrawCallback(null); - }, function pdfPageRenderError(error) { - thumbnailDrawCallback(error); - }); - return promise; - }, - setImage: function PDFThumbnailView_setImage(pageView) { - if (this.renderingState !== _pdf_rendering_queue.RenderingStates.INITIAL) { + var pageNumber = params.pageNumber || 0; + var dest = params.destArray || null; + var allowNegativeOffset = params.allowNegativeOffset || false; + if (this.isInPresentationMode || !dest) { + this._setCurrentPageNumber(pageNumber, true); return; } - var img = pageView.canvas; - if (!img) { + var pageView = this._pages[pageNumber - 1]; + if (!pageView) { + console.error('PDFViewer_scrollPageIntoView: ' + 'Invalid "pageNumber" parameter.'); return; } - if (!this.pdfPage) { - this.setPdfPage(pageView.pdfPage); + var x = 0, + y = 0; + var width = 0, + height = 0, + widthScale, + heightScale; + var changeOrientation = pageView.rotation % 180 === 0 ? false : true; + var pageWidth = (changeOrientation ? pageView.height : pageView.width) / pageView.scale / _ui_utils.CSS_UNITS; + var pageHeight = (changeOrientation ? pageView.width : pageView.height) / pageView.scale / _ui_utils.CSS_UNITS; + var scale = 0; + switch (dest[1].name) { + case 'XYZ': + x = dest[2]; + y = dest[3]; + scale = dest[4]; + x = x !== null ? x : 0; + y = y !== null ? y : pageHeight; + break; + case 'Fit': + case 'FitB': + scale = 'page-fit'; + break; + case 'FitH': + case 'FitBH': + y = dest[2]; + scale = 'page-width'; + if (y === null && this._location) { + x = this._location.left; + y = this._location.top; + } + break; + case 'FitV': + case 'FitBV': + x = dest[2]; + width = pageWidth; + height = pageHeight; + scale = 'page-height'; + break; + case 'FitR': + x = dest[2]; + y = dest[3]; + width = dest[4] - x; + height = dest[5] - y; + var hPadding = this.removePageBorders ? 0 : _ui_utils.SCROLLBAR_PADDING; + var vPadding = this.removePageBorders ? 0 : _ui_utils.VERTICAL_PADDING; + widthScale = (this.container.clientWidth - hPadding) / width / _ui_utils.CSS_UNITS; + heightScale = (this.container.clientHeight - vPadding) / height / _ui_utils.CSS_UNITS; + scale = Math.min(Math.abs(widthScale), Math.abs(heightScale)); + break; + default: + console.error('PDFViewer_scrollPageIntoView: \'' + dest[1].name + '\' is not a valid destination type.'); + return; + } + if (scale && scale !== this._currentScale) { + this.currentScaleValue = scale; + } else if (this._currentScale === _ui_utils.UNKNOWN_SCALE) { + this.currentScaleValue = _ui_utils.DEFAULT_SCALE_VALUE; } - this.renderingState = _pdf_rendering_queue.RenderingStates.FINISHED; - var ctx = this._getPageDrawContext(true); - var canvas = ctx.canvas; - if (img.width <= 2 * canvas.width) { - ctx.drawImage(img, 0, 0, img.width, img.height, 0, 0, canvas.width, canvas.height); - this._convertCanvasToImage(); + if (scale === 'page-fit' && !dest[4]) { + (0, _ui_utils.scrollIntoView)(pageView.div); return; } - var MAX_NUM_SCALING_STEPS = 3; - var reducedWidth = canvas.width << MAX_NUM_SCALING_STEPS; - var reducedHeight = canvas.height << MAX_NUM_SCALING_STEPS; - var reducedImage = getTempCanvas(reducedWidth, reducedHeight); - var reducedImageCtx = reducedImage.getContext('2d'); - while (reducedWidth > img.width || reducedHeight > img.height) { - reducedWidth >>= 1; - reducedHeight >>= 1; - } - reducedImageCtx.drawImage(img, 0, 0, img.width, img.height, 0, 0, reducedWidth, reducedHeight); - while (reducedWidth > 2 * canvas.width) { - reducedImageCtx.drawImage(reducedImage, 0, 0, reducedWidth, reducedHeight, 0, 0, reducedWidth >> 1, reducedHeight >> 1); - reducedWidth >>= 1; - reducedHeight >>= 1; - } - ctx.drawImage(reducedImage, 0, 0, reducedWidth, reducedHeight, 0, 0, canvas.width, canvas.height); - this._convertCanvasToImage(); + var boundingRect = [pageView.viewport.convertToViewportPoint(x, y), pageView.viewport.convertToViewportPoint(x + width, y + height)]; + var left = Math.min(boundingRect[0][0], boundingRect[1][0]); + var top = Math.min(boundingRect[0][1], boundingRect[1][1]); + if (!allowNegativeOffset) { + left = Math.max(left, 0); + top = Math.max(top, 0); + } + (0, _ui_utils.scrollIntoView)(pageView.div, { + left: left, + top: top + }); }, - get pageId() { - return this.pageLabel !== null ? this.pageLabel : this.id; + _updateLocation: function _updateLocation(firstPage) { + var currentScale = this._currentScale; + var currentScaleValue = this._currentScaleValue; + var normalizedScaleValue = parseFloat(currentScaleValue) === currentScale ? Math.round(currentScale * 10000) / 100 : currentScaleValue; + var pageNumber = firstPage.id; + var pdfOpenParams = '#page=' + pageNumber; + pdfOpenParams += '&zoom=' + normalizedScaleValue; + var currentPageView = this._pages[pageNumber - 1]; + var container = this.container; + var topLeft = currentPageView.getPagePoint(container.scrollLeft - firstPage.x, container.scrollTop - firstPage.y); + var intLeft = Math.round(topLeft[0]); + var intTop = Math.round(topLeft[1]); + pdfOpenParams += ',' + intLeft + ',' + intTop; + this._location = { + pageNumber: pageNumber, + scale: normalizedScaleValue, + top: intTop, + left: intLeft, + pdfOpenParams: pdfOpenParams + }; }, - setPageLabel: function PDFThumbnailView_setPageLabel(label) { - this.pageLabel = typeof label === 'string' ? label : null; - this.anchor.title = _ui_utils.mozL10n.get('thumb_page_title', { page: this.pageId }, 'Page {{page}}'); - if (this.renderingState !== _pdf_rendering_queue.RenderingStates.FINISHED) { + update: function PDFViewer_update() { + var visible = this._getVisiblePages(); + var visiblePages = visible.views; + if (visiblePages.length === 0) { return; } - var ariaLabel = _ui_utils.mozL10n.get('thumb_page_canvas', { page: this.pageId }, 'Thumbnail of Page {{page}}'); - if (this.image) { - this.image.setAttribute('aria-label', ariaLabel); - } else if (this.disableCanvasToImageConversion && this.canvas) { - this.canvas.setAttribute('aria-label', ariaLabel); - } - } - }; - return PDFThumbnailView; -}(); -PDFThumbnailView.tempImageCache = null; -exports.PDFThumbnailView = PDFThumbnailView; - -/***/ }), -/* 25 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.PDFThumbnailViewer = undefined; - -var _ui_utils = __w_pdfjs_require__(0); - -var _pdf_thumbnail_view = __w_pdfjs_require__(24); - -var THUMBNAIL_SCROLL_MARGIN = -19; -var PDFThumbnailViewer = function PDFThumbnailViewerClosure() { - function PDFThumbnailViewer(options) { - this.container = options.container; - this.renderingQueue = options.renderingQueue; - this.linkService = options.linkService; - this.scroll = (0, _ui_utils.watchScroll)(this.container, this._scrollUpdated.bind(this)); - this._resetView(); - } - PDFThumbnailViewer.prototype = { - _scrollUpdated: function PDFThumbnailViewer_scrollUpdated() { - this.renderingQueue.renderHighestPriority(); - }, - getThumbnail: function PDFThumbnailViewer_getThumbnail(index) { - return this.thumbnails[index]; - }, - _getVisibleThumbs: function PDFThumbnailViewer_getVisibleThumbs() { - return (0, _ui_utils.getVisibleElements)(this.container, this.thumbnails); - }, - scrollThumbnailIntoView: function PDFThumbnailViewer_scrollThumbnailIntoView(page) { - var selected = document.querySelector('.thumbnail.selected'); - if (selected) { - selected.classList.remove('selected'); - } - var thumbnail = document.querySelector('div.thumbnail[data-page-number="' + page + '"]'); - if (thumbnail) { - thumbnail.classList.add('selected'); - } - var visibleThumbs = this._getVisibleThumbs(); - var numVisibleThumbs = visibleThumbs.views.length; - if (numVisibleThumbs > 0) { - var first = visibleThumbs.first.id; - var last = numVisibleThumbs > 1 ? visibleThumbs.last.id : first; - if (page <= first || page >= last) { - (0, _ui_utils.scrollIntoView)(thumbnail, { top: THUMBNAIL_SCROLL_MARGIN }); + var suggestedCacheSize = Math.max(DEFAULT_CACHE_SIZE, 2 * visiblePages.length + 1); + this._buffer.resize(suggestedCacheSize); + this.renderingQueue.renderHighestPriority(visible); + var currentId = this._currentPageNumber; + var firstPage = visible.first; + for (var i = 0, ii = visiblePages.length, stillFullyVisible = false; i < ii; ++i) { + var page = visiblePages[i]; + if (page.percent < 100) { + break; + } + if (page.id === currentId) { + stillFullyVisible = true; + break; } } - }, - get pagesRotation() { - return this._pagesRotation; - }, - set pagesRotation(rotation) { - this._pagesRotation = rotation; - for (var i = 0, l = this.thumbnails.length; i < l; i++) { - var thumb = this.thumbnails[i]; - thumb.update(rotation); + if (!stillFullyVisible) { + currentId = visiblePages[0].id; } - }, - cleanup: function PDFThumbnailViewer_cleanup() { - var tempCanvas = _pdf_thumbnail_view.PDFThumbnailView.tempImageCache; - if (tempCanvas) { - tempCanvas.width = 0; - tempCanvas.height = 0; + if (!this.isInPresentationMode) { + this._setCurrentPageNumber(currentId); } - _pdf_thumbnail_view.PDFThumbnailView.tempImageCache = null; + this._updateLocation(firstPage); + this.eventBus.dispatch('updateviewarea', { + source: this, + location: this._location + }); }, - _resetView: function PDFThumbnailViewer_resetView() { - this.thumbnails = []; - this._pageLabels = null; - this._pagesRotation = 0; - this._pagesRequests = []; - this.container.textContent = ''; + containsElement: function containsElement(element) { + return this.container.contains(element); }, - setDocument: function PDFThumbnailViewer_setDocument(pdfDocument) { - if (this.pdfDocument) { - this._cancelRendering(); - this._resetView(); - } - this.pdfDocument = pdfDocument; - if (!pdfDocument) { - return Promise.resolve(); + focus: function focus() { + this.container.focus(); + }, + get isInPresentationMode() { + return this.presentationModeState === PresentationModeState.FULLSCREEN; + }, + get isChangingPresentationMode() { + return this.presentationModeState === PresentationModeState.CHANGING; + }, + get isHorizontalScrollbarEnabled() { + return this.isInPresentationMode ? false : this.container.scrollWidth > this.container.clientWidth; + }, + _getVisiblePages: function _getVisiblePages() { + if (!this.isInPresentationMode) { + return (0, _ui_utils.getVisibleElements)(this.container, this._pages, true); } - return pdfDocument.getPage(1).then(function (firstPage) { - var pagesCount = pdfDocument.numPages; - var viewport = firstPage.getViewport(1.0); - for (var pageNum = 1; pageNum <= pagesCount; ++pageNum) { - var thumbnail = new _pdf_thumbnail_view.PDFThumbnailView({ - container: this.container, - id: pageNum, - defaultViewport: viewport.clone(), - linkService: this.linkService, - renderingQueue: this.renderingQueue, - disableCanvasToImageConversion: false - }); - this.thumbnails.push(thumbnail); - } - }.bind(this)); + var visible = []; + var currentPage = this._pages[this._currentPageNumber - 1]; + visible.push({ + id: currentPage.id, + view: currentPage + }); + return { + first: currentPage, + last: currentPage, + views: visible + }; }, - _cancelRendering: function PDFThumbnailViewer_cancelRendering() { - for (var i = 0, ii = this.thumbnails.length; i < ii; i++) { - if (this.thumbnails[i]) { - this.thumbnails[i].cancelRendering(); + cleanup: function cleanup() { + for (var i = 0, ii = this._pages.length; i < ii; i++) { + if (this._pages[i] && this._pages[i].renderingState !== _pdf_rendering_queue.RenderingStates.FINISHED) { + this._pages[i].reset(); } } }, - setPageLabels: function PDFThumbnailViewer_setPageLabels(labels) { - if (!this.pdfDocument) { - return; - } - if (!labels) { - this._pageLabels = null; - } else if (!(labels instanceof Array && this.pdfDocument.numPages === labels.length)) { - this._pageLabels = null; - console.error('PDFThumbnailViewer_setPageLabels: Invalid page labels.'); - } else { - this._pageLabels = labels; - } - for (var i = 0, ii = this.thumbnails.length; i < ii; i++) { - var thumbnailView = this.thumbnails[i]; - var label = this._pageLabels && this._pageLabels[i]; - thumbnailView.setPageLabel(label); + _cancelRendering: function PDFViewer_cancelRendering() { + for (var i = 0, ii = this._pages.length; i < ii; i++) { + if (this._pages[i]) { + this._pages[i].cancelRendering(); + } } }, - _ensurePdfPageLoaded: function PDFThumbnailViewer_ensurePdfPageLoaded(thumbView) { - if (thumbView.pdfPage) { - return Promise.resolve(thumbView.pdfPage); + _ensurePdfPageLoaded: function _ensurePdfPageLoaded(pageView) { + var _this2 = this; + + if (pageView.pdfPage) { + return Promise.resolve(pageView.pdfPage); } - var pageNumber = thumbView.id; + var pageNumber = pageView.id; if (this._pagesRequests[pageNumber]) { return this._pagesRequests[pageNumber]; } var promise = this.pdfDocument.getPage(pageNumber).then(function (pdfPage) { - thumbView.setPdfPage(pdfPage); - this._pagesRequests[pageNumber] = null; + if (!pageView.pdfPage) { + pageView.setPdfPage(pdfPage); + } + _this2._pagesRequests[pageNumber] = null; return pdfPage; - }.bind(this)); + }); this._pagesRequests[pageNumber] = promise; return promise; }, - forceRendering: function forceRendering() { - var visibleThumbs = this._getVisibleThumbs(); - var thumbView = this.renderingQueue.getHighestPriority(visibleThumbs, this.thumbnails, this.scroll.down); - if (thumbView) { - this._ensurePdfPageLoaded(thumbView).then(function () { - this.renderingQueue.renderView(thumbView); - }.bind(this)); + forceRendering: function forceRendering(currentlyVisiblePages) { + var _this3 = this; + + var visiblePages = currentlyVisiblePages || this._getVisiblePages(); + var pageView = this.renderingQueue.getHighestPriority(visiblePages, this._pages, this.scroll.down); + if (pageView) { + this._ensurePdfPageLoaded(pageView).then(function () { + _this3.renderingQueue.renderView(pageView); + }); return true; } return false; + }, + getPageTextContent: function getPageTextContent(pageIndex) { + return this.pdfDocument.getPage(pageIndex + 1).then(function (page) { + return page.getTextContent({ normalizeWhitespace: true }); + }); + }, + createTextLayerBuilder: function createTextLayerBuilder(textLayerDiv, pageIndex, viewport, enhanceTextSelection) { + return new _text_layer_builder.TextLayerBuilder({ + textLayerDiv: textLayerDiv, + eventBus: this.eventBus, + pageIndex: pageIndex, + viewport: viewport, + findController: this.isInPresentationMode ? null : this.findController, + enhanceTextSelection: this.isInPresentationMode ? false : enhanceTextSelection + }); + }, + createAnnotationLayerBuilder: function createAnnotationLayerBuilder(pageDiv, pdfPage, renderInteractiveForms) { + return new _annotation_layer_builder.AnnotationLayerBuilder({ + pageDiv: pageDiv, + pdfPage: pdfPage, + renderInteractiveForms: renderInteractiveForms, + linkService: this.linkService, + downloadManager: this.downloadManager + }); + }, + setFindController: function setFindController(findController) { + this.findController = findController; + }, + getPagesOverview: function getPagesOverview() { + var pagesOverview = this._pages.map(function (pageView) { + var viewport = pageView.pdfPage.getViewport(1); + return { + width: viewport.width, + height: viewport.height, + rotation: viewport.rotation + }; + }); + if (!this.enablePrintAutoRotate) { + return pagesOverview; + } + var isFirstPagePortrait = isPortraitOrientation(pagesOverview[0]); + return pagesOverview.map(function (size) { + if (isFirstPagePortrait === isPortraitOrientation(size)) { + return size; + } + return { + width: size.height, + height: size.width, + rotation: (size.rotation + 90) % 360 + }; + }); } }; - return PDFThumbnailViewer; + return PDFViewer; }(); -exports.PDFThumbnailViewer = PDFThumbnailViewer; +exports.PresentationModeState = PresentationModeState; +exports.PDFViewer = PDFViewer; /***/ }), -/* 26 */ +/* 12 */ /***/ (function(module, exports, __w_pdfjs_require__) { "use strict"; -var pdfjsLib = __w_pdfjs_require__(1); -var pdfjsWebPDFViewer = __w_pdfjs_require__(10); -var pdfjsWebPDFPageView = __w_pdfjs_require__(9); -var pdfjsWebPDFLinkService = __w_pdfjs_require__(4); -var pdfjsWebTextLayerBuilder = __w_pdfjs_require__(11); -var pdfjsWebAnnotationLayerBuilder = __w_pdfjs_require__(7); -var pdfjsWebPDFHistory = __w_pdfjs_require__(8); -var pdfjsWebPDFFindController = __w_pdfjs_require__(5); -var pdfjsWebUIUtils = __w_pdfjs_require__(0); -var pdfjsWebDownloadManager = __w_pdfjs_require__(13); +var pdfjsLib = __w_pdfjs_require__(0); +var pdfjsWebPDFViewer = __w_pdfjs_require__(11); +var pdfjsWebPDFPageView = __w_pdfjs_require__(5); +var pdfjsWebPDFLinkService = __w_pdfjs_require__(3); +var pdfjsWebTextLayerBuilder = __w_pdfjs_require__(6); +var pdfjsWebAnnotationLayerBuilder = __w_pdfjs_require__(4); +var pdfjsWebPDFHistory = __w_pdfjs_require__(10); +var pdfjsWebPDFFindController = __w_pdfjs_require__(9); +var pdfjsWebUIUtils = __w_pdfjs_require__(1); +var pdfjsWebDownloadManager = __w_pdfjs_require__(8); var PDFJS = pdfjsLib.PDFJS; PDFJS.PDFViewer = pdfjsWebPDFViewer.PDFViewer; PDFJS.PDFPageView = pdfjsWebPDFPageView.PDFPageView; @@ -7145,461 +3414,6 @@ PDFJS.DownloadManager = pdfjsWebDownloadManager.DownloadManager; PDFJS.ProgressBar = pdfjsWebUIUtils.ProgressBar; exports.PDFJS = PDFJS; -/***/ }), -/* 27 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.SecondaryToolbar = undefined; - -var _ui_utils = __w_pdfjs_require__(0); - -var SecondaryToolbar = function SecondaryToolbarClosure() { - function SecondaryToolbar(options, mainContainer, eventBus) { - this.toolbar = options.toolbar; - this.toggleButton = options.toggleButton; - this.toolbarButtonContainer = options.toolbarButtonContainer; - this.buttons = [{ - element: options.presentationModeButton, - eventName: 'presentationmode', - close: true - }, { - element: options.openFileButton, - eventName: 'openfile', - close: true - }, { - element: options.printButton, - eventName: 'print', - close: true - }, { - element: options.downloadButton, - eventName: 'download', - close: true - }, { - element: options.viewBookmarkButton, - eventName: null, - close: true - }, { - element: options.firstPageButton, - eventName: 'firstpage', - close: true - }, { - element: options.lastPageButton, - eventName: 'lastpage', - close: true - }, { - element: options.pageRotateCwButton, - eventName: 'rotatecw', - close: false - }, { - element: options.pageRotateCcwButton, - eventName: 'rotateccw', - close: false - }, { - element: options.toggleHandToolButton, - eventName: 'togglehandtool', - close: true - }, { - element: options.documentPropertiesButton, - eventName: 'documentproperties', - close: true - }]; - this.items = { - firstPage: options.firstPageButton, - lastPage: options.lastPageButton, - pageRotateCw: options.pageRotateCwButton, - pageRotateCcw: options.pageRotateCcwButton - }; - this.mainContainer = mainContainer; - this.eventBus = eventBus; - this.opened = false; - this.containerHeight = null; - this.previousContainerHeight = null; - this.reset(); - this._bindClickListeners(); - this._bindHandToolListener(options.toggleHandToolButton); - this.eventBus.on('resize', this._setMaxHeight.bind(this)); - } - SecondaryToolbar.prototype = { - get isOpen() { - return this.opened; - }, - setPageNumber: function SecondaryToolbar_setPageNumber(pageNumber) { - this.pageNumber = pageNumber; - this._updateUIState(); - }, - setPagesCount: function SecondaryToolbar_setPagesCount(pagesCount) { - this.pagesCount = pagesCount; - this._updateUIState(); - }, - reset: function SecondaryToolbar_reset() { - this.pageNumber = 0; - this.pagesCount = 0; - this._updateUIState(); - }, - _updateUIState: function SecondaryToolbar_updateUIState() { - var items = this.items; - items.firstPage.disabled = this.pageNumber <= 1; - items.lastPage.disabled = this.pageNumber >= this.pagesCount; - items.pageRotateCw.disabled = this.pagesCount === 0; - items.pageRotateCcw.disabled = this.pagesCount === 0; - }, - _bindClickListeners: function SecondaryToolbar_bindClickListeners() { - this.toggleButton.addEventListener('click', this.toggle.bind(this)); - for (var button in this.buttons) { - var element = this.buttons[button].element; - var eventName = this.buttons[button].eventName; - var close = this.buttons[button].close; - element.addEventListener('click', function (eventName, close) { - if (eventName !== null) { - this.eventBus.dispatch(eventName, { source: this }); - } - if (close) { - this.close(); - } - }.bind(this, eventName, close)); - } - }, - _bindHandToolListener: function SecondaryToolbar_bindHandToolListener(toggleHandToolButton) { - var isHandToolActive = false; - this.eventBus.on('handtoolchanged', function (e) { - if (isHandToolActive === e.isActive) { - return; - } - isHandToolActive = e.isActive; - if (isHandToolActive) { - toggleHandToolButton.title = _ui_utils.mozL10n.get('hand_tool_disable.title', null, 'Disable hand tool'); - toggleHandToolButton.firstElementChild.textContent = _ui_utils.mozL10n.get('hand_tool_disable_label', null, 'Disable hand tool'); - } else { - toggleHandToolButton.title = _ui_utils.mozL10n.get('hand_tool_enable.title', null, 'Enable hand tool'); - toggleHandToolButton.firstElementChild.textContent = _ui_utils.mozL10n.get('hand_tool_enable_label', null, 'Enable hand tool'); - } - }); - }, - open: function SecondaryToolbar_open() { - if (this.opened) { - return; - } - this.opened = true; - this._setMaxHeight(); - this.toggleButton.classList.add('toggled'); - this.toolbar.classList.remove('hidden'); - }, - close: function SecondaryToolbar_close() { - if (!this.opened) { - return; - } - this.opened = false; - this.toolbar.classList.add('hidden'); - this.toggleButton.classList.remove('toggled'); - }, - toggle: function SecondaryToolbar_toggle() { - if (this.opened) { - this.close(); - } else { - this.open(); - } - }, - _setMaxHeight: function SecondaryToolbar_setMaxHeight() { - if (!this.opened) { - return; - } - this.containerHeight = this.mainContainer.clientHeight; - if (this.containerHeight === this.previousContainerHeight) { - return; - } - this.toolbarButtonContainer.setAttribute('style', 'max-height: ' + (this.containerHeight - _ui_utils.SCROLLBAR_PADDING) + 'px;'); - this.previousContainerHeight = this.containerHeight; - } - }; - return SecondaryToolbar; -}(); -exports.SecondaryToolbar = SecondaryToolbar; - -/***/ }), -/* 28 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -exports.Toolbar = undefined; - -var _ui_utils = __w_pdfjs_require__(0); - -var PAGE_NUMBER_LOADING_INDICATOR = 'visiblePageIsLoading'; -var SCALE_SELECT_CONTAINER_PADDING = 8; -var SCALE_SELECT_PADDING = 22; -var Toolbar = function ToolbarClosure() { - function Toolbar(options, mainContainer, eventBus) { - this.toolbar = options.container; - this.mainContainer = mainContainer; - this.eventBus = eventBus; - this.items = options; - this._wasLocalized = false; - this.reset(); - this._bindListeners(); - } - Toolbar.prototype = { - setPageNumber: function setPageNumber(pageNumber, pageLabel) { - this.pageNumber = pageNumber; - this.pageLabel = pageLabel; - this._updateUIState(false); - }, - setPagesCount: function setPagesCount(pagesCount, hasPageLabels) { - this.pagesCount = pagesCount; - this.hasPageLabels = hasPageLabels; - this._updateUIState(true); - }, - setPageScale: function setPageScale(pageScaleValue, pageScale) { - this.pageScaleValue = pageScaleValue; - this.pageScale = pageScale; - this._updateUIState(false); - }, - reset: function reset() { - this.pageNumber = 0; - this.pageLabel = null; - this.hasPageLabels = false; - this.pagesCount = 0; - this.pageScaleValue = _ui_utils.DEFAULT_SCALE_VALUE; - this.pageScale = _ui_utils.DEFAULT_SCALE; - this._updateUIState(true); - }, - _bindListeners: function Toolbar_bindClickListeners() { - var eventBus = this.eventBus; - var self = this; - var items = this.items; - items.previous.addEventListener('click', function () { - eventBus.dispatch('previouspage'); - }); - items.next.addEventListener('click', function () { - eventBus.dispatch('nextpage'); - }); - items.zoomIn.addEventListener('click', function () { - eventBus.dispatch('zoomin'); - }); - items.zoomOut.addEventListener('click', function () { - eventBus.dispatch('zoomout'); - }); - items.pageNumber.addEventListener('click', function () { - this.select(); - }); - items.pageNumber.addEventListener('change', function () { - eventBus.dispatch('pagenumberchanged', { - source: self, - value: this.value - }); - }); - items.scaleSelect.addEventListener('change', function () { - if (this.value === 'custom') { - return; - } - eventBus.dispatch('scalechanged', { - source: self, - value: this.value - }); - }); - items.presentationModeButton.addEventListener('click', function (e) { - eventBus.dispatch('presentationmode'); - }); - items.openFile.addEventListener('click', function (e) { - eventBus.dispatch('openfile'); - }); - items.print.addEventListener('click', function (e) { - eventBus.dispatch('print'); - }); - items.download.addEventListener('click', function (e) { - eventBus.dispatch('download'); - }); - items.scaleSelect.oncontextmenu = _ui_utils.noContextMenuHandler; - _ui_utils.localized.then(this._localized.bind(this)); - }, - _localized: function Toolbar_localized() { - this._wasLocalized = true; - this._adjustScaleWidth(); - this._updateUIState(true); - }, - _updateUIState: function Toolbar_updateUIState(resetNumPages) { - function selectScaleOption(value, scale) { - var options = items.scaleSelect.options; - var predefinedValueFound = false; - for (var i = 0, ii = options.length; i < ii; i++) { - var option = options[i]; - if (option.value !== value) { - option.selected = false; - continue; - } - option.selected = true; - predefinedValueFound = true; - } - if (!predefinedValueFound) { - var customScale = Math.round(scale * 10000) / 100; - items.customScaleOption.textContent = _ui_utils.mozL10n.get('page_scale_percent', { scale: customScale }, '{{scale}}%'); - items.customScaleOption.selected = true; - } - } - if (!this._wasLocalized) { - return; - } - var pageNumber = this.pageNumber; - var scaleValue = (this.pageScaleValue || this.pageScale).toString(); - var scale = this.pageScale; - var items = this.items; - var pagesCount = this.pagesCount; - if (resetNumPages) { - if (this.hasPageLabels) { - items.pageNumber.type = 'text'; - } else { - items.pageNumber.type = 'number'; - items.numPages.textContent = _ui_utils.mozL10n.get('of_pages', { pagesCount: pagesCount }, 'of {{pagesCount}}'); - } - items.pageNumber.max = pagesCount; - } - if (this.hasPageLabels) { - items.pageNumber.value = this.pageLabel; - items.numPages.textContent = _ui_utils.mozL10n.get('page_of_pages', { - pageNumber: pageNumber, - pagesCount: pagesCount - }, '({{pageNumber}} of {{pagesCount}})'); - } else { - items.pageNumber.value = pageNumber; - } - items.previous.disabled = pageNumber <= 1; - items.next.disabled = pageNumber >= pagesCount; - items.zoomOut.disabled = scale <= _ui_utils.MIN_SCALE; - items.zoomIn.disabled = scale >= _ui_utils.MAX_SCALE; - selectScaleOption(scaleValue, scale); - }, - updateLoadingIndicatorState: function Toolbar_updateLoadingIndicatorState(loading) { - var pageNumberInput = this.items.pageNumber; - if (loading) { - pageNumberInput.classList.add(PAGE_NUMBER_LOADING_INDICATOR); - } else { - pageNumberInput.classList.remove(PAGE_NUMBER_LOADING_INDICATOR); - } - }, - _adjustScaleWidth: function Toolbar_adjustScaleWidth() { - var container = this.items.scaleSelectContainer; - var select = this.items.scaleSelect; - _ui_utils.animationStarted.then(function () { - if (container.clientWidth === 0) { - container.setAttribute('style', 'display: inherit;'); - } - if (container.clientWidth > 0) { - select.setAttribute('style', 'min-width: inherit;'); - var width = select.clientWidth + SCALE_SELECT_CONTAINER_PADDING; - select.setAttribute('style', 'min-width: ' + (width + SCALE_SELECT_PADDING) + 'px;'); - container.setAttribute('style', 'min-width: ' + width + 'px; ' + 'max-width: ' + width + 'px;'); - } - }); - } - }; - return Toolbar; -}(); -exports.Toolbar = Toolbar; - -/***/ }), -/* 29 */ -/***/ (function(module, exports, __w_pdfjs_require__) { - -"use strict"; - - -Object.defineProperty(exports, "__esModule", { - value: true -}); -var DEFAULT_VIEW_HISTORY_CACHE_SIZE = 20; -var ViewHistory = function ViewHistoryClosure() { - function ViewHistory(fingerprint, cacheSize) { - this.fingerprint = fingerprint; - this.cacheSize = cacheSize || DEFAULT_VIEW_HISTORY_CACHE_SIZE; - this.isInitializedPromiseResolved = false; - this.initializedPromise = this._readFromStorage().then(function (databaseStr) { - this.isInitializedPromiseResolved = true; - var database = JSON.parse(databaseStr || '{}'); - if (!('files' in database)) { - database.files = []; - } - if (database.files.length >= this.cacheSize) { - database.files.shift(); - } - var index; - for (var i = 0, length = database.files.length; i < length; i++) { - var branch = database.files[i]; - if (branch.fingerprint === this.fingerprint) { - index = i; - break; - } - } - if (typeof index !== 'number') { - index = database.files.push({ fingerprint: this.fingerprint }) - 1; - } - this.file = database.files[index]; - this.database = database; - }.bind(this)); - } - ViewHistory.prototype = { - _writeToStorage: function ViewHistory_writeToStorage() { - return new Promise(function (resolve) { - var databaseStr = JSON.stringify(this.database); - localStorage.setItem('pdfjs.history', databaseStr); - resolve(); - }.bind(this)); - }, - _readFromStorage: function ViewHistory_readFromStorage() { - return new Promise(function (resolve) { - var value = localStorage.getItem('pdfjs.history'); - if (!value) { - var databaseStr = localStorage.getItem('database'); - if (databaseStr) { - try { - var database = JSON.parse(databaseStr); - if (typeof database.files[0].fingerprint === 'string') { - localStorage.setItem('pdfjs.history', databaseStr); - localStorage.removeItem('database'); - value = databaseStr; - } - } catch (ex) {} - } - } - resolve(value); - }); - }, - set: function ViewHistory_set(name, val) { - if (!this.isInitializedPromiseResolved) { - return; - } - this.file[name] = val; - return this._writeToStorage(); - }, - setMultiple: function ViewHistory_setMultiple(properties) { - if (!this.isInitializedPromiseResolved) { - return; - } - for (var name in properties) { - this.file[name] = properties[name]; - } - return this._writeToStorage(); - }, - get: function ViewHistory_get(name, defaultValue) { - if (!this.isInitializedPromiseResolved) { - return defaultValue; - } - return this.file[name] || defaultValue; - } - }; - return ViewHistory; -}(); -exports.ViewHistory = ViewHistory; - /***/ }) /******/ ]); }); \ No newline at end of file