--- a/browser/extensions/pdfjs/README.mozilla
+++ b/browser/extensions/pdfjs/README.mozilla
@@ -1,5 +1,5 @@
This is the PDF.js project output, https://github.com/mozilla/pdf.js
-Current extension version is: 2.0.402
+Current extension version is: 2.0.447
-Taken from upstream commit: 401f3a9d
+Taken from upstream commit: c0b22da0
--- a/browser/extensions/pdfjs/content/PdfJs.jsm
+++ b/browser/extensions/pdfjs/content/PdfJs.jsm
@@ -44,16 +44,18 @@ XPCOMUtils.defineLazyServiceGetter(Svc,
"nsIMIMEService");
XPCOMUtils.defineLazyServiceGetter(Svc, "pluginHost",
"@mozilla.org/plugin/host;1",
"nsIPluginHost");
ChromeUtils.defineModuleGetter(this, "PdfjsChromeUtils",
"resource://pdf.js/PdfjsChromeUtils.jsm");
ChromeUtils.defineModuleGetter(this, "PdfjsContentUtils",
"resource://pdf.js/PdfjsContentUtils.jsm");
+ChromeUtils.defineModuleGetter(this, "PdfJsDefaultPreferences",
+ "resource://pdf.js/PdfJsDefaultPreferences.jsm");
function getBoolPref(aPref, aDefaultValue) {
try {
return Services.prefs.getBoolPref(aPref);
} catch (ex) {
return aDefaultValue;
}
}
@@ -70,45 +72,20 @@ function isDefaultHandler() {
if (Services.appinfo.processType !== Services.appinfo.PROCESS_TYPE_DEFAULT) {
throw new Error("isDefaultHandler should only get called in the parent " +
"process.");
}
return PdfjsChromeUtils.isDefaultHandlerApp();
}
function initializeDefaultPreferences() {
- /* eslint-disable semi */
- var DEFAULT_PREFERENCES =
-{
- "showPreviousViewOnLoad": true,
- "defaultZoomValue": "",
- "sidebarViewOnLoad": 0,
- "cursorToolOnLoad": 0,
- "enableWebGL": false,
- "pdfBugEnabled": false,
- "disableRange": false,
- "disableStream": false,
- "disableAutoFetch": false,
- "disableFontFace": false,
- "textLayerMode": 1,
- "useOnlyCssZoom": false,
- "externalLinkTarget": 0,
- "renderer": "canvas",
- "renderInteractiveForms": false,
- "enablePrintAutoRotate": false,
- "disablePageMode": false,
- "disablePageLabels": false
-}
-
- /* eslint-enable semi */
-
var defaultBranch = Services.prefs.getDefaultBranch(PREF_PREFIX + ".");
var defaultValue;
- for (var key in DEFAULT_PREFERENCES) {
- defaultValue = DEFAULT_PREFERENCES[key];
+ for (var key in PdfJsDefaultPreferences) {
+ defaultValue = PdfJsDefaultPreferences[key];
switch (typeof defaultValue) {
case "boolean":
defaultBranch.setBoolPref(key, defaultValue);
break;
case "number":
defaultBranch.setIntPref(key, defaultValue);
break;
case "string":
new file mode 100644
--- /dev/null
+++ b/browser/extensions/pdfjs/content/PdfJsDefaultPreferences.jsm
@@ -0,0 +1,41 @@
+/* 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.
+ */
+
+//
+// THIS FILE IS AUTOMATICALLY GENERATED, DO NOT EDIT MANUALLY!
+//
+
+"use strict";
+var EXPORTED_SYMBOLS = ["PdfJsDefaultPreferences"];
+var PdfJsDefaultPreferences = Object.freeze({
+ "showPreviousViewOnLoad": true,
+ "defaultZoomValue": "",
+ "sidebarViewOnLoad": 0,
+ "cursorToolOnLoad": 0,
+ "enableWebGL": false,
+ "pdfBugEnabled": false,
+ "disableRange": false,
+ "disableStream": false,
+ "disableAutoFetch": false,
+ "disableFontFace": false,
+ "textLayerMode": 1,
+ "useOnlyCssZoom": false,
+ "externalLinkTarget": 0,
+ "renderer": "canvas",
+ "renderInteractiveForms": false,
+ "enablePrintAutoRotate": false,
+ "disablePageMode": false,
+ "disablePageLabels": false
+});
--- a/browser/extensions/pdfjs/content/PdfjsChromeUtils.jsm
+++ b/browser/extensions/pdfjs/content/PdfjsChromeUtils.jsm
@@ -18,50 +18,28 @@
var EXPORTED_SYMBOLS = ["PdfjsChromeUtils"];
const PREF_PREFIX = "pdfjs";
const PDF_CONTENT_TYPE = "application/pdf";
ChromeUtils.import("resource://gre/modules/XPCOMUtils.jsm");
ChromeUtils.import("resource://gre/modules/Services.jsm");
+ChromeUtils.defineModuleGetter(this, "PdfJsDefaultPreferences",
+ "resource://pdf.js/PdfJsDefaultPreferences.jsm");
+
var Svc = {};
XPCOMUtils.defineLazyServiceGetter(Svc, "mime",
"@mozilla.org/mime;1",
"nsIMIMEService");
-/* eslint-disable semi */
-var DEFAULT_PREFERENCES =
-{
- "showPreviousViewOnLoad": true,
- "defaultZoomValue": "",
- "sidebarViewOnLoad": 0,
- "cursorToolOnLoad": 0,
- "enableWebGL": false,
- "pdfBugEnabled": false,
- "disableRange": false,
- "disableStream": false,
- "disableAutoFetch": false,
- "disableFontFace": false,
- "textLayerMode": 1,
- "useOnlyCssZoom": false,
- "externalLinkTarget": 0,
- "renderer": "canvas",
- "renderInteractiveForms": false,
- "enablePrintAutoRotate": false,
- "disablePageMode": false,
- "disablePageLabels": false
-}
-
-/* eslint-enable semi */
-
var PdfjsChromeUtils = {
// For security purposes when running remote, we restrict preferences
// content can access.
- _allowedPrefNames: Object.keys(DEFAULT_PREFERENCES),
+ _allowedPrefNames: Object.keys(PdfJsDefaultPreferences),
_ppmm: null,
_mmg: null,
/*
* Public API
*/
init() {
--- a/browser/extensions/pdfjs/content/build/pdf.js
+++ b/browser/extensions/pdfjs/content/build/pdf.js
@@ -23,17 +23,17 @@
(function webpackUniversalModuleDefinition(root, factory) {
if(typeof exports === 'object' && typeof module === 'object')
module.exports = factory();
else if(typeof define === 'function' && define.amd)
define("pdfjs-dist/build/pdf", [], factory);
else if(typeof exports === 'object')
exports["pdfjs-dist/build/pdf"] = factory();
else
- root["pdfjs-dist/build/pdf"] = root.pdfjsDistBuildPdf = factory();
+ root["pdfjs-dist/build/pdf"] = root.pdfjsLib = factory();
})(typeof self !== 'undefined' ? self : this, function() {
return /******/ (function(modules) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = {};
/******/
/******/ // The require function
/******/ function __w_pdfjs_require__(moduleId) {
/******/
@@ -87,34 +87,34 @@ return /******/ (function(modules) { //
/******/
/******/ // Object.prototype.hasOwnProperty.call
/******/ __w_pdfjs_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ // __webpack_public_path__
/******/ __w_pdfjs_require__.p = "";
/******/
/******/ // Load entry module and return exports
-/******/ return __w_pdfjs_require__(__w_pdfjs_require__.s = 9);
+/******/ return __w_pdfjs_require__(__w_pdfjs_require__.s = 5);
/******/ })
/************************************************************************/
/******/ ([
/* 0 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
-exports.unreachable = exports.warn = exports.utf8StringToString = exports.stringToUTF8String = exports.stringToPDFString = exports.stringToBytes = exports.string32 = exports.shadow = exports.setVerbosityLevel = exports.ReadableStream = exports.removeNullCharacters = exports.readUint32 = exports.readUint16 = exports.readInt8 = exports.log2 = exports.isEvalSupported = exports.isLittleEndian = exports.createValidAbsoluteUrl = exports.isSameOrigin = exports.isSpace = exports.isString = exports.isNum = exports.isEmptyObj = exports.isBool = exports.isArrayBuffer = exports.info = exports.getVerbosityLevel = exports.getLookupTableFactory = exports.deprecated = exports.createObjectURL = exports.createPromiseCapability = exports.createBlob = exports.bytesToString = exports.assert = exports.arraysToBytes = exports.arrayByteLength = exports.FormatError = exports.XRefParseException = exports.Util = exports.UnknownErrorException = exports.UnexpectedResponseException = exports.TextRenderingMode = exports.StreamType = exports.PasswordResponses = exports.PasswordException = exports.PageViewport = exports.NotImplementedException = exports.NativeImageDecoding = exports.MissingPDFException = exports.MissingDataException = exports.MessageHandler = exports.InvalidPDFException = exports.AbortException = exports.CMapCompressionType = exports.ImageKind = exports.FontType = exports.AnnotationType = exports.AnnotationFlag = exports.AnnotationFieldFlag = exports.AnnotationBorderStyleType = exports.UNSUPPORTED_FEATURES = exports.VerbosityLevel = exports.OPS = exports.IDENTITY_MATRIX = exports.FONT_IDENTITY_MATRIX = undefined;
-
-__w_pdfjs_require__(10);
-
-var _streams_polyfill = __w_pdfjs_require__(11);
+exports.unreachable = exports.warn = exports.utf8StringToString = exports.stringToUTF8String = exports.stringToPDFString = exports.stringToBytes = exports.string32 = exports.shadow = exports.setVerbosityLevel = exports.ReadableStream = exports.removeNullCharacters = exports.readUint32 = exports.readUint16 = exports.readInt8 = exports.log2 = exports.isEvalSupported = exports.isLittleEndian = exports.createValidAbsoluteUrl = exports.isSameOrigin = exports.isSpace = exports.isString = exports.isNum = exports.isEmptyObj = exports.isBool = exports.isArrayBuffer = exports.info = exports.getVerbosityLevel = exports.getLookupTableFactory = exports.getInheritableProperty = exports.deprecated = exports.createObjectURL = exports.createPromiseCapability = exports.createBlob = exports.bytesToString = exports.assert = exports.arraysToBytes = exports.arrayByteLength = exports.FormatError = exports.XRefParseException = exports.Util = exports.UnknownErrorException = exports.UnexpectedResponseException = exports.TextRenderingMode = exports.StreamType = exports.PasswordResponses = exports.PasswordException = exports.PageViewport = exports.NotImplementedException = exports.NativeImageDecoding = exports.MissingPDFException = exports.MissingDataException = exports.MessageHandler = exports.InvalidPDFException = exports.AbortException = exports.CMapCompressionType = exports.ImageKind = exports.FontType = exports.AnnotationType = exports.AnnotationFlag = exports.AnnotationFieldFlag = exports.AnnotationBorderStyleType = exports.UNSUPPORTED_FEATURES = exports.VerbosityLevel = exports.OPS = exports.IDENTITY_MATRIX = exports.FONT_IDENTITY_MATRIX = undefined;
+
+__w_pdfjs_require__(6);
+
+var _streams_polyfill = __w_pdfjs_require__(7);
var FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];
const NativeImageDecoding = {
NONE: 'none',
DECODE: 'decode',
DISPLAY: 'display'
};
var TextRenderingMode = {
@@ -622,16 +622,39 @@ function isLittleEndian() {
function isEvalSupported() {
try {
new Function('');
return true;
} catch (e) {
return false;
}
}
+function getInheritableProperty({ dict, key, getArray = false, stopWhenFound = true }) {
+ const LOOP_LIMIT = 100;
+ let loopCount = 0;
+ let values;
+ while (dict) {
+ const value = getArray ? dict.getArray(key) : dict.get(key);
+ if (value !== undefined) {
+ if (stopWhenFound) {
+ return value;
+ }
+ if (!values) {
+ values = [];
+ }
+ values.push(value);
+ }
+ if (++loopCount > LOOP_LIMIT) {
+ warn(`getInheritableProperty: maximum loop count exceeded for "${key}"`);
+ break;
+ }
+ dict = dict.get('Parent');
+ }
+ return values;
+}
var IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];
var Util = function UtilClosure() {
function Util() {}
var rgbBuf = ['rgb(', 0, ',', 0, ',', 0, ')'];
Util.makeCssRgb = function Util_makeCssRgb(r, g, b) {
rgbBuf[1] = r;
rgbBuf[3] = g;
rgbBuf[5] = b;
@@ -737,25 +760,16 @@ var Util = function UtilClosure() {
Util.prependToArray = function Util_prependToArray(arr1, arr2) {
Array.prototype.unshift.apply(arr1, arr2);
};
Util.extendObj = function extendObj(obj1, obj2) {
for (var key in obj2) {
obj1[key] = obj2[key];
}
};
- Util.getInheritableProperty = function Util_getInheritableProperty(dict, name, getArray) {
- while (dict && !dict.has(name)) {
- dict = dict.get('Parent');
- }
- if (!dict) {
- return null;
- }
- return getArray ? dict.getArray(name) : dict.get(name);
- };
Util.inherit = function Util_inherit(sub, base, prototype) {
sub.prototype = Object.create(base.prototype);
sub.prototype.constructor = sub;
for (var prop in prototype) {
sub.prototype[prop] = prototype[prop];
}
};
Util.loadScript = function Util_loadScript(src, callback) {
@@ -1344,16 +1358,17 @@ exports.FormatError = FormatError;
exports.arrayByteLength = arrayByteLength;
exports.arraysToBytes = arraysToBytes;
exports.assert = assert;
exports.bytesToString = bytesToString;
exports.createBlob = createBlob;
exports.createPromiseCapability = createPromiseCapability;
exports.createObjectURL = createObjectURL;
exports.deprecated = deprecated;
+exports.getInheritableProperty = getInheritableProperty;
exports.getLookupTableFactory = getLookupTableFactory;
exports.getVerbosityLevel = getVerbosityLevel;
exports.info = info;
exports.isArrayBuffer = isArrayBuffer;
exports.isBool = isBool;
exports.isEmptyObj = isEmptyObj;
exports.isNum = isNum;
exports.isString = isString;
@@ -1383,26 +1398,20 @@ exports.unreachable = unreachable;
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
-exports.DummyStatTimer = exports.StatTimer = exports.SimpleXMLParser = exports.DOMSVGFactory = exports.DOMCMapReaderFactory = exports.DOMCanvasFactory = exports.DEFAULT_LINK_REL = exports.getDefaultSetting = exports.LinkTarget = exports.getFilenameFromUrl = exports.addLinkAttributes = exports.RenderingCancelledException = undefined;
+exports.DummyStatTimer = exports.StatTimer = exports.SimpleXMLParser = exports.DOMSVGFactory = exports.DOMCMapReaderFactory = exports.DOMCanvasFactory = exports.DEFAULT_LINK_REL = exports.LinkTarget = exports.getFilenameFromUrl = exports.addLinkAttributes = exports.RenderingCancelledException = undefined;
var _util = __w_pdfjs_require__(0);
-var _global_scope = __w_pdfjs_require__(2);
-
-var _global_scope2 = _interopRequireDefault(_global_scope);
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
const DEFAULT_LINK_REL = 'noopener noreferrer nofollow';
const SVG_NS = 'http://www.w3.org/2000/svg';
class DOMCanvasFactory {
create(width, height) {
if (width <= 0 || height <= 0) {
throw new Error('invalid canvas size');
}
let canvas = document.createElement('canvas');
@@ -1436,17 +1445,17 @@ class DOMCanvasFactory {
}
class DOMCMapReaderFactory {
constructor({ baseUrl = null, isCompressed = false }) {
this.baseUrl = baseUrl;
this.isCompressed = isCompressed;
}
fetch({ name }) {
if (!this.baseUrl) {
- return Promise.reject(new Error('CMap baseUrl must be specified, ' + 'see "PDFJS.cMapUrl" (and also "PDFJS.cMapPacked").'));
+ return Promise.reject(new Error('The CMap "baseUrl" parameter must be specified, ensure that ' + 'the "cMapUrl" and "cMapPacked" API parameters are provided.'));
}
if (!name) {
return Promise.reject(new Error('CMap name must be specified.'));
}
return new Promise((resolve, reject) => {
let url = this.baseUrl + name + (this.isCompressed ? '.bcmap' : '');
let request = new XMLHttpRequest();
request.open('GET', url, true);
@@ -1623,43 +1632,16 @@ function addLinkAttributes(link, { url,
}
}
function getFilenameFromUrl(url) {
var anchor = url.indexOf('#');
var query = url.indexOf('?');
var end = Math.min(anchor > 0 ? anchor : url.length, query > 0 ? query : url.length);
return url.substring(url.lastIndexOf('/', end) + 1, end);
}
-function getDefaultSetting(id) {
- var globalSettings = _global_scope2.default.PDFJS;
- switch (id) {
- case 'pdfBug':
- return globalSettings ? globalSettings.pdfBug : false;
- case 'disableAutoFetch':
- return globalSettings ? globalSettings.disableAutoFetch : false;
- case 'disableStream':
- return globalSettings ? globalSettings.disableStream : false;
- case 'disableRange':
- return globalSettings ? globalSettings.disableRange : false;
- case 'disableFontFace':
- return globalSettings ? globalSettings.disableFontFace : false;
- case 'disableCreateObjectURL':
- return globalSettings ? globalSettings.disableCreateObjectURL : false;
- case 'cMapUrl':
- return globalSettings ? globalSettings.cMapUrl : null;
- case 'cMapPacked':
- return globalSettings ? globalSettings.cMapPacked : false;
- case 'maxImageSize':
- return globalSettings ? globalSettings.maxImageSize : -1;
- case 'isEvalSupported':
- return globalSettings ? globalSettings.isEvalSupported : true;
- default:
- throw new Error('Unknown default setting: ' + id);
- }
-}
class StatTimer {
constructor(enable = true) {
this.enabled = !!enable;
this.started = Object.create(null);
this.times = [];
}
time(name) {
if (!this.enabled) {
@@ -1711,17 +1693,16 @@ class DummyStatTimer {
static toString() {
return '';
}
}
exports.RenderingCancelledException = RenderingCancelledException;
exports.addLinkAttributes = addLinkAttributes;
exports.getFilenameFromUrl = getFilenameFromUrl;
exports.LinkTarget = LinkTarget;
-exports.getDefaultSetting = getDefaultSetting;
exports.DEFAULT_LINK_REL = DEFAULT_LINK_REL;
exports.DOMCanvasFactory = DOMCanvasFactory;
exports.DOMCMapReaderFactory = DOMCMapReaderFactory;
exports.DOMSVGFactory = DOMSVGFactory;
exports.SimpleXMLParser = SimpleXMLParser;
exports.StatTimer = StatTimer;
exports.DummyStatTimer = DummyStatTimer;
@@ -1739,2890 +1720,54 @@ module.exports = typeof window !== 'unde
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
-const GlobalWorkerOptions = Object.create(null);
-GlobalWorkerOptions.workerPort = GlobalWorkerOptions.workerPort === undefined ? null : GlobalWorkerOptions.workerPort;
-GlobalWorkerOptions.workerSrc = GlobalWorkerOptions.workerSrc === undefined ? '' : GlobalWorkerOptions.workerSrc;
-exports.GlobalWorkerOptions = GlobalWorkerOptions;
+let compatibilityParams = Object.create(null);
+;
+const apiCompatibilityParams = Object.freeze(compatibilityParams);
+exports.apiCompatibilityParams = apiCompatibilityParams;
/***/ }),
/* 4 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
-exports.build = exports.version = exports.setPDFNetworkStreamFactory = exports.PDFPageProxy = exports.PDFDocumentProxy = exports.PDFWorker = exports.PDFDataRangeTransport = exports.LoopbackPort = exports.getDocument = undefined;
-
-var _util = __w_pdfjs_require__(0);
-
-var _dom_utils = __w_pdfjs_require__(1);
-
-var _font_loader = __w_pdfjs_require__(14);
-
-var _canvas = __w_pdfjs_require__(15);
-
-var _global_scope = __w_pdfjs_require__(2);
-
-var _global_scope2 = _interopRequireDefault(_global_scope);
-
-var _worker_options = __w_pdfjs_require__(3);
-
-var _metadata = __w_pdfjs_require__(5);
-
-var _transport_stream = __w_pdfjs_require__(17);
-
-var _webgl = __w_pdfjs_require__(18);
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-var DEFAULT_RANGE_CHUNK_SIZE = 65536;
-let isWorkerDisabled = false;
-let workerSrc;
-const pdfjsFilePath = null;
-var fakeWorkerFilesLoader = null;
-var useRequireEnsure = false;
-;
-var createPDFNetworkStream;
-function setPDFNetworkStreamFactory(pdfNetworkStreamFactory) {
- createPDFNetworkStream = pdfNetworkStreamFactory;
-}
-function getDocument(src) {
- var task = new PDFDocumentLoadingTask();
- var source;
- if (typeof src === 'string') {
- source = { url: src };
- } else if ((0, _util.isArrayBuffer)(src)) {
- source = { data: src };
- } else if (src instanceof PDFDataRangeTransport) {
- source = { range: src };
- } else {
- if (typeof src !== 'object') {
- throw new Error('Invalid parameter in getDocument, ' + 'need either Uint8Array, string or a parameter object');
- }
- if (!src.url && !src.data && !src.range) {
- throw new Error('Invalid parameter object: need either .data, .range or .url');
- }
- source = src;
- }
- var params = {};
- var rangeTransport = null;
- let worker = null;
- var CMapReaderFactory = _dom_utils.DOMCMapReaderFactory;
- for (var key in source) {
- if (key === 'url' && typeof window !== 'undefined') {
- params[key] = new URL(source[key], window.location).href;
- continue;
- } else if (key === 'range') {
- rangeTransport = source[key];
- continue;
- } else if (key === 'worker') {
- worker = source[key];
- continue;
- } else if (key === 'data' && !(source[key] instanceof Uint8Array)) {
- var pdfBytes = source[key];
- if (typeof pdfBytes === 'string') {
- params[key] = (0, _util.stringToBytes)(pdfBytes);
- } else if (typeof pdfBytes === 'object' && pdfBytes !== null && !isNaN(pdfBytes.length)) {
- params[key] = new Uint8Array(pdfBytes);
- } else if ((0, _util.isArrayBuffer)(pdfBytes)) {
- params[key] = new Uint8Array(pdfBytes);
- } else {
- throw new Error('Invalid PDF binary data: either typed array, ' + 'string or array-like object is expected in the ' + 'data property.');
- }
- continue;
- } else if (key === 'CMapReaderFactory') {
- CMapReaderFactory = source[key];
- continue;
- }
- params[key] = source[key];
- }
- params.rangeChunkSize = params.rangeChunkSize || DEFAULT_RANGE_CHUNK_SIZE;
- params.ignoreErrors = params.stopAtErrors !== true;
- const nativeImageDecoderValues = Object.values(_util.NativeImageDecoding);
- if (params.nativeImageDecoderSupport === undefined || !nativeImageDecoderValues.includes(params.nativeImageDecoderSupport)) {
- params.nativeImageDecoderSupport = _util.NativeImageDecoding.DECODE;
- }
- (0, _util.setVerbosityLevel)(params.verbosity);
- if (!worker) {
- const workerParams = {
- postMessageTransfers: params.postMessageTransfers,
- verbosity: params.verbosity
- };
- let workerPort = _worker_options.GlobalWorkerOptions.workerPort;
- if (workerPort) {
- workerParams.port = workerPort;
- worker = PDFWorker.fromPort(workerParams);
- } else {
- worker = new PDFWorker(workerParams);
- }
- task._worker = worker;
- }
- var docId = task.docId;
- worker.promise.then(function () {
- if (task.destroyed) {
- throw new Error('Loading aborted');
- }
- return _fetchDocument(worker, params, rangeTransport, docId).then(function (workerId) {
- if (task.destroyed) {
- throw new Error('Loading aborted');
- }
- let networkStream;
- if (rangeTransport) {
- networkStream = new _transport_stream.PDFDataTransportStream(params, rangeTransport);
- } else if (!params.data) {
- networkStream = createPDFNetworkStream(params);
- }
- var messageHandler = new _util.MessageHandler(docId, workerId, worker.port);
- messageHandler.postMessageTransfers = worker.postMessageTransfers;
- var transport = new WorkerTransport(messageHandler, task, networkStream, CMapReaderFactory);
- task._transport = transport;
- messageHandler.send('Ready', null);
- });
- }).catch(task._capability.reject);
- return task;
-}
-function _fetchDocument(worker, source, pdfDataRangeTransport, docId) {
- if (worker.destroyed) {
- return Promise.reject(new Error('Worker was destroyed'));
- }
- let apiVersion = '2.0.402';
- source.disableRange = (0, _dom_utils.getDefaultSetting)('disableRange');
- source.disableAutoFetch = (0, _dom_utils.getDefaultSetting)('disableAutoFetch');
- source.disableStream = (0, _dom_utils.getDefaultSetting)('disableStream');
- if (pdfDataRangeTransport) {
- source.length = pdfDataRangeTransport.length;
- source.initialData = pdfDataRangeTransport.initialData;
- }
- return worker.messageHandler.sendWithPromise('GetDocRequest', {
- docId,
- apiVersion,
- source: {
- data: source.data,
- url: source.url,
- password: source.password,
- disableAutoFetch: source.disableAutoFetch,
- rangeChunkSize: source.rangeChunkSize,
- length: source.length
- },
- maxImageSize: (0, _dom_utils.getDefaultSetting)('maxImageSize'),
- disableFontFace: (0, _dom_utils.getDefaultSetting)('disableFontFace'),
- disableCreateObjectURL: (0, _dom_utils.getDefaultSetting)('disableCreateObjectURL'),
- postMessageTransfers: worker.postMessageTransfers,
- docBaseUrl: source.docBaseUrl,
- nativeImageDecoderSupport: source.nativeImageDecoderSupport,
- ignoreErrors: source.ignoreErrors,
- isEvalSupported: (0, _dom_utils.getDefaultSetting)('isEvalSupported')
- }).then(function (workerId) {
- if (worker.destroyed) {
- throw new Error('Worker was destroyed');
- }
- return workerId;
- });
-}
-var PDFDocumentLoadingTask = function PDFDocumentLoadingTaskClosure() {
- var nextDocumentId = 0;
- function PDFDocumentLoadingTask() {
- this._capability = (0, _util.createPromiseCapability)();
- this._transport = null;
- this._worker = null;
- this.docId = 'd' + nextDocumentId++;
- this.destroyed = false;
- this.onPassword = null;
- this.onProgress = null;
- this.onUnsupportedFeature = null;
- }
- PDFDocumentLoadingTask.prototype = {
- get promise() {
- return this._capability.promise;
- },
- destroy() {
- this.destroyed = true;
- var transportDestroyed = !this._transport ? Promise.resolve() : this._transport.destroy();
- return transportDestroyed.then(() => {
- this._transport = null;
- if (this._worker) {
- this._worker.destroy();
- this._worker = null;
- }
- });
- },
- then: function PDFDocumentLoadingTask_then(onFulfilled, onRejected) {
- return this.promise.then.apply(this.promise, arguments);
- }
- };
- return PDFDocumentLoadingTask;
-}();
-var PDFDataRangeTransport = function pdfDataRangeTransportClosure() {
- function PDFDataRangeTransport(length, initialData) {
- this.length = length;
- this.initialData = initialData;
- this._rangeListeners = [];
- this._progressListeners = [];
- this._progressiveReadListeners = [];
- this._readyCapability = (0, _util.createPromiseCapability)();
- }
- PDFDataRangeTransport.prototype = {
- addRangeListener: function PDFDataRangeTransport_addRangeListener(listener) {
- this._rangeListeners.push(listener);
- },
- addProgressListener: function PDFDataRangeTransport_addProgressListener(listener) {
- this._progressListeners.push(listener);
- },
- addProgressiveReadListener: function PDFDataRangeTransport_addProgressiveReadListener(listener) {
- this._progressiveReadListeners.push(listener);
- },
- onDataRange: function PDFDataRangeTransport_onDataRange(begin, chunk) {
- var listeners = this._rangeListeners;
- for (var i = 0, n = listeners.length; i < n; ++i) {
- listeners[i](begin, chunk);
- }
- },
- onDataProgress: function PDFDataRangeTransport_onDataProgress(loaded) {
- this._readyCapability.promise.then(() => {
- var listeners = this._progressListeners;
- for (var i = 0, n = listeners.length; i < n; ++i) {
- listeners[i](loaded);
- }
- });
- },
- onDataProgressiveRead: function PDFDataRangeTransport_onDataProgress(chunk) {
- this._readyCapability.promise.then(() => {
- var listeners = this._progressiveReadListeners;
- for (var i = 0, n = listeners.length; i < n; ++i) {
- listeners[i](chunk);
- }
- });
- },
- transportReady: function PDFDataRangeTransport_transportReady() {
- this._readyCapability.resolve();
- },
- requestDataRange: function PDFDataRangeTransport_requestDataRange(begin, end) {
- (0, _util.unreachable)('Abstract method PDFDataRangeTransport.requestDataRange');
- },
- abort: function PDFDataRangeTransport_abort() {}
- };
- return PDFDataRangeTransport;
-}();
-var PDFDocumentProxy = function PDFDocumentProxyClosure() {
- function PDFDocumentProxy(pdfInfo, transport, loadingTask) {
- this.pdfInfo = pdfInfo;
- this.transport = transport;
- this.loadingTask = loadingTask;
- }
- PDFDocumentProxy.prototype = {
- get numPages() {
- return this.pdfInfo.numPages;
- },
- get fingerprint() {
- return this.pdfInfo.fingerprint;
- },
- getPage(pageNumber) {
- return this.transport.getPage(pageNumber);
- },
- getPageIndex: function PDFDocumentProxy_getPageIndex(ref) {
- return this.transport.getPageIndex(ref);
- },
- getDestinations: function PDFDocumentProxy_getDestinations() {
- return this.transport.getDestinations();
- },
- getDestination: function PDFDocumentProxy_getDestination(id) {
- return this.transport.getDestination(id);
- },
- getPageLabels: function PDFDocumentProxy_getPageLabels() {
- return this.transport.getPageLabels();
- },
- getPageMode() {
- return this.transport.getPageMode();
- },
- getAttachments: function PDFDocumentProxy_getAttachments() {
- return this.transport.getAttachments();
- },
- getJavaScript() {
- return this.transport.getJavaScript();
- },
- getOutline: function PDFDocumentProxy_getOutline() {
- return this.transport.getOutline();
- },
- getMetadata: function PDFDocumentProxy_getMetadata() {
- return this.transport.getMetadata();
- },
- getData: function PDFDocumentProxy_getData() {
- return this.transport.getData();
- },
- getDownloadInfo: function PDFDocumentProxy_getDownloadInfo() {
- return this.transport.downloadInfoCapability.promise;
- },
- getStats: function PDFDocumentProxy_getStats() {
- return this.transport.getStats();
- },
- cleanup: function PDFDocumentProxy_cleanup() {
- this.transport.startCleanup();
- },
- destroy: function PDFDocumentProxy_destroy() {
- return this.loadingTask.destroy();
- }
- };
- return PDFDocumentProxy;
-}();
-var PDFPageProxy = function PDFPageProxyClosure() {
- function PDFPageProxy(pageIndex, pageInfo, transport) {
- this.pageIndex = pageIndex;
- this.pageInfo = pageInfo;
- this.transport = transport;
- this._stats = (0, _dom_utils.getDefaultSetting)('pdfBug') ? new _dom_utils.StatTimer() : _dom_utils.DummyStatTimer;
- this.commonObjs = transport.commonObjs;
- this.objs = new PDFObjects();
- this.cleanupAfterRender = false;
- this.pendingCleanup = false;
- this.intentStates = Object.create(null);
- this.destroyed = false;
- }
- PDFPageProxy.prototype = {
- get pageNumber() {
- return this.pageIndex + 1;
- },
- get rotate() {
- return this.pageInfo.rotate;
- },
- get ref() {
- return this.pageInfo.ref;
- },
- get userUnit() {
- return this.pageInfo.userUnit;
- },
- get view() {
- return this.pageInfo.view;
- },
- getViewport(scale, rotate = this.rotate, dontFlip = false) {
- return new _util.PageViewport(this.view, scale, rotate, 0, 0, dontFlip);
- },
- getAnnotations: function PDFPageProxy_getAnnotations(params) {
- var intent = params && params.intent || null;
- if (!this.annotationsPromise || this.annotationsIntent !== intent) {
- this.annotationsPromise = this.transport.getAnnotations(this.pageIndex, intent);
- this.annotationsIntent = intent;
- }
- return this.annotationsPromise;
- },
- render: function PDFPageProxy_render(params) {
- let stats = this._stats;
- stats.time('Overall');
- this.pendingCleanup = false;
- var renderingIntent = params.intent === 'print' ? 'print' : 'display';
- var canvasFactory = params.canvasFactory || new _dom_utils.DOMCanvasFactory();
- let webGLContext = new _webgl.WebGLContext({ enable: params.enableWebGL });
- if (!this.intentStates[renderingIntent]) {
- this.intentStates[renderingIntent] = Object.create(null);
- }
- var intentState = this.intentStates[renderingIntent];
- if (!intentState.displayReadyCapability) {
- intentState.receivingOperatorList = true;
- intentState.displayReadyCapability = (0, _util.createPromiseCapability)();
- intentState.operatorList = {
- fnArray: [],
- argsArray: [],
- lastChunk: false
- };
- stats.time('Page Request');
- this.transport.messageHandler.send('RenderPageRequest', {
- pageIndex: this.pageNumber - 1,
- intent: renderingIntent,
- renderInteractiveForms: params.renderInteractiveForms === true
- });
- }
- var complete = error => {
- var i = intentState.renderTasks.indexOf(internalRenderTask);
- if (i >= 0) {
- intentState.renderTasks.splice(i, 1);
- }
- if (this.cleanupAfterRender) {
- this.pendingCleanup = true;
- }
- this._tryCleanup();
- if (error) {
- internalRenderTask.capability.reject(error);
- } else {
- internalRenderTask.capability.resolve();
- }
- stats.timeEnd('Rendering');
- stats.timeEnd('Overall');
- };
- var internalRenderTask = new InternalRenderTask(complete, params, this.objs, this.commonObjs, intentState.operatorList, this.pageNumber, canvasFactory, webGLContext);
- internalRenderTask.useRequestAnimationFrame = renderingIntent !== 'print';
- if (!intentState.renderTasks) {
- intentState.renderTasks = [];
- }
- intentState.renderTasks.push(internalRenderTask);
- var renderTask = internalRenderTask.task;
- intentState.displayReadyCapability.promise.then(transparency => {
- if (this.pendingCleanup) {
- complete();
- return;
- }
- stats.time('Rendering');
- internalRenderTask.initializeGraphics(transparency);
- internalRenderTask.operatorListChanged();
- }).catch(complete);
- return renderTask;
- },
- getOperatorList: function PDFPageProxy_getOperatorList() {
- function operatorListChanged() {
- if (intentState.operatorList.lastChunk) {
- intentState.opListReadCapability.resolve(intentState.operatorList);
- var i = intentState.renderTasks.indexOf(opListTask);
- if (i >= 0) {
- intentState.renderTasks.splice(i, 1);
- }
- }
- }
- var renderingIntent = 'oplist';
- if (!this.intentStates[renderingIntent]) {
- this.intentStates[renderingIntent] = Object.create(null);
- }
- var intentState = this.intentStates[renderingIntent];
- var opListTask;
- if (!intentState.opListReadCapability) {
- opListTask = {};
- opListTask.operatorListChanged = operatorListChanged;
- intentState.receivingOperatorList = true;
- intentState.opListReadCapability = (0, _util.createPromiseCapability)();
- intentState.renderTasks = [];
- intentState.renderTasks.push(opListTask);
- intentState.operatorList = {
- fnArray: [],
- argsArray: [],
- lastChunk: false
- };
- this.transport.messageHandler.send('RenderPageRequest', {
- pageIndex: this.pageIndex,
- intent: renderingIntent
- });
- }
- return intentState.opListReadCapability.promise;
- },
- streamTextContent(params = {}) {
- const TEXT_CONTENT_CHUNK_SIZE = 100;
- return this.transport.messageHandler.sendWithStream('GetTextContent', {
- pageIndex: this.pageNumber - 1,
- normalizeWhitespace: params.normalizeWhitespace === true,
- combineTextItems: params.disableCombineTextItems !== true
- }, {
- highWaterMark: TEXT_CONTENT_CHUNK_SIZE,
- size(textContent) {
- return textContent.items.length;
- }
- });
- },
- getTextContent: function PDFPageProxy_getTextContent(params) {
- params = params || {};
- let readableStream = this.streamTextContent(params);
- return new Promise(function (resolve, reject) {
- function pump() {
- reader.read().then(function ({ value, done }) {
- if (done) {
- resolve(textContent);
- return;
- }
- _util.Util.extendObj(textContent.styles, value.styles);
- _util.Util.appendToArray(textContent.items, value.items);
- pump();
- }, reject);
- }
- let reader = readableStream.getReader();
- let textContent = {
- items: [],
- styles: Object.create(null)
- };
- pump();
- });
- },
- _destroy: function PDFPageProxy_destroy() {
- this.destroyed = true;
- this.transport.pageCache[this.pageIndex] = null;
- var waitOn = [];
- Object.keys(this.intentStates).forEach(function (intent) {
- if (intent === 'oplist') {
- return;
- }
- var intentState = this.intentStates[intent];
- intentState.renderTasks.forEach(function (renderTask) {
- var renderCompleted = renderTask.capability.promise.catch(function () {});
- waitOn.push(renderCompleted);
- renderTask.cancel();
- });
- }, this);
- this.objs.clear();
- this.annotationsPromise = null;
- this.pendingCleanup = false;
- return Promise.all(waitOn);
- },
- cleanup(resetStats = false) {
- this.pendingCleanup = true;
- this._tryCleanup(resetStats);
- },
- _tryCleanup(resetStats = false) {
- if (!this.pendingCleanup || Object.keys(this.intentStates).some(function (intent) {
- var intentState = this.intentStates[intent];
- return intentState.renderTasks.length !== 0 || intentState.receivingOperatorList;
- }, this)) {
- return;
- }
- Object.keys(this.intentStates).forEach(function (intent) {
- delete this.intentStates[intent];
- }, this);
- this.objs.clear();
- this.annotationsPromise = null;
- if (resetStats && this._stats instanceof _dom_utils.StatTimer) {
- this._stats = new _dom_utils.StatTimer();
- }
- this.pendingCleanup = false;
- },
- _startRenderPage: function PDFPageProxy_startRenderPage(transparency, intent) {
- var intentState = this.intentStates[intent];
- if (intentState.displayReadyCapability) {
- intentState.displayReadyCapability.resolve(transparency);
- }
- },
- _renderPageChunk: function PDFPageProxy_renderPageChunk(operatorListChunk, intent) {
- var intentState = this.intentStates[intent];
- var i, ii;
- for (i = 0, ii = operatorListChunk.length; i < ii; i++) {
- intentState.operatorList.fnArray.push(operatorListChunk.fnArray[i]);
- intentState.operatorList.argsArray.push(operatorListChunk.argsArray[i]);
- }
- intentState.operatorList.lastChunk = operatorListChunk.lastChunk;
- for (i = 0; i < intentState.renderTasks.length; i++) {
- intentState.renderTasks[i].operatorListChanged();
- }
- if (operatorListChunk.lastChunk) {
- intentState.receivingOperatorList = false;
- this._tryCleanup();
- }
- },
- get stats() {
- return this._stats instanceof _dom_utils.StatTimer ? this._stats : null;
- }
- };
- return PDFPageProxy;
-}();
-class LoopbackPort {
- constructor(defer) {
- this._listeners = [];
- this._defer = defer;
- this._deferred = Promise.resolve(undefined);
- }
- postMessage(obj, transfers) {
- function cloneValue(value) {
- if (typeof value !== 'object' || value === null) {
- return value;
- }
- if (cloned.has(value)) {
- return cloned.get(value);
- }
- var result;
- var buffer;
- if ((buffer = value.buffer) && (0, _util.isArrayBuffer)(buffer)) {
- var transferable = transfers && transfers.includes(buffer);
- if (value === buffer) {
- result = value;
- } else if (transferable) {
- result = new value.constructor(buffer, value.byteOffset, value.byteLength);
- } else {
- result = new value.constructor(value);
- }
- cloned.set(value, result);
- return result;
- }
- result = Array.isArray(value) ? [] : {};
- cloned.set(value, result);
- for (var i in value) {
- var desc,
- p = value;
- while (!(desc = Object.getOwnPropertyDescriptor(p, i))) {
- p = Object.getPrototypeOf(p);
- }
- if (typeof desc.value === 'undefined' || typeof desc.value === 'function') {
- continue;
- }
- result[i] = cloneValue(desc.value);
- }
- return result;
- }
- if (!this._defer) {
- this._listeners.forEach(function (listener) {
- listener.call(this, { data: obj });
- }, this);
- return;
- }
- var cloned = new WeakMap();
- var e = { data: cloneValue(obj) };
- this._deferred.then(() => {
- this._listeners.forEach(function (listener) {
- listener.call(this, e);
- }, this);
- });
- }
- addEventListener(name, listener) {
- this._listeners.push(listener);
- }
- removeEventListener(name, listener) {
- var i = this._listeners.indexOf(listener);
- this._listeners.splice(i, 1);
- }
- terminate() {
- this._listeners = [];
- }
-}
-var PDFWorker = function PDFWorkerClosure() {
- let nextFakeWorkerId = 0;
- function getWorkerSrc() {
- if (_worker_options.GlobalWorkerOptions.workerSrc) {
- return _worker_options.GlobalWorkerOptions.workerSrc;
- }
- if (typeof workerSrc !== 'undefined') {
- return workerSrc;
- }
- throw new Error('No "GlobalWorkerOptions.workerSrc" specified.');
- }
- function getMainThreadWorkerMessageHandler() {
- if (typeof window === 'undefined') {
- return null;
- }
- return window.pdfjsDistBuildPdfWorker && window.pdfjsDistBuildPdfWorker.WorkerMessageHandler;
- }
- let fakeWorkerFilesLoadedCapability;
- function setupFakeWorkerGlobal() {
- if (fakeWorkerFilesLoadedCapability) {
- return fakeWorkerFilesLoadedCapability.promise;
- }
- fakeWorkerFilesLoadedCapability = (0, _util.createPromiseCapability)();
- let mainWorkerMessageHandler = getMainThreadWorkerMessageHandler();
- if (mainWorkerMessageHandler) {
- fakeWorkerFilesLoadedCapability.resolve(mainWorkerMessageHandler);
- return fakeWorkerFilesLoadedCapability.promise;
- }
- let loader = fakeWorkerFilesLoader || function (callback) {
- _util.Util.loadScript(getWorkerSrc(), function () {
- callback(window.pdfjsDistBuildPdfWorker.WorkerMessageHandler);
- });
- };
- loader(fakeWorkerFilesLoadedCapability.resolve);
- return fakeWorkerFilesLoadedCapability.promise;
- }
- function createCDNWrapper(url) {
- var wrapper = 'importScripts(\'' + url + '\');';
- return URL.createObjectURL(new Blob([wrapper]));
- }
- let pdfWorkerPorts = new WeakMap();
- function PDFWorker({ name = null, port = null, postMessageTransfers = true, verbosity = null } = {}) {
- if (port && pdfWorkerPorts.has(port)) {
- throw new Error('Cannot use more than one PDFWorker per port');
- }
- this.name = name;
- this.destroyed = false;
- this.postMessageTransfers = postMessageTransfers !== false;
- this.verbosity = (0, _util.isNum)(verbosity) ? verbosity : (0, _util.getVerbosityLevel)();
- this._readyCapability = (0, _util.createPromiseCapability)();
- this._port = null;
- this._webWorker = null;
- this._messageHandler = null;
- if (port) {
- pdfWorkerPorts.set(port, this);
- this._initializeFromPort(port);
- return;
- }
- this._initialize();
- }
- PDFWorker.prototype = {
- get promise() {
- return this._readyCapability.promise;
- },
- get port() {
- return this._port;
- },
- get messageHandler() {
- return this._messageHandler;
- },
- _initializeFromPort: function PDFWorker_initializeFromPort(port) {
- this._port = port;
- this._messageHandler = new _util.MessageHandler('main', 'worker', port);
- this._messageHandler.on('ready', function () {});
- this._readyCapability.resolve();
- },
- _initialize: function PDFWorker_initialize() {
- if (typeof Worker !== 'undefined' && !isWorkerDisabled && !getMainThreadWorkerMessageHandler()) {
- var workerSrc = getWorkerSrc();
- try {
- var worker = new Worker(workerSrc);
- var messageHandler = new _util.MessageHandler('main', 'worker', worker);
- var terminateEarly = () => {
- worker.removeEventListener('error', onWorkerError);
- messageHandler.destroy();
- worker.terminate();
- if (this.destroyed) {
- this._readyCapability.reject(new Error('Worker was destroyed'));
- } else {
- this._setupFakeWorker();
- }
- };
- var onWorkerError = () => {
- if (!this._webWorker) {
- terminateEarly();
- }
- };
- worker.addEventListener('error', onWorkerError);
- messageHandler.on('test', data => {
- worker.removeEventListener('error', onWorkerError);
- if (this.destroyed) {
- terminateEarly();
- return;
- }
- var supportTypedArray = data && data.supportTypedArray;
- if (supportTypedArray) {
- this._messageHandler = messageHandler;
- this._port = worker;
- this._webWorker = worker;
- if (!data.supportTransfers) {
- this.postMessageTransfers = false;
- }
- this._readyCapability.resolve();
- messageHandler.send('configure', { verbosity: this.verbosity });
- } else {
- this._setupFakeWorker();
- messageHandler.destroy();
- worker.terminate();
- }
- });
- messageHandler.on('ready', data => {
- worker.removeEventListener('error', onWorkerError);
- if (this.destroyed) {
- terminateEarly();
- return;
- }
- try {
- sendTest();
- } catch (e) {
- this._setupFakeWorker();
- }
- });
- const sendTest = () => {
- let testObj = new Uint8Array([this.postMessageTransfers ? 255 : 0]);
- try {
- messageHandler.send('test', testObj, [testObj.buffer]);
- } catch (ex) {
- (0, _util.info)('Cannot use postMessage transfers');
- testObj[0] = 0;
- messageHandler.send('test', testObj);
- }
- };
- sendTest();
- return;
- } catch (e) {
- (0, _util.info)('The worker has been disabled.');
- }
- }
- this._setupFakeWorker();
- },
- _setupFakeWorker: function PDFWorker_setupFakeWorker() {
- if (!isWorkerDisabled) {
- (0, _util.warn)('Setting up fake worker.');
- isWorkerDisabled = true;
- }
- setupFakeWorkerGlobal().then(WorkerMessageHandler => {
- if (this.destroyed) {
- this._readyCapability.reject(new Error('Worker was destroyed'));
- return;
- }
- var isTypedArraysPresent = Uint8Array !== Float32Array;
- var port = new LoopbackPort(isTypedArraysPresent);
- this._port = port;
- var id = 'fake' + nextFakeWorkerId++;
- var workerHandler = new _util.MessageHandler(id + '_worker', id, port);
- WorkerMessageHandler.setup(workerHandler, port);
- var messageHandler = new _util.MessageHandler(id, id + '_worker', port);
- this._messageHandler = messageHandler;
- this._readyCapability.resolve();
- });
- },
- destroy: function PDFWorker_destroy() {
- this.destroyed = true;
- if (this._webWorker) {
- this._webWorker.terminate();
- this._webWorker = null;
- }
- pdfWorkerPorts.delete(this._port);
- this._port = null;
- if (this._messageHandler) {
- this._messageHandler.destroy();
- this._messageHandler = null;
- }
- }
- };
- PDFWorker.fromPort = function (params) {
- if (pdfWorkerPorts.has(params.port)) {
- return pdfWorkerPorts.get(params.port);
- }
- return new PDFWorker(params);
- };
- PDFWorker.getWorkerSrc = function () {
- return getWorkerSrc();
- };
- return PDFWorker;
-}();
-var WorkerTransport = function WorkerTransportClosure() {
- function WorkerTransport(messageHandler, loadingTask, networkStream, CMapReaderFactory) {
- this.messageHandler = messageHandler;
- this.loadingTask = loadingTask;
- this.commonObjs = new PDFObjects();
- this.fontLoader = new _font_loader.FontLoader(loadingTask.docId);
- this.CMapReaderFactory = new CMapReaderFactory({
- baseUrl: (0, _dom_utils.getDefaultSetting)('cMapUrl'),
- isCompressed: (0, _dom_utils.getDefaultSetting)('cMapPacked')
- });
- this.destroyed = false;
- this.destroyCapability = null;
- this._passwordCapability = null;
- this._networkStream = networkStream;
- this._fullReader = null;
- this._lastProgress = null;
- this.pageCache = [];
- this.pagePromises = [];
- this.downloadInfoCapability = (0, _util.createPromiseCapability)();
- this.setupMessageHandler();
- }
- WorkerTransport.prototype = {
- destroy: function WorkerTransport_destroy() {
- if (this.destroyCapability) {
- return this.destroyCapability.promise;
- }
- this.destroyed = true;
- this.destroyCapability = (0, _util.createPromiseCapability)();
- if (this._passwordCapability) {
- this._passwordCapability.reject(new Error('Worker was destroyed during onPassword callback'));
- }
- var waitOn = [];
- this.pageCache.forEach(function (page) {
- if (page) {
- waitOn.push(page._destroy());
- }
- });
- this.pageCache = [];
- this.pagePromises = [];
- var terminated = this.messageHandler.sendWithPromise('Terminate', null);
- waitOn.push(terminated);
- Promise.all(waitOn).then(() => {
- this.fontLoader.clear();
- if (this._networkStream) {
- this._networkStream.cancelAllRequests();
- }
- if (this.messageHandler) {
- this.messageHandler.destroy();
- this.messageHandler = null;
- }
- this.destroyCapability.resolve();
- }, this.destroyCapability.reject);
- return this.destroyCapability.promise;
- },
- setupMessageHandler: function WorkerTransport_setupMessageHandler() {
- var messageHandler = this.messageHandler;
- var loadingTask = this.loadingTask;
- messageHandler.on('GetReader', function (data, sink) {
- (0, _util.assert)(this._networkStream);
- this._fullReader = this._networkStream.getFullReader();
- this._fullReader.onProgress = evt => {
- this._lastProgress = {
- loaded: evt.loaded,
- total: evt.total
- };
- };
- sink.onPull = () => {
- this._fullReader.read().then(function ({ value, done }) {
- if (done) {
- sink.close();
- return;
- }
- (0, _util.assert)((0, _util.isArrayBuffer)(value));
- sink.enqueue(new Uint8Array(value), 1, [value]);
- }).catch(reason => {
- sink.error(reason);
- });
- };
- sink.onCancel = reason => {
- this._fullReader.cancel(reason);
- };
- }, this);
- messageHandler.on('ReaderHeadersReady', function (data) {
- let headersCapability = (0, _util.createPromiseCapability)();
- let fullReader = this._fullReader;
- fullReader.headersReady.then(() => {
- if (!fullReader.isStreamingSupported || !fullReader.isRangeSupported) {
- if (this._lastProgress) {
- let loadingTask = this.loadingTask;
- if (loadingTask.onProgress) {
- loadingTask.onProgress(this._lastProgress);
- }
- }
- fullReader.onProgress = evt => {
- let loadingTask = this.loadingTask;
- if (loadingTask.onProgress) {
- loadingTask.onProgress({
- loaded: evt.loaded,
- total: evt.total
- });
- }
- };
- }
- headersCapability.resolve({
- isStreamingSupported: fullReader.isStreamingSupported,
- isRangeSupported: fullReader.isRangeSupported,
- contentLength: fullReader.contentLength
- });
- }, headersCapability.reject);
- return headersCapability.promise;
- }, this);
- messageHandler.on('GetRangeReader', function (data, sink) {
- (0, _util.assert)(this._networkStream);
- let _rangeReader = this._networkStream.getRangeReader(data.begin, data.end);
- sink.onPull = () => {
- _rangeReader.read().then(function ({ value, done }) {
- if (done) {
- sink.close();
- return;
- }
- (0, _util.assert)((0, _util.isArrayBuffer)(value));
- sink.enqueue(new Uint8Array(value), 1, [value]);
- }).catch(reason => {
- sink.error(reason);
- });
- };
- sink.onCancel = reason => {
- _rangeReader.cancel(reason);
- };
- }, this);
- messageHandler.on('GetDoc', function transportDoc({ pdfInfo }) {
- this.numPages = pdfInfo.numPages;
- var loadingTask = this.loadingTask;
- var pdfDocument = new PDFDocumentProxy(pdfInfo, this, loadingTask);
- this.pdfDocument = pdfDocument;
- loadingTask._capability.resolve(pdfDocument);
- }, this);
- messageHandler.on('PasswordRequest', function transportPasswordRequest(exception) {
- this._passwordCapability = (0, _util.createPromiseCapability)();
- if (loadingTask.onPassword) {
- var updatePassword = password => {
- this._passwordCapability.resolve({ password });
- };
- loadingTask.onPassword(updatePassword, exception.code);
- } else {
- 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 _util.PasswordException(exception.message, exception.code));
- }, this);
- messageHandler.on('InvalidPDF', function transportInvalidPDF(exception) {
- this.loadingTask._capability.reject(new _util.InvalidPDFException(exception.message));
- }, this);
- messageHandler.on('MissingPDF', function transportMissingPDF(exception) {
- this.loadingTask._capability.reject(new _util.MissingPDFException(exception.message));
- }, this);
- messageHandler.on('UnexpectedResponse', function transportUnexpectedResponse(exception) {
- this.loadingTask._capability.reject(new _util.UnexpectedResponseException(exception.message, exception.status));
- }, this);
- messageHandler.on('UnknownError', function transportUnknownError(exception) {
- this.loadingTask._capability.reject(new _util.UnknownErrorException(exception.message, exception.details));
- }, this);
- messageHandler.on('DataLoaded', function transportPage(data) {
- this.downloadInfoCapability.resolve(data);
- }, this);
- messageHandler.on('PDFManagerReady', function transportPage(data) {}, this);
- messageHandler.on('StartRenderPage', function transportRender(data) {
- if (this.destroyed) {
- return;
- }
- var page = this.pageCache[data.pageIndex];
- page._stats.timeEnd('Page Request');
- page._startRenderPage(data.transparency, data.intent);
- }, this);
- messageHandler.on('RenderPageChunk', function transportRender(data) {
- if (this.destroyed) {
- return;
- }
- var page = this.pageCache[data.pageIndex];
- page._renderPageChunk(data.operatorList, data.intent);
- }, this);
- messageHandler.on('commonobj', function transportObj(data) {
- if (this.destroyed) {
- return;
- }
- var id = data[0];
- var type = data[1];
- if (this.commonObjs.hasData(id)) {
- return;
- }
- switch (type) {
- case 'Font':
- var exportedData = data[2];
- if ('error' in exportedData) {
- var exportedError = exportedData.error;
- (0, _util.warn)('Error during font loading: ' + exportedError);
- this.commonObjs.resolve(id, exportedError);
- break;
- }
- var fontRegistry = null;
- if ((0, _dom_utils.getDefaultSetting)('pdfBug') && _global_scope2.default.FontInspector && _global_scope2.default['FontInspector'].enabled) {
- fontRegistry = {
- registerFont(font, url) {
- _global_scope2.default['FontInspector'].fontAdded(font, url);
- }
- };
- }
- var font = new _font_loader.FontFaceObject(exportedData, {
- isEvalSupported: (0, _dom_utils.getDefaultSetting)('isEvalSupported'),
- disableFontFace: (0, _dom_utils.getDefaultSetting)('disableFontFace'),
- fontRegistry
- });
- var fontReady = fontObjs => {
- this.commonObjs.resolve(id, font);
- };
- this.fontLoader.bind([font], fontReady);
- break;
- case 'FontPath':
- this.commonObjs.resolve(id, data[2]);
- break;
- default:
- throw new Error(`Got unknown common object type ${type}`);
- }
- }, this);
- messageHandler.on('obj', function transportObj(data) {
- if (this.destroyed) {
- return;
- }
- var id = data[0];
- var pageIndex = data[1];
- var type = data[2];
- var pageProxy = this.pageCache[pageIndex];
- var imageData;
- if (pageProxy.objs.hasData(id)) {
- return;
- }
- switch (type) {
- case 'JpegStream':
- imageData = data[3];
- return new Promise((resolve, reject) => {
- const img = new Image();
- img.onload = function () {
- resolve(img);
- };
- img.onerror = function () {
- reject(new Error('Error during JPEG image loading'));
- };
- img.src = imageData;
- }).then(img => {
- pageProxy.objs.resolve(id, img);
- });
- case 'Image':
- imageData = data[3];
- pageProxy.objs.resolve(id, imageData);
- var MAX_IMAGE_SIZE_TO_STORE = 8000000;
- if (imageData && 'data' in imageData && imageData.data.length > MAX_IMAGE_SIZE_TO_STORE) {
- pageProxy.cleanupAfterRender = true;
- }
- break;
- default:
- throw new Error(`Got unknown object type ${type}`);
- }
- }, this);
- messageHandler.on('DocProgress', function transportDocProgress(data) {
- if (this.destroyed) {
- return;
- }
- var loadingTask = this.loadingTask;
- if (loadingTask.onProgress) {
- loadingTask.onProgress({
- loaded: data.loaded,
- total: data.total
- });
- }
- }, this);
- messageHandler.on('PageError', function transportError(data) {
- if (this.destroyed) {
- return;
- }
- var page = this.pageCache[data.pageNum - 1];
- var intentState = page.intentStates[data.intent];
- if (intentState.displayReadyCapability) {
- intentState.displayReadyCapability.reject(data.error);
- } else {
- throw new Error(data.error);
- }
- if (intentState.operatorList) {
- intentState.operatorList.lastChunk = true;
- for (var i = 0; i < intentState.renderTasks.length; i++) {
- intentState.renderTasks[i].operatorListChanged();
- }
- }
- }, this);
- messageHandler.on('UnsupportedFeature', function (data) {
- if (this.destroyed) {
- return;
- }
- let loadingTask = this.loadingTask;
- if (loadingTask.onUnsupportedFeature) {
- loadingTask.onUnsupportedFeature(data.featureId);
- }
- }, this);
- messageHandler.on('JpegDecode', function (data) {
- if (this.destroyed) {
- return Promise.reject(new Error('Worker was destroyed'));
- }
- if (typeof document === 'undefined') {
- return Promise.reject(new Error('"document" is not defined.'));
- }
- var imageUrl = data[0];
- var components = data[1];
- if (components !== 3 && components !== 1) {
- return Promise.reject(new Error('Only 3 components or 1 component can be returned'));
- }
- return new Promise(function (resolve, reject) {
- var img = new Image();
- img.onload = function () {
- var width = img.width;
- var height = img.height;
- var size = width * height;
- var rgbaLength = size * 4;
- var buf = new Uint8Array(size * components);
- var tmpCanvas = document.createElement('canvas');
- tmpCanvas.width = width;
- tmpCanvas.height = height;
- var tmpCtx = tmpCanvas.getContext('2d');
- tmpCtx.drawImage(img, 0, 0);
- var data = tmpCtx.getImageData(0, 0, width, height).data;
- var i, j;
- if (components === 3) {
- for (i = 0, j = 0; i < rgbaLength; i += 4, j += 3) {
- buf[j] = data[i];
- buf[j + 1] = data[i + 1];
- buf[j + 2] = data[i + 2];
- }
- } else if (components === 1) {
- for (i = 0, j = 0; i < rgbaLength; i += 4, j++) {
- buf[j] = data[i];
- }
- }
- resolve({
- data: buf,
- width,
- height
- });
- };
- img.onerror = function () {
- reject(new Error('JpegDecode failed to load image'));
- };
- img.src = imageUrl;
- });
- }, this);
- messageHandler.on('FetchBuiltInCMap', function (data) {
- if (this.destroyed) {
- return Promise.reject(new Error('Worker was destroyed'));
- }
- return this.CMapReaderFactory.fetch({ name: data.name });
- }, this);
- },
- getData: function WorkerTransport_getData() {
- return this.messageHandler.sendWithPromise('GetData', null);
- },
- getPage(pageNumber) {
- if (!Number.isInteger(pageNumber) || pageNumber <= 0 || pageNumber > this.numPages) {
- return Promise.reject(new Error('Invalid page request'));
- }
- var pageIndex = pageNumber - 1;
- if (pageIndex in this.pagePromises) {
- return this.pagePromises[pageIndex];
- }
- var promise = this.messageHandler.sendWithPromise('GetPage', { pageIndex }).then(pageInfo => {
- if (this.destroyed) {
- throw new Error('Transport destroyed');
- }
- var page = new PDFPageProxy(pageIndex, pageInfo, this);
- this.pageCache[pageIndex] = page;
- return page;
- });
- this.pagePromises[pageIndex] = promise;
- return promise;
- },
- getPageIndex: function WorkerTransport_getPageIndexByRef(ref) {
- return this.messageHandler.sendWithPromise('GetPageIndex', { ref }).catch(function (reason) {
- return Promise.reject(new Error(reason));
- });
- },
- getAnnotations: function WorkerTransport_getAnnotations(pageIndex, intent) {
- return this.messageHandler.sendWithPromise('GetAnnotations', {
- pageIndex,
- intent
- });
- },
- getDestinations: function WorkerTransport_getDestinations() {
- return this.messageHandler.sendWithPromise('GetDestinations', null);
- },
- getDestination: function WorkerTransport_getDestination(id) {
- return this.messageHandler.sendWithPromise('GetDestination', { id });
- },
- getPageLabels: function WorkerTransport_getPageLabels() {
- return this.messageHandler.sendWithPromise('GetPageLabels', null);
- },
- getPageMode() {
- return this.messageHandler.sendWithPromise('GetPageMode', null);
- },
- getAttachments: function WorkerTransport_getAttachments() {
- return this.messageHandler.sendWithPromise('GetAttachments', null);
- },
- getJavaScript: function WorkerTransport_getJavaScript() {
- return this.messageHandler.sendWithPromise('GetJavaScript', null);
- },
- getOutline: function WorkerTransport_getOutline() {
- return this.messageHandler.sendWithPromise('GetOutline', null);
- },
- getMetadata: function WorkerTransport_getMetadata() {
- return this.messageHandler.sendWithPromise('GetMetadata', null).then(results => {
- return {
- info: results[0],
- metadata: results[1] ? new _metadata.Metadata(results[1]) : null,
- contentDispositionFilename: this._fullReader ? this._fullReader.filename : null
- };
- });
- },
- getStats: function WorkerTransport_getStats() {
- return this.messageHandler.sendWithPromise('GetStats', null);
- },
- startCleanup: function WorkerTransport_startCleanup() {
- this.messageHandler.sendWithPromise('Cleanup', null).then(() => {
- for (var i = 0, ii = this.pageCache.length; i < ii; i++) {
- var page = this.pageCache[i];
- if (page) {
- page.cleanup();
- }
- }
- this.commonObjs.clear();
- this.fontLoader.clear();
- });
- }
- };
- return WorkerTransport;
-}();
-var PDFObjects = function PDFObjectsClosure() {
- function PDFObjects() {
- this.objs = Object.create(null);
- }
- PDFObjects.prototype = {
- ensureObj: function PDFObjects_ensureObj(objId) {
- if (this.objs[objId]) {
- return this.objs[objId];
- }
- var obj = {
- capability: (0, _util.createPromiseCapability)(),
- data: null,
- resolved: false
- };
- this.objs[objId] = obj;
- return obj;
- },
- get: function PDFObjects_get(objId, callback) {
- if (callback) {
- this.ensureObj(objId).capability.promise.then(callback);
- return null;
- }
- var obj = this.objs[objId];
- if (!obj || !obj.resolved) {
- throw new Error(`Requesting object that isn't resolved yet ${objId}`);
- }
- return obj.data;
- },
- resolve: function PDFObjects_resolve(objId, data) {
- var obj = this.ensureObj(objId);
- obj.resolved = true;
- obj.data = data;
- obj.capability.resolve(data);
- },
- isResolved: function PDFObjects_isResolved(objId) {
- var objs = this.objs;
- if (!objs[objId]) {
- return false;
- }
- return objs[objId].resolved;
- },
- hasData: function PDFObjects_hasData(objId) {
- return this.isResolved(objId);
- },
- getData: function PDFObjects_getData(objId) {
- var objs = this.objs;
- if (!objs[objId] || !objs[objId].resolved) {
- return null;
- }
- return objs[objId].data;
- },
- clear: function PDFObjects_clear() {
- this.objs = Object.create(null);
- }
- };
- return PDFObjects;
-}();
-var RenderTask = function RenderTaskClosure() {
- function RenderTask(internalRenderTask) {
- this._internalRenderTask = internalRenderTask;
- this.onContinue = null;
- }
- RenderTask.prototype = {
- get promise() {
- return this._internalRenderTask.capability.promise;
- },
- cancel: function RenderTask_cancel() {
- this._internalRenderTask.cancel();
- },
- then: function RenderTask_then(onFulfilled, onRejected) {
- return this.promise.then.apply(this.promise, arguments);
- }
- };
- return RenderTask;
-}();
-var InternalRenderTask = function InternalRenderTaskClosure() {
- let canvasInRendering = new WeakMap();
- function InternalRenderTask(callback, params, objs, commonObjs, operatorList, pageNumber, canvasFactory, webGLContext) {
- this.callback = callback;
- this.params = params;
- this.objs = objs;
- this.commonObjs = commonObjs;
- this.operatorListIdx = null;
- this.operatorList = operatorList;
- this.pageNumber = pageNumber;
- this.canvasFactory = canvasFactory;
- this.webGLContext = webGLContext;
- this.running = false;
- this.graphicsReadyCallback = null;
- this.graphicsReady = false;
- this.useRequestAnimationFrame = false;
- this.cancelled = false;
- this.capability = (0, _util.createPromiseCapability)();
- this.task = new RenderTask(this);
- this._continueBound = this._continue.bind(this);
- this._scheduleNextBound = this._scheduleNext.bind(this);
- this._nextBound = this._next.bind(this);
- this._canvas = params.canvasContext.canvas;
- }
- InternalRenderTask.prototype = {
- initializeGraphics: function InternalRenderTask_initializeGraphics(transparency) {
- if (this._canvas) {
- if (canvasInRendering.has(this._canvas)) {
- throw new Error('Cannot use the same canvas during multiple render() operations. ' + 'Use different canvas or ensure previous operations were ' + 'cancelled or completed.');
- }
- canvasInRendering.set(this._canvas, this);
- }
- if (this.cancelled) {
- return;
- }
- if ((0, _dom_utils.getDefaultSetting)('pdfBug') && _global_scope2.default.StepperManager && _global_scope2.default.StepperManager.enabled) {
- this.stepper = _global_scope2.default.StepperManager.create(this.pageNumber - 1);
- this.stepper.init(this.operatorList);
- this.stepper.nextBreakPoint = this.stepper.getNextBreakPoint();
- }
- var params = this.params;
- this.gfx = new _canvas.CanvasGraphics(params.canvasContext, this.commonObjs, this.objs, this.canvasFactory, this.webGLContext, params.imageLayer);
- this.gfx.beginDrawing({
- transform: params.transform,
- viewport: params.viewport,
- transparency,
- background: params.background
- });
- this.operatorListIdx = 0;
- this.graphicsReady = true;
- if (this.graphicsReadyCallback) {
- this.graphicsReadyCallback();
- }
- },
- cancel: function InternalRenderTask_cancel() {
- this.running = false;
- this.cancelled = true;
- if (this._canvas) {
- canvasInRendering.delete(this._canvas);
- }
- this.callback(new _dom_utils.RenderingCancelledException('Rendering cancelled, page ' + this.pageNumber, 'canvas'));
- },
- operatorListChanged: function InternalRenderTask_operatorListChanged() {
- if (!this.graphicsReady) {
- if (!this.graphicsReadyCallback) {
- this.graphicsReadyCallback = this._continueBound;
- }
- return;
- }
- if (this.stepper) {
- this.stepper.updateOperatorList(this.operatorList);
- }
- if (this.running) {
- return;
- }
- this._continue();
- },
- _continue: function InternalRenderTask__continue() {
- this.running = true;
- if (this.cancelled) {
- return;
- }
- if (this.task.onContinue) {
- this.task.onContinue(this._scheduleNextBound);
- } else {
- this._scheduleNext();
- }
- },
- _scheduleNext: function InternalRenderTask__scheduleNext() {
- if (this.useRequestAnimationFrame && typeof window !== 'undefined') {
- window.requestAnimationFrame(this._nextBound);
- } else {
- Promise.resolve(undefined).then(this._nextBound);
- }
- },
- _next: function InternalRenderTask__next() {
- if (this.cancelled) {
- return;
- }
- this.operatorListIdx = this.gfx.executeOperatorList(this.operatorList, this.operatorListIdx, this._continueBound, this.stepper);
- if (this.operatorListIdx === this.operatorList.argsArray.length) {
- this.running = false;
- if (this.operatorList.lastChunk) {
- this.gfx.endDrawing();
- if (this._canvas) {
- canvasInRendering.delete(this._canvas);
- }
- this.callback();
- }
- }
- }
- };
- return InternalRenderTask;
-}();
-var version, build;
-{
- exports.version = version = '2.0.402';
- exports.build = build = '401f3a9d';
-}
-exports.getDocument = getDocument;
-exports.LoopbackPort = LoopbackPort;
-exports.PDFDataRangeTransport = PDFDataRangeTransport;
-exports.PDFWorker = PDFWorker;
-exports.PDFDocumentProxy = PDFDocumentProxy;
-exports.PDFPageProxy = PDFPageProxy;
-exports.setPDFNetworkStreamFactory = setPDFNetworkStreamFactory;
-exports.version = version;
-exports.build = build;
+const GlobalWorkerOptions = Object.create(null);
+GlobalWorkerOptions.workerPort = GlobalWorkerOptions.workerPort === undefined ? null : GlobalWorkerOptions.workerPort;
+GlobalWorkerOptions.workerSrc = GlobalWorkerOptions.workerSrc === undefined ? '' : GlobalWorkerOptions.workerSrc;
+exports.GlobalWorkerOptions = GlobalWorkerOptions;
/***/ }),
/* 5 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.Metadata = undefined;
-
-var _util = __w_pdfjs_require__(0);
-
-var _dom_utils = __w_pdfjs_require__(1);
-
-class Metadata {
- constructor(data) {
- (0, _util.assert)(typeof data === 'string', 'Metadata: input is not a string');
- data = this._repair(data);
- let parser = new _dom_utils.SimpleXMLParser();
- data = parser.parseFromString(data);
- this._metadata = Object.create(null);
- this._parse(data);
- }
- _repair(data) {
- return data.replace(/>\\376\\377([^<]+)/g, function (all, codes) {
- let bytes = codes.replace(/\\([0-3])([0-7])([0-7])/g, function (code, d1, d2, d3) {
- return String.fromCharCode(d1 * 64 + d2 * 8 + d3 * 1);
- }).replace(/&(amp|apos|gt|lt|quot);/g, function (str, name) {
- switch (name) {
- case 'amp':
- return '&';
- case 'apos':
- return '\'';
- case 'gt':
- return '>';
- case 'lt':
- return '<';
- case 'quot':
- return '\"';
- }
- throw new Error(`_repair: ${name} isn't defined.`);
- });
- let chars = '';
- for (let i = 0, ii = bytes.length; i < ii; i += 2) {
- let code = bytes.charCodeAt(i) * 256 + bytes.charCodeAt(i + 1);
- if (code >= 32 && code < 127 && code !== 60 && code !== 62 && code !== 38) {
- chars += String.fromCharCode(code);
- } else {
- chars += '&#x' + (0x10000 + code).toString(16).substring(1) + ';';
- }
- }
- return '>' + chars;
- });
- }
- _parse(domDocument) {
- let rdf = domDocument.documentElement;
- if (rdf.nodeName.toLowerCase() !== 'rdf:rdf') {
- rdf = rdf.firstChild;
- while (rdf && rdf.nodeName.toLowerCase() !== 'rdf:rdf') {
- rdf = rdf.nextSibling;
- }
- }
- let nodeName = rdf ? rdf.nodeName.toLowerCase() : null;
- if (!rdf || nodeName !== 'rdf:rdf' || !rdf.hasChildNodes()) {
- return;
- }
- let children = rdf.childNodes;
- for (let i = 0, ii = children.length; i < ii; i++) {
- let desc = children[i];
- if (desc.nodeName.toLowerCase() !== 'rdf:description') {
- continue;
- }
- for (let j = 0, jj = desc.childNodes.length; j < jj; j++) {
- if (desc.childNodes[j].nodeName.toLowerCase() !== '#text') {
- let entry = desc.childNodes[j];
- let name = entry.nodeName.toLowerCase();
- this._metadata[name] = entry.textContent.trim();
- }
- }
- }
- }
- get(name) {
- return this._metadata[name] || null;
- }
- getAll() {
- return this._metadata;
- }
- has(name) {
- return typeof this._metadata[name] !== 'undefined';
- }
-}
-exports.Metadata = Metadata;
-
-/***/ }),
-/* 6 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
-
-"use strict";
-
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.AnnotationLayer = undefined;
-
-var _dom_utils = __w_pdfjs_require__(1);
-
-var _util = __w_pdfjs_require__(0);
-
-class AnnotationElementFactory {
- static create(parameters) {
- let subtype = parameters.data.annotationType;
- switch (subtype) {
- case _util.AnnotationType.LINK:
- return new LinkAnnotationElement(parameters);
- case _util.AnnotationType.TEXT:
- return new TextAnnotationElement(parameters);
- case _util.AnnotationType.WIDGET:
- let fieldType = parameters.data.fieldType;
- switch (fieldType) {
- case 'Tx':
- return new TextWidgetAnnotationElement(parameters);
- case 'Btn':
- if (parameters.data.radioButton) {
- return new RadioButtonWidgetAnnotationElement(parameters);
- } else if (parameters.data.checkBox) {
- return new CheckboxWidgetAnnotationElement(parameters);
- }
- return new PushButtonWidgetAnnotationElement(parameters);
- case 'Ch':
- return new ChoiceWidgetAnnotationElement(parameters);
- }
- return new WidgetAnnotationElement(parameters);
- case _util.AnnotationType.POPUP:
- return new PopupAnnotationElement(parameters);
- case _util.AnnotationType.LINE:
- return new LineAnnotationElement(parameters);
- case _util.AnnotationType.SQUARE:
- return new SquareAnnotationElement(parameters);
- case _util.AnnotationType.CIRCLE:
- return new CircleAnnotationElement(parameters);
- case _util.AnnotationType.POLYLINE:
- return new PolylineAnnotationElement(parameters);
- case _util.AnnotationType.POLYGON:
- return new PolygonAnnotationElement(parameters);
- case _util.AnnotationType.HIGHLIGHT:
- return new HighlightAnnotationElement(parameters);
- case _util.AnnotationType.UNDERLINE:
- return new UnderlineAnnotationElement(parameters);
- case _util.AnnotationType.SQUIGGLY:
- return new SquigglyAnnotationElement(parameters);
- case _util.AnnotationType.STRIKEOUT:
- return new StrikeOutAnnotationElement(parameters);
- case _util.AnnotationType.STAMP:
- return new StampAnnotationElement(parameters);
- case _util.AnnotationType.FILEATTACHMENT:
- return new FileAttachmentAnnotationElement(parameters);
- default:
- return new AnnotationElement(parameters);
- }
- }
-}
-class AnnotationElement {
- constructor(parameters, isRenderable = false, ignoreBorder = false) {
- this.isRenderable = isRenderable;
- this.data = parameters.data;
- this.layer = parameters.layer;
- this.page = parameters.page;
- this.viewport = parameters.viewport;
- this.linkService = parameters.linkService;
- this.downloadManager = parameters.downloadManager;
- this.imageResourcesPath = parameters.imageResourcesPath;
- this.renderInteractiveForms = parameters.renderInteractiveForms;
- this.svgFactory = parameters.svgFactory;
- if (isRenderable) {
- this.container = this._createContainer(ignoreBorder);
- }
- }
- _createContainer(ignoreBorder = false) {
- let data = this.data,
- page = this.page,
- viewport = this.viewport;
- let container = document.createElement('section');
- let width = data.rect[2] - data.rect[0];
- let height = data.rect[3] - data.rect[1];
- container.setAttribute('data-annotation-id', data.id);
- let 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]]);
- container.style.transform = 'matrix(' + viewport.transform.join(',') + ')';
- container.style.transformOrigin = -rect[0] + 'px ' + -rect[1] + 'px';
- if (!ignoreBorder && data.borderStyle.width > 0) {
- container.style.borderWidth = data.borderStyle.width + 'px';
- if (data.borderStyle.style !== _util.AnnotationBorderStyleType.UNDERLINE) {
- width = width - 2 * data.borderStyle.width;
- height = height - 2 * data.borderStyle.width;
- }
- let horizontalRadius = data.borderStyle.horizontalCornerRadius;
- let verticalRadius = data.borderStyle.verticalCornerRadius;
- if (horizontalRadius > 0 || verticalRadius > 0) {
- let radius = horizontalRadius + 'px / ' + verticalRadius + 'px';
- container.style.borderRadius = radius;
- }
- switch (data.borderStyle.style) {
- case _util.AnnotationBorderStyleType.SOLID:
- container.style.borderStyle = 'solid';
- break;
- case _util.AnnotationBorderStyleType.DASHED:
- container.style.borderStyle = 'dashed';
- break;
- case _util.AnnotationBorderStyleType.BEVELED:
- (0, _util.warn)('Unimplemented border style: beveled');
- break;
- case _util.AnnotationBorderStyleType.INSET:
- (0, _util.warn)('Unimplemented border style: inset');
- break;
- case _util.AnnotationBorderStyleType.UNDERLINE:
- container.style.borderBottomStyle = 'solid';
- break;
- default:
- break;
- }
- if (data.color) {
- container.style.borderColor = _util.Util.makeCssRgb(data.color[0] | 0, data.color[1] | 0, data.color[2] | 0);
- } else {
- container.style.borderWidth = 0;
- }
- }
- container.style.left = rect[0] + 'px';
- container.style.top = rect[1] + 'px';
- container.style.width = width + 'px';
- container.style.height = height + 'px';
- return container;
- }
- _createPopup(container, trigger, data) {
- if (!trigger) {
- trigger = document.createElement('div');
- trigger.style.height = container.style.height;
- trigger.style.width = container.style.width;
- container.appendChild(trigger);
- }
- let popupElement = new PopupElement({
- container,
- trigger,
- color: data.color,
- title: data.title,
- contents: data.contents,
- hideWrapper: true
- });
- let popup = popupElement.render();
- popup.style.left = container.style.width;
- container.appendChild(popup);
- }
- render() {
- (0, _util.unreachable)('Abstract method `AnnotationElement.render` called');
- }
-}
-class LinkAnnotationElement extends AnnotationElement {
- constructor(parameters) {
- let isRenderable = !!(parameters.data.url || parameters.data.dest || parameters.data.action);
- super(parameters, isRenderable);
- }
- render() {
- this.container.className = 'linkAnnotation';
- let { data, linkService } = this;
- let link = document.createElement('a');
- (0, _dom_utils.addLinkAttributes)(link, {
- url: data.url,
- target: data.newWindow ? _dom_utils.LinkTarget.BLANK : linkService.externalLinkTarget,
- rel: linkService.externalLinkRel
- });
- if (!data.url) {
- if (data.action) {
- this._bindNamedAction(link, data.action);
- } else {
- this._bindLink(link, data.dest);
- }
- }
- this.container.appendChild(link);
- return this.container;
- }
- _bindLink(link, destination) {
- link.href = this.linkService.getDestinationHash(destination);
- link.onclick = () => {
- if (destination) {
- this.linkService.navigateTo(destination);
- }
- return false;
- };
- if (destination) {
- link.className = 'internalLink';
- }
- }
- _bindNamedAction(link, action) {
- link.href = this.linkService.getAnchorUrl('');
- link.onclick = () => {
- this.linkService.executeNamedAction(action);
- return false;
- };
- link.className = 'internalLink';
- }
-}
-class TextAnnotationElement extends AnnotationElement {
- constructor(parameters) {
- let isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
- super(parameters, isRenderable);
- }
- render() {
- this.container.className = 'textAnnotation';
- let image = document.createElement('img');
- image.style.height = this.container.style.height;
- image.style.width = this.container.style.width;
- image.src = this.imageResourcesPath + 'annotation-' + this.data.name.toLowerCase() + '.svg';
- image.alt = '[{{type}} Annotation]';
- image.dataset.l10nId = 'text_annotation_type';
- image.dataset.l10nArgs = JSON.stringify({ type: this.data.name });
- if (!this.data.hasPopup) {
- this._createPopup(this.container, image, this.data);
- }
- this.container.appendChild(image);
- return this.container;
- }
-}
-class WidgetAnnotationElement extends AnnotationElement {
- render() {
- return this.container;
- }
-}
-class TextWidgetAnnotationElement extends WidgetAnnotationElement {
- constructor(parameters) {
- let isRenderable = parameters.renderInteractiveForms || !parameters.data.hasAppearance && !!parameters.data.fieldValue;
- super(parameters, isRenderable);
- }
- render() {
- const TEXT_ALIGNMENT = ['left', 'center', 'right'];
- this.container.className = 'textWidgetAnnotation';
- let element = null;
- if (this.renderInteractiveForms) {
- if (this.data.multiLine) {
- element = document.createElement('textarea');
- element.textContent = this.data.fieldValue;
- } else {
- element = document.createElement('input');
- element.type = 'text';
- element.setAttribute('value', this.data.fieldValue);
- }
- element.disabled = this.data.readOnly;
- if (this.data.maxLen !== null) {
- element.maxLength = this.data.maxLen;
- }
- if (this.data.comb) {
- let fieldWidth = this.data.rect[2] - this.data.rect[0];
- let combWidth = fieldWidth / this.data.maxLen;
- element.classList.add('comb');
- element.style.letterSpacing = 'calc(' + combWidth + 'px - 1ch)';
- }
- } else {
- element = document.createElement('div');
- element.textContent = this.data.fieldValue;
- element.style.verticalAlign = 'middle';
- element.style.display = 'table-cell';
- let font = null;
- if (this.data.fontRefName) {
- font = this.page.commonObjs.getData(this.data.fontRefName);
- }
- this._setTextStyle(element, font);
- }
- if (this.data.textAlignment !== null) {
- element.style.textAlign = TEXT_ALIGNMENT[this.data.textAlignment];
- }
- this.container.appendChild(element);
- return this.container;
- }
- _setTextStyle(element, font) {
- let style = element.style;
- style.fontSize = this.data.fontSize + 'px';
- style.direction = this.data.fontDirection < 0 ? 'rtl' : 'ltr';
- if (!font) {
- return;
- }
- style.fontWeight = font.black ? font.bold ? '900' : 'bold' : font.bold ? 'bold' : 'normal';
- style.fontStyle = font.italic ? 'italic' : 'normal';
- let fontFamily = font.loadedName ? '"' + font.loadedName + '", ' : '';
- let fallbackName = font.fallbackName || 'Helvetica, sans-serif';
- style.fontFamily = fontFamily + fallbackName;
- }
-}
-class CheckboxWidgetAnnotationElement extends WidgetAnnotationElement {
- constructor(parameters) {
- super(parameters, parameters.renderInteractiveForms);
- }
- render() {
- this.container.className = 'buttonWidgetAnnotation checkBox';
- let element = document.createElement('input');
- element.disabled = this.data.readOnly;
- element.type = 'checkbox';
- if (this.data.fieldValue && this.data.fieldValue !== 'Off') {
- element.setAttribute('checked', true);
- }
- this.container.appendChild(element);
- return this.container;
- }
-}
-class RadioButtonWidgetAnnotationElement extends WidgetAnnotationElement {
- constructor(parameters) {
- super(parameters, parameters.renderInteractiveForms);
- }
- render() {
- this.container.className = 'buttonWidgetAnnotation radioButton';
- let element = document.createElement('input');
- element.disabled = this.data.readOnly;
- element.type = 'radio';
- element.name = this.data.fieldName;
- if (this.data.fieldValue === this.data.buttonValue) {
- element.setAttribute('checked', true);
- }
- this.container.appendChild(element);
- return this.container;
- }
-}
-class PushButtonWidgetAnnotationElement extends LinkAnnotationElement {
- render() {
- let container = super.render();
- container.className = 'buttonWidgetAnnotation pushButton';
- return container;
- }
-}
-class ChoiceWidgetAnnotationElement extends WidgetAnnotationElement {
- constructor(parameters) {
- super(parameters, parameters.renderInteractiveForms);
- }
- render() {
- this.container.className = 'choiceWidgetAnnotation';
- let selectElement = document.createElement('select');
- selectElement.disabled = this.data.readOnly;
- if (!this.data.combo) {
- selectElement.size = this.data.options.length;
- if (this.data.multiSelect) {
- selectElement.multiple = true;
- }
- }
- for (let i = 0, ii = this.data.options.length; i < ii; i++) {
- let option = this.data.options[i];
- let optionElement = document.createElement('option');
- optionElement.textContent = option.displayValue;
- optionElement.value = option.exportValue;
- if (this.data.fieldValue.includes(option.displayValue)) {
- optionElement.setAttribute('selected', true);
- }
- selectElement.appendChild(optionElement);
- }
- this.container.appendChild(selectElement);
- return this.container;
- }
-}
-class PopupAnnotationElement extends AnnotationElement {
- constructor(parameters) {
- let isRenderable = !!(parameters.data.title || parameters.data.contents);
- super(parameters, isRenderable);
- }
- render() {
- const IGNORE_TYPES = ['Line', 'Square', 'Circle', 'PolyLine', 'Polygon'];
- this.container.className = 'popupAnnotation';
- if (IGNORE_TYPES.includes(this.data.parentType)) {
- return this.container;
- }
- let selector = '[data-annotation-id="' + this.data.parentId + '"]';
- let parentElement = this.layer.querySelector(selector);
- if (!parentElement) {
- return this.container;
- }
- let popup = new PopupElement({
- container: this.container,
- trigger: parentElement,
- color: this.data.color,
- title: this.data.title,
- contents: this.data.contents
- });
- let parentLeft = parseFloat(parentElement.style.left);
- let parentWidth = parseFloat(parentElement.style.width);
- this.container.style.transformOrigin = -(parentLeft + parentWidth) + 'px -' + parentElement.style.top;
- this.container.style.left = parentLeft + parentWidth + 'px';
- this.container.appendChild(popup.render());
- return this.container;
- }
-}
-class PopupElement {
- constructor(parameters) {
- this.container = parameters.container;
- this.trigger = parameters.trigger;
- this.color = parameters.color;
- this.title = parameters.title;
- this.contents = parameters.contents;
- this.hideWrapper = parameters.hideWrapper || false;
- this.pinned = false;
- }
- render() {
- const BACKGROUND_ENLIGHT = 0.7;
- let wrapper = document.createElement('div');
- wrapper.className = 'popupWrapper';
- this.hideElement = this.hideWrapper ? wrapper : this.container;
- this.hideElement.setAttribute('hidden', true);
- let popup = document.createElement('div');
- popup.className = 'popup';
- let color = this.color;
- if (color) {
- let r = BACKGROUND_ENLIGHT * (255 - color[0]) + color[0];
- let g = BACKGROUND_ENLIGHT * (255 - color[1]) + color[1];
- let b = BACKGROUND_ENLIGHT * (255 - color[2]) + color[2];
- popup.style.backgroundColor = _util.Util.makeCssRgb(r | 0, g | 0, b | 0);
- }
- let contents = this._formatContents(this.contents);
- let title = document.createElement('h1');
- title.textContent = this.title;
- this.trigger.addEventListener('click', this._toggle.bind(this));
- this.trigger.addEventListener('mouseover', this._show.bind(this, false));
- this.trigger.addEventListener('mouseout', this._hide.bind(this, false));
- popup.addEventListener('click', this._hide.bind(this, true));
- popup.appendChild(title);
- popup.appendChild(contents);
- wrapper.appendChild(popup);
- return wrapper;
- }
- _formatContents(contents) {
- let p = document.createElement('p');
- let lines = contents.split(/(?:\r\n?|\n)/);
- for (let i = 0, ii = lines.length; i < ii; ++i) {
- let line = lines[i];
- p.appendChild(document.createTextNode(line));
- if (i < ii - 1) {
- p.appendChild(document.createElement('br'));
- }
- }
- return p;
- }
- _toggle() {
- if (this.pinned) {
- this._hide(true);
- } else {
- this._show(true);
- }
- }
- _show(pin = false) {
- if (pin) {
- this.pinned = true;
- }
- if (this.hideElement.hasAttribute('hidden')) {
- this.hideElement.removeAttribute('hidden');
- this.container.style.zIndex += 1;
- }
- }
- _hide(unpin = true) {
- if (unpin) {
- this.pinned = false;
- }
- if (!this.hideElement.hasAttribute('hidden') && !this.pinned) {
- this.hideElement.setAttribute('hidden', true);
- this.container.style.zIndex -= 1;
- }
- }
-}
-class LineAnnotationElement extends AnnotationElement {
- constructor(parameters) {
- let isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
- super(parameters, isRenderable, true);
- }
- render() {
- this.container.className = 'lineAnnotation';
- let data = this.data;
- let width = data.rect[2] - data.rect[0];
- let height = data.rect[3] - data.rect[1];
- let svg = this.svgFactory.create(width, height);
- let line = this.svgFactory.createElement('svg:line');
- line.setAttribute('x1', data.rect[2] - data.lineCoordinates[0]);
- line.setAttribute('y1', data.rect[3] - data.lineCoordinates[1]);
- line.setAttribute('x2', data.rect[2] - data.lineCoordinates[2]);
- line.setAttribute('y2', data.rect[3] - data.lineCoordinates[3]);
- line.setAttribute('stroke-width', data.borderStyle.width);
- line.setAttribute('stroke', 'transparent');
- svg.appendChild(line);
- this.container.append(svg);
- this._createPopup(this.container, line, data);
- return this.container;
- }
-}
-class SquareAnnotationElement extends AnnotationElement {
- constructor(parameters) {
- let isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
- super(parameters, isRenderable, true);
- }
- render() {
- this.container.className = 'squareAnnotation';
- let data = this.data;
- let width = data.rect[2] - data.rect[0];
- let height = data.rect[3] - data.rect[1];
- let svg = this.svgFactory.create(width, height);
- let borderWidth = data.borderStyle.width;
- let square = this.svgFactory.createElement('svg:rect');
- square.setAttribute('x', borderWidth / 2);
- square.setAttribute('y', borderWidth / 2);
- square.setAttribute('width', width - borderWidth);
- square.setAttribute('height', height - borderWidth);
- square.setAttribute('stroke-width', borderWidth);
- square.setAttribute('stroke', 'transparent');
- square.setAttribute('fill', 'none');
- svg.appendChild(square);
- this.container.append(svg);
- this._createPopup(this.container, square, data);
- return this.container;
- }
-}
-class CircleAnnotationElement extends AnnotationElement {
- constructor(parameters) {
- let isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
- super(parameters, isRenderable, true);
- }
- render() {
- this.container.className = 'circleAnnotation';
- let data = this.data;
- let width = data.rect[2] - data.rect[0];
- let height = data.rect[3] - data.rect[1];
- let svg = this.svgFactory.create(width, height);
- let borderWidth = data.borderStyle.width;
- let circle = this.svgFactory.createElement('svg:ellipse');
- circle.setAttribute('cx', width / 2);
- circle.setAttribute('cy', height / 2);
- circle.setAttribute('rx', width / 2 - borderWidth / 2);
- circle.setAttribute('ry', height / 2 - borderWidth / 2);
- circle.setAttribute('stroke-width', borderWidth);
- circle.setAttribute('stroke', 'transparent');
- circle.setAttribute('fill', 'none');
- svg.appendChild(circle);
- this.container.append(svg);
- this._createPopup(this.container, circle, data);
- return this.container;
- }
-}
-class PolylineAnnotationElement extends AnnotationElement {
- constructor(parameters) {
- let isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
- super(parameters, isRenderable, true);
- this.containerClassName = 'polylineAnnotation';
- this.svgElementName = 'svg:polyline';
- }
- render() {
- this.container.className = this.containerClassName;
- let data = this.data;
- let width = data.rect[2] - data.rect[0];
- let height = data.rect[3] - data.rect[1];
- let svg = this.svgFactory.create(width, height);
- let vertices = data.vertices;
- let points = [];
- for (let i = 0, ii = vertices.length; i < ii; i++) {
- let x = vertices[i].x - data.rect[0];
- let y = data.rect[3] - vertices[i].y;
- points.push(x + ',' + y);
- }
- points = points.join(' ');
- let borderWidth = data.borderStyle.width;
- let polyline = this.svgFactory.createElement(this.svgElementName);
- polyline.setAttribute('points', points);
- polyline.setAttribute('stroke-width', borderWidth);
- polyline.setAttribute('stroke', 'transparent');
- polyline.setAttribute('fill', 'none');
- svg.appendChild(polyline);
- this.container.append(svg);
- this._createPopup(this.container, polyline, data);
- return this.container;
- }
-}
-class PolygonAnnotationElement extends PolylineAnnotationElement {
- constructor(parameters) {
- super(parameters);
- this.containerClassName = 'polygonAnnotation';
- this.svgElementName = 'svg:polygon';
- }
-}
-class HighlightAnnotationElement extends AnnotationElement {
- constructor(parameters) {
- let isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
- super(parameters, isRenderable, true);
- }
- render() {
- this.container.className = 'highlightAnnotation';
- if (!this.data.hasPopup) {
- this._createPopup(this.container, null, this.data);
- }
- return this.container;
- }
-}
-class UnderlineAnnotationElement extends AnnotationElement {
- constructor(parameters) {
- let isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
- super(parameters, isRenderable, true);
- }
- render() {
- this.container.className = 'underlineAnnotation';
- if (!this.data.hasPopup) {
- this._createPopup(this.container, null, this.data);
- }
- return this.container;
- }
-}
-class SquigglyAnnotationElement extends AnnotationElement {
- constructor(parameters) {
- let isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
- super(parameters, isRenderable, true);
- }
- render() {
- this.container.className = 'squigglyAnnotation';
- if (!this.data.hasPopup) {
- this._createPopup(this.container, null, this.data);
- }
- return this.container;
- }
-}
-class StrikeOutAnnotationElement extends AnnotationElement {
- constructor(parameters) {
- let isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
- super(parameters, isRenderable, true);
- }
- render() {
- this.container.className = 'strikeoutAnnotation';
- if (!this.data.hasPopup) {
- this._createPopup(this.container, null, this.data);
- }
- return this.container;
- }
-}
-class StampAnnotationElement extends AnnotationElement {
- constructor(parameters) {
- let isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
- super(parameters, isRenderable, true);
- }
- render() {
- this.container.className = 'stampAnnotation';
- if (!this.data.hasPopup) {
- this._createPopup(this.container, null, this.data);
- }
- return this.container;
- }
-}
-class FileAttachmentAnnotationElement extends AnnotationElement {
- constructor(parameters) {
- super(parameters, true);
- let file = this.data.file;
- this.filename = (0, _dom_utils.getFilenameFromUrl)(file.filename);
- this.content = file.content;
- this.linkService.onFileAttachmentAnnotation({
- id: (0, _util.stringToPDFString)(file.filename),
- filename: file.filename,
- content: file.content
- });
- }
- render() {
- this.container.className = 'fileAttachmentAnnotation';
- let trigger = document.createElement('div');
- trigger.style.height = this.container.style.height;
- trigger.style.width = this.container.style.width;
- trigger.addEventListener('dblclick', this._download.bind(this));
- if (!this.data.hasPopup && (this.data.title || this.data.contents)) {
- this._createPopup(this.container, trigger, this.data);
- }
- this.container.appendChild(trigger);
- return this.container;
- }
- _download() {
- if (!this.downloadManager) {
- (0, _util.warn)('Download cannot be started due to unavailable download manager');
- return;
- }
- this.downloadManager.downloadData(this.content, this.filename, '');
- }
-}
-class AnnotationLayer {
- static render(parameters) {
- for (let i = 0, ii = parameters.annotations.length; i < ii; i++) {
- let data = parameters.annotations[i];
- if (!data) {
- continue;
- }
- let element = AnnotationElementFactory.create({
- data,
- layer: parameters.div,
- page: parameters.page,
- viewport: parameters.viewport,
- linkService: parameters.linkService,
- downloadManager: parameters.downloadManager,
- imageResourcesPath: parameters.imageResourcesPath || '',
- renderInteractiveForms: parameters.renderInteractiveForms || false,
- svgFactory: new _dom_utils.DOMSVGFactory()
- });
- if (element.isRenderable) {
- parameters.div.appendChild(element.render());
- }
- }
- }
- static update(parameters) {
- for (let i = 0, ii = parameters.annotations.length; i < ii; i++) {
- let data = parameters.annotations[i];
- let element = parameters.div.querySelector('[data-annotation-id="' + data.id + '"]');
- if (element) {
- element.style.transform = 'matrix(' + parameters.viewport.transform.join(',') + ')';
- }
- }
- parameters.div.removeAttribute('hidden');
- }
-}
-exports.AnnotationLayer = AnnotationLayer;
-
-/***/ }),
-/* 7 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
-
-"use strict";
-
-
-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/;
- function isAllWhitespace(str) {
- return !NonWhitespaceRegexp.test(str);
- }
- var styleBuf = ['left: ', 0, 'px; top: ', 0, 'px; font-size: ', 0, 'px; font-family: ', '', ';'];
- function appendText(task, geom, styles) {
- var textDiv = document.createElement('div');
- var textDivProperties = {
- style: null,
- angle: 0,
- canvasWidth: 0,
- isWhitespace: false,
- originalTransform: null,
- paddingBottom: 0,
- paddingLeft: 0,
- paddingRight: 0,
- paddingTop: 0,
- scale: 1
- };
- task._textDivs.push(textDiv);
- if (isAllWhitespace(geom.str)) {
- textDivProperties.isWhitespace = true;
- task._textDivProperties.set(textDiv, textDivProperties);
- return;
- }
- 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) {
- angle += Math.PI / 2;
- }
- var fontHeight = Math.sqrt(tx[2] * tx[2] + tx[3] * tx[3]);
- var fontAscent = fontHeight;
- if (style.ascent) {
- fontAscent = style.ascent * fontAscent;
- } else if (style.descent) {
- fontAscent = (1 + style.descent) * fontAscent;
- }
- var left;
- var top;
- if (angle === 0) {
- left = tx[4];
- top = tx[5] - fontAscent;
- } else {
- left = tx[4] + fontAscent * Math.sin(angle);
- top = tx[5] - fontAscent * Math.cos(angle);
- }
- styleBuf[1] = left;
- styleBuf[3] = top;
- styleBuf[5] = fontHeight;
- styleBuf[7] = style.fontFamily;
- textDivProperties.style = styleBuf.join('');
- textDiv.setAttribute('style', textDivProperties.style);
- textDiv.textContent = geom.str;
- if ((0, _dom_utils.getDefaultSetting)('pdfBug')) {
- textDiv.dataset.fontName = geom.fontName;
- }
- if (angle !== 0) {
- textDivProperties.angle = angle * (180 / Math.PI);
- }
- if (geom.str.length > 1) {
- if (style.vertical) {
- textDivProperties.canvasWidth = geom.height * task._viewport.scale;
- } else {
- textDivProperties.canvasWidth = geom.width * task._viewport.scale;
- }
- }
- task._textDivProperties.set(textDiv, textDivProperties);
- if (task._textContentStream) {
- task._layoutText(textDiv);
- }
- if (task._enhanceTextSelection) {
- var angleCos = 1,
- angleSin = 0;
- if (angle !== 0) {
- angleCos = Math.cos(angle);
- angleSin = Math.sin(angle);
- }
- var divWidth = (style.vertical ? geom.height : geom.width) * task._viewport.scale;
- var divHeight = fontHeight;
- var m, b;
- if (angle !== 0) {
- m = [angleCos, angleSin, -angleSin, angleCos, left, top];
- b = _util.Util.getAxialAlignedBoundingBox([0, 0, divWidth, divHeight], m);
- } else {
- b = [left, top, left + divWidth, top + divHeight];
- }
- task._bounds.push({
- left: b[0],
- top: b[1],
- right: b[2],
- bottom: b[3],
- div: textDiv,
- size: [divWidth, divHeight],
- m
- });
- }
- }
- function render(task) {
- if (task._canceled) {
- return;
- }
- var textDivs = task._textDivs;
- var capability = task._capability;
- var textDivsLength = textDivs.length;
- if (textDivsLength > MAX_TEXT_DIVS_TO_RENDER) {
- task._renderingDone = true;
- capability.resolve();
- return;
- }
- if (!task._textContentStream) {
- for (var i = 0; i < textDivsLength; i++) {
- task._layoutText(textDivs[i]);
- }
- }
- task._renderingDone = true;
- capability.resolve();
- }
- function expand(task) {
- var bounds = task._bounds;
- var viewport = task._viewport;
- var expanded = expandBounds(viewport.width, viewport.height, bounds);
- for (var i = 0; i < expanded.length; i++) {
- var div = bounds[i].div;
- var divProperties = task._textDivProperties.get(div);
- if (divProperties.angle === 0) {
- divProperties.paddingLeft = bounds[i].left - expanded[i].left;
- divProperties.paddingTop = bounds[i].top - expanded[i].top;
- divProperties.paddingRight = expanded[i].right - bounds[i].right;
- divProperties.paddingBottom = expanded[i].bottom - bounds[i].bottom;
- task._textDivProperties.set(div, divProperties);
- continue;
- }
- var e = expanded[i],
- b = bounds[i];
- var m = b.m,
- c = m[0],
- s = m[1];
- 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.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;
- ts[i + 12] = s && (e.bottom - t[1]) / s;
- ts[i + 16] = s && (e.left - t[0]) / -s;
- ts[i + 20] = c && (e.top - t[1]) / c;
- ts[i + 24] = s && (e.right - t[0]) / -s;
- ts[i + 28] = c && (e.bottom - t[1]) / c;
- ts[i + 32] = c && (e.left - t[0]) / -c;
- ts[i + 36] = s && (e.top - t[1]) / -s;
- ts[i + 40] = c && (e.right - t[0]) / -c;
- ts[i + 44] = s && (e.bottom - t[1]) / -s;
- ts[i + 48] = s && (e.left - t[0]) / s;
- ts[i + 52] = c && (e.top - t[1]) / -c;
- ts[i + 56] = s && (e.right - t[0]) / s;
- ts[i + 60] = c && (e.bottom - t[1]) / -c;
- });
- var findPositiveMin = function (ts, offset, count) {
- var result = 0;
- for (var i = 0; i < count; i++) {
- var t = ts[offset++];
- if (t > 0) {
- result = result ? Math.min(t, result) : t;
- }
- }
- return result;
- };
- var boxScale = 1 + Math.min(Math.abs(c), Math.abs(s));
- divProperties.paddingLeft = findPositiveMin(ts, 32, 16) / boxScale;
- divProperties.paddingTop = findPositiveMin(ts, 48, 16) / boxScale;
- divProperties.paddingRight = findPositiveMin(ts, 0, 16) / boxScale;
- divProperties.paddingBottom = findPositiveMin(ts, 16, 16) / boxScale;
- task._textDivProperties.set(div, divProperties);
- }
- }
- function expandBounds(width, height, boxes) {
- var bounds = boxes.map(function (box, i) {
- return {
- x1: box.left,
- y1: box.top,
- x2: box.right,
- y2: box.bottom,
- index: i,
- x1New: undefined,
- x2New: undefined
- };
- });
- expandBoundsLTR(width, bounds);
- var expanded = new Array(boxes.length);
- bounds.forEach(function (b) {
- var i = b.index;
- expanded[i] = {
- left: b.x1New,
- top: 0,
- right: b.x2New,
- bottom: 0
- };
- });
- boxes.map(function (box, i) {
- var e = expanded[i],
- b = bounds[i];
- b.x1 = box.top;
- b.y1 = width - e.right;
- b.x2 = box.bottom;
- b.y2 = width - e.left;
- b.index = i;
- b.x1New = undefined;
- b.x2New = undefined;
- });
- expandBoundsLTR(height, bounds);
- bounds.forEach(function (b) {
- var i = b.index;
- expanded[i].top = b.x1New;
- expanded[i].bottom = b.x2New;
- });
- return expanded;
- }
- function expandBoundsLTR(width, bounds) {
- bounds.sort(function (a, b) {
- return a.x1 - b.x1 || a.index - b.index;
- });
- var fakeBoundary = {
- x1: -Infinity,
- y1: -Infinity,
- x2: 0,
- y2: Infinity,
- index: -1,
- x1New: 0,
- x2New: 0
- };
- var horizon = [{
- start: -Infinity,
- end: Infinity,
- boundary: fakeBoundary
- }];
- bounds.forEach(function (boundary) {
- var i = 0;
- while (i < horizon.length && horizon[i].end <= boundary.y1) {
- i++;
- }
- var j = horizon.length - 1;
- while (j >= 0 && horizon[j].start >= boundary.y2) {
- j--;
- }
- var horizonPart, affectedBoundary;
- var q,
- k,
- maxXNew = -Infinity;
- for (q = i; q <= j; q++) {
- horizonPart = horizon[q];
- affectedBoundary = horizonPart.boundary;
- var xNew;
- if (affectedBoundary.x2 > boundary.x1) {
- xNew = affectedBoundary.index > boundary.index ? affectedBoundary.x1New : boundary.x1;
- } else if (affectedBoundary.x2New === undefined) {
- xNew = (affectedBoundary.x2 + boundary.x1) / 2;
- } else {
- xNew = affectedBoundary.x2New;
- }
- if (xNew > maxXNew) {
- maxXNew = xNew;
- }
- }
- boundary.x1New = maxXNew;
- for (q = i; q <= j; q++) {
- horizonPart = horizon[q];
- affectedBoundary = horizonPart.boundary;
- if (affectedBoundary.x2New === undefined) {
- if (affectedBoundary.x2 > boundary.x1) {
- if (affectedBoundary.index > boundary.index) {
- affectedBoundary.x2New = affectedBoundary.x2;
- }
- } else {
- affectedBoundary.x2New = maxXNew;
- }
- } else if (affectedBoundary.x2New > maxXNew) {
- affectedBoundary.x2New = Math.max(maxXNew, affectedBoundary.x2);
- }
- }
- var changedHorizon = [],
- lastBoundary = null;
- for (q = i; q <= j; q++) {
- horizonPart = horizon[q];
- affectedBoundary = horizonPart.boundary;
- var useBoundary = affectedBoundary.x2 > boundary.x2 ? affectedBoundary : boundary;
- if (lastBoundary === useBoundary) {
- changedHorizon[changedHorizon.length - 1].end = horizonPart.end;
- } else {
- changedHorizon.push({
- start: horizonPart.start,
- end: horizonPart.end,
- boundary: useBoundary
- });
- lastBoundary = useBoundary;
- }
- }
- if (horizon[i].start < boundary.y1) {
- changedHorizon[0].start = boundary.y1;
- changedHorizon.unshift({
- start: horizon[i].start,
- end: boundary.y1,
- boundary: horizon[i].boundary
- });
- }
- if (boundary.y2 < horizon[j].end) {
- changedHorizon[changedHorizon.length - 1].end = boundary.y2;
- changedHorizon.push({
- start: boundary.y2,
- end: horizon[j].end,
- boundary: horizon[j].boundary
- });
- }
- for (q = i; q <= j; q++) {
- horizonPart = horizon[q];
- affectedBoundary = horizonPart.boundary;
- if (affectedBoundary.x2New !== undefined) {
- continue;
- }
- var used = false;
- for (k = i - 1; !used && k >= 0 && horizon[k].start >= affectedBoundary.y1; k--) {
- used = horizon[k].boundary === affectedBoundary;
- }
- for (k = j + 1; !used && k < horizon.length && horizon[k].end <= affectedBoundary.y2; k++) {
- used = horizon[k].boundary === affectedBoundary;
- }
- for (k = 0; !used && k < changedHorizon.length; k++) {
- used = changedHorizon[k].boundary === affectedBoundary;
- }
- if (!used) {
- affectedBoundary.x2New = maxXNew;
- }
- }
- Array.prototype.splice.apply(horizon, [i, j - i + 1].concat(changedHorizon));
- });
- horizon.forEach(function (horizonPart) {
- var affectedBoundary = horizonPart.boundary;
- if (affectedBoundary.x2New === undefined) {
- affectedBoundary.x2New = Math.max(width, affectedBoundary.x2);
- }
- });
- }
- function TextLayerRenderTask({ textContent, textContentStream, container, viewport, textDivs, textContentItemsStr, enhanceTextSelection }) {
- this._textContent = textContent;
- this._textContentStream = textContentStream;
- this._container = container;
- this._viewport = viewport;
- this._textDivs = textDivs || [];
- this._textContentItemsStr = textContentItemsStr || [];
- this._enhanceTextSelection = !!enhanceTextSelection;
- this._reader = null;
- this._layoutTextLastFontSize = null;
- this._layoutTextLastFontFamily = null;
- this._layoutTextCtx = null;
- this._textDivProperties = new WeakMap();
- this._renderingDone = false;
- this._canceled = false;
- this._capability = (0, _util.createPromiseCapability)();
- this._renderTimer = null;
- this._bounds = [];
- }
- TextLayerRenderTask.prototype = {
- get promise() {
- return this._capability.promise;
- },
- cancel: function TextLayer_cancel() {
- if (this._reader) {
- this._reader.cancel(new _util.AbortException('text layer task cancelled'));
- this._reader = null;
- }
- this._canceled = true;
- if (this._renderTimer !== null) {
- clearTimeout(this._renderTimer);
- this._renderTimer = null;
- }
- this._capability.reject('canceled');
- },
- _processItems(items, styleCache) {
- for (let i = 0, len = items.length; i < len; i++) {
- this._textContentItemsStr.push(items[i].str);
- appendText(this, items[i], styleCache);
- }
- },
- _layoutText(textDiv) {
- let textLayerFrag = this._container;
- let textDivProperties = this._textDivProperties.get(textDiv);
- if (textDivProperties.isWhitespace) {
- return;
- }
- let fontSize = textDiv.style.fontSize;
- let fontFamily = textDiv.style.fontFamily;
- if (fontSize !== this._layoutTextLastFontSize || fontFamily !== this._layoutTextLastFontFamily) {
- this._layoutTextCtx.font = fontSize + ' ' + fontFamily;
- this._lastFontSize = fontSize;
- this._lastFontFamily = fontFamily;
- }
- let width = this._layoutTextCtx.measureText(textDiv.textContent).width;
- let transform = '';
- if (textDivProperties.canvasWidth !== 0 && width > 0) {
- textDivProperties.scale = textDivProperties.canvasWidth / width;
- transform = 'scaleX(' + textDivProperties.scale + ')';
- }
- if (textDivProperties.angle !== 0) {
- transform = 'rotate(' + textDivProperties.angle + 'deg) ' + transform;
- }
- if (transform !== '') {
- textDivProperties.originalTransform = transform;
- textDiv.style.transform = transform;
- }
- this._textDivProperties.set(textDiv, textDivProperties);
- textLayerFrag.appendChild(textDiv);
- },
- _render: function TextLayer_render(timeout) {
- let capability = (0, _util.createPromiseCapability)();
- let styleCache = Object.create(null);
- let canvas = document.createElement('canvas');
- canvas.mozOpaque = true;
- this._layoutTextCtx = canvas.getContext('2d', { alpha: false });
- if (this._textContent) {
- let textItems = this._textContent.items;
- let textStyles = this._textContent.styles;
- this._processItems(textItems, textStyles);
- capability.resolve();
- } else if (this._textContentStream) {
- let pump = () => {
- this._reader.read().then(({ value, done }) => {
- if (done) {
- capability.resolve();
- return;
- }
- _util.Util.extendObj(styleCache, value.styles);
- this._processItems(value.items, styleCache);
- pump();
- }, capability.reject);
- };
- this._reader = this._textContentStream.getReader();
- pump();
- } else {
- throw new Error('Neither "textContent" nor "textContentStream"' + ' parameters specified.');
- }
- capability.promise.then(() => {
- styleCache = null;
- if (!timeout) {
- render(this);
- } else {
- this._renderTimer = setTimeout(() => {
- render(this);
- this._renderTimer = null;
- }, timeout);
- }
- }, this._capability.reject);
- },
- expandTextDivs: function TextLayer_expandTextDivs(expandDivs) {
- if (!this._enhanceTextSelection || !this._renderingDone) {
- return;
- }
- if (this._bounds !== null) {
- expand(this);
- this._bounds = null;
- }
- for (var i = 0, ii = this._textDivs.length; i < ii; i++) {
- var div = this._textDivs[i];
- var divProperties = this._textDivProperties.get(div);
- if (divProperties.isWhitespace) {
- continue;
- }
- if (expandDivs) {
- var transform = '',
- padding = '';
- if (divProperties.scale !== 1) {
- transform = 'scaleX(' + divProperties.scale + ')';
- }
- if (divProperties.angle !== 0) {
- transform = 'rotate(' + divProperties.angle + 'deg) ' + transform;
- }
- if (divProperties.paddingLeft !== 0) {
- padding += ' padding-left: ' + divProperties.paddingLeft / divProperties.scale + 'px;';
- transform += ' translateX(' + -divProperties.paddingLeft / divProperties.scale + 'px)';
- }
- if (divProperties.paddingTop !== 0) {
- padding += ' padding-top: ' + divProperties.paddingTop + 'px;';
- transform += ' translateY(' + -divProperties.paddingTop + 'px)';
- }
- if (divProperties.paddingRight !== 0) {
- padding += ' padding-right: ' + divProperties.paddingRight / divProperties.scale + 'px;';
- }
- if (divProperties.paddingBottom !== 0) {
- padding += ' padding-bottom: ' + divProperties.paddingBottom + 'px;';
- }
- if (padding !== '') {
- div.setAttribute('style', divProperties.style + padding);
- }
- if (transform !== '') {
- div.style.transform = transform;
- }
- } else {
- div.style.padding = 0;
- div.style.transform = divProperties.originalTransform || '';
- }
- }
- }
- };
- function renderTextLayer(renderParameters) {
- var task = new TextLayerRenderTask({
- textContent: renderParameters.textContent,
- textContentStream: renderParameters.textContentStream,
- container: renderParameters.container,
- viewport: renderParameters.viewport,
- textDivs: renderParameters.textDivs,
- textContentItemsStr: renderParameters.textContentItemsStr,
- enhanceTextSelection: renderParameters.enhanceTextSelection
- });
- task._render(renderParameters.timeout);
- return task;
- }
- return renderTextLayer;
-}();
-exports.renderTextLayer = renderTextLayer;
-
-/***/ }),
-/* 8 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
-
-"use strict";
-
-
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-exports.SVGGraphics = undefined;
-
-var _util = __w_pdfjs_require__(0);
-
-var _dom_utils = __w_pdfjs_require__(1);
-
-var _is_node = __w_pdfjs_require__(19);
-
-var _is_node2 = _interopRequireDefault(_is_node);
-
-function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-
-var SVGGraphics = function () {
- throw new Error('Not implemented: SVGGraphics');
-};
+var pdfjsVersion = '2.0.447';
+var pdfjsBuild = 'c0b22da0';
+var pdfjsSharedUtil = __w_pdfjs_require__(0);
+var pdfjsDisplayAPI = __w_pdfjs_require__(9);
+var pdfjsDisplayTextLayer = __w_pdfjs_require__(16);
+var pdfjsDisplayAnnotationLayer = __w_pdfjs_require__(17);
+var pdfjsDisplayDOMUtils = __w_pdfjs_require__(1);
+var pdfjsDisplaySVG = __w_pdfjs_require__(18);
+let pdfjsDisplayWorkerOptions = __w_pdfjs_require__(4);
+let pdfjsDisplayAPICompatibility = __w_pdfjs_require__(3);
;
-exports.SVGGraphics = SVGGraphics;
-
-/***/ }),
-/* 9 */
-/***/ (function(module, exports, __w_pdfjs_require__) {
-
-"use strict";
-
-
-var pdfjsVersion = '2.0.402';
-var pdfjsBuild = '401f3a9d';
-var pdfjsSharedUtil = __w_pdfjs_require__(0);
-var pdfjsDisplayGlobal = __w_pdfjs_require__(13);
-var pdfjsDisplayAPI = __w_pdfjs_require__(4);
-var pdfjsDisplayTextLayer = __w_pdfjs_require__(7);
-var pdfjsDisplayAnnotationLayer = __w_pdfjs_require__(6);
-var pdfjsDisplayDOMUtils = __w_pdfjs_require__(1);
-var pdfjsDisplaySVG = __w_pdfjs_require__(8);
-let pdfjsDisplayWorkerOptions = __w_pdfjs_require__(3);
-;
-exports.PDFJS = pdfjsDisplayGlobal.PDFJS;
exports.build = pdfjsDisplayAPI.build;
exports.version = pdfjsDisplayAPI.version;
exports.getDocument = pdfjsDisplayAPI.getDocument;
exports.LoopbackPort = pdfjsDisplayAPI.LoopbackPort;
exports.PDFDataRangeTransport = pdfjsDisplayAPI.PDFDataRangeTransport;
exports.PDFWorker = pdfjsDisplayAPI.PDFWorker;
exports.renderTextLayer = pdfjsDisplayTextLayer.renderTextLayer;
exports.AnnotationLayer = pdfjsDisplayAnnotationLayer.AnnotationLayer;
@@ -4636,33 +1781,36 @@ exports.UnexpectedResponseException = pd
exports.OPS = pdfjsSharedUtil.OPS;
exports.VerbosityLevel = pdfjsSharedUtil.VerbosityLevel;
exports.UNSUPPORTED_FEATURES = pdfjsSharedUtil.UNSUPPORTED_FEATURES;
exports.createValidAbsoluteUrl = pdfjsSharedUtil.createValidAbsoluteUrl;
exports.createObjectURL = pdfjsSharedUtil.createObjectURL;
exports.removeNullCharacters = pdfjsSharedUtil.removeNullCharacters;
exports.shadow = pdfjsSharedUtil.shadow;
exports.createBlob = pdfjsSharedUtil.createBlob;
+exports.Util = pdfjsSharedUtil.Util;
exports.RenderingCancelledException = pdfjsDisplayDOMUtils.RenderingCancelledException;
exports.getFilenameFromUrl = pdfjsDisplayDOMUtils.getFilenameFromUrl;
exports.LinkTarget = pdfjsDisplayDOMUtils.LinkTarget;
exports.addLinkAttributes = pdfjsDisplayDOMUtils.addLinkAttributes;
exports.GlobalWorkerOptions = pdfjsDisplayWorkerOptions.GlobalWorkerOptions;
+exports.apiCompatibilityParams = pdfjsDisplayAPICompatibility.apiCompatibilityParams;
/***/ }),
-/* 10 */
+/* 6 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
+const globalScope = __w_pdfjs_require__(2);
;
/***/ }),
-/* 11 */
+/* 7 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
let isReadableStreamSupported = false;
if (typeof ReadableStream !== 'undefined') {
try {
@@ -4672,21 +1820,21 @@ if (typeof ReadableStream !== 'undefined
}
});
isReadableStreamSupported = true;
} catch (e) {}
}
if (isReadableStreamSupported) {
exports.ReadableStream = ReadableStream;
} else {
- exports.ReadableStream = __w_pdfjs_require__(12).ReadableStream;
+ exports.ReadableStream = __w_pdfjs_require__(8).ReadableStream;
}
/***/ }),
-/* 12 */
+/* 8 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
(function (e, a) {
for (var i in a) e[i] = a[i];
})(exports, function (modules) {
@@ -7692,104 +4840,1548 @@ if (isReadableStreamSupported) {
function streamBrandCheckException(name) {
return new TypeError('TransformStream.prototype.' + name + ' can only be used on a TransformStream');
}
}, function (module, exports, __w_pdfjs_require__) {
module.exports = __w_pdfjs_require__(5);
}]));
/***/ }),
-/* 13 */
+/* 9 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
-exports.PDFJS = exports.globalScope = undefined;
+exports.build = exports.version = exports.setPDFNetworkStreamFactory = exports.PDFPageProxy = exports.PDFDocumentProxy = exports.PDFWorker = exports.PDFDataRangeTransport = exports.LoopbackPort = exports.getDocument = undefined;
var _util = __w_pdfjs_require__(0);
var _dom_utils = __w_pdfjs_require__(1);
-var _api = __w_pdfjs_require__(4);
-
-var _annotation_layer = __w_pdfjs_require__(6);
+var _font_loader = __w_pdfjs_require__(10);
+
+var _api_compatibility = __w_pdfjs_require__(3);
+
+var _canvas = __w_pdfjs_require__(11);
var _global_scope = __w_pdfjs_require__(2);
var _global_scope2 = _interopRequireDefault(_global_scope);
-var _worker_options = __w_pdfjs_require__(3);
-
-var _metadata = __w_pdfjs_require__(5);
-
-var _text_layer = __w_pdfjs_require__(7);
-
-var _svg = __w_pdfjs_require__(8);
+var _worker_options = __w_pdfjs_require__(4);
+
+var _metadata = __w_pdfjs_require__(13);
+
+var _transport_stream = __w_pdfjs_require__(14);
+
+var _webgl = __w_pdfjs_require__(15);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
-if (!_global_scope2.default.PDFJS) {
- _global_scope2.default.PDFJS = {};
+var DEFAULT_RANGE_CHUNK_SIZE = 65536;
+let isWorkerDisabled = false;
+let workerSrc;
+const pdfjsFilePath = null;
+var fakeWorkerFilesLoader = null;
+var useRequireEnsure = false;
+;
+var createPDFNetworkStream;
+function setPDFNetworkStreamFactory(pdfNetworkStreamFactory) {
+ createPDFNetworkStream = pdfNetworkStreamFactory;
+}
+function getDocument(src) {
+ var task = new PDFDocumentLoadingTask();
+ var source;
+ if (typeof src === 'string') {
+ source = { url: src };
+ } else if ((0, _util.isArrayBuffer)(src)) {
+ source = { data: src };
+ } else if (src instanceof PDFDataRangeTransport) {
+ source = { range: src };
+ } else {
+ if (typeof src !== 'object') {
+ throw new Error('Invalid parameter in getDocument, ' + 'need either Uint8Array, string or a parameter object');
+ }
+ if (!src.url && !src.data && !src.range) {
+ throw new Error('Invalid parameter object: need either .data, .range or .url');
+ }
+ source = src;
+ }
+ let params = Object.create(null);
+ var rangeTransport = null;
+ let worker = null;
+ let CMapReaderFactory = _dom_utils.DOMCMapReaderFactory;
+ for (var key in source) {
+ if (key === 'url' && typeof window !== 'undefined') {
+ params[key] = new URL(source[key], window.location).href;
+ continue;
+ } else if (key === 'range') {
+ rangeTransport = source[key];
+ continue;
+ } else if (key === 'worker') {
+ worker = source[key];
+ continue;
+ } else if (key === 'data' && !(source[key] instanceof Uint8Array)) {
+ var pdfBytes = source[key];
+ if (typeof pdfBytes === 'string') {
+ params[key] = (0, _util.stringToBytes)(pdfBytes);
+ } else if (typeof pdfBytes === 'object' && pdfBytes !== null && !isNaN(pdfBytes.length)) {
+ params[key] = new Uint8Array(pdfBytes);
+ } else if ((0, _util.isArrayBuffer)(pdfBytes)) {
+ params[key] = new Uint8Array(pdfBytes);
+ } else {
+ throw new Error('Invalid PDF binary data: either typed array, ' + 'string or array-like object is expected in the ' + 'data property.');
+ }
+ continue;
+ } else if (key === 'CMapReaderFactory') {
+ CMapReaderFactory = source[key];
+ continue;
+ }
+ params[key] = source[key];
+ }
+ params.rangeChunkSize = params.rangeChunkSize || DEFAULT_RANGE_CHUNK_SIZE;
+ params.ignoreErrors = params.stopAtErrors !== true;
+ params.pdfBug = params.pdfBug === true;
+ const NativeImageDecoderValues = Object.values(_util.NativeImageDecoding);
+ if (params.nativeImageDecoderSupport === undefined || !NativeImageDecoderValues.includes(params.nativeImageDecoderSupport)) {
+ params.nativeImageDecoderSupport = _util.NativeImageDecoding.DECODE;
+ }
+ if (!Number.isInteger(params.maxImageSize)) {
+ params.maxImageSize = -1;
+ }
+ if (typeof params.isEvalSupported !== 'boolean') {
+ params.isEvalSupported = true;
+ }
+ if (typeof params.disableFontFace !== 'boolean') {
+ params.disableFontFace = false;
+ }
+ if (typeof params.disableRange !== 'boolean') {
+ params.disableRange = _api_compatibility.apiCompatibilityParams.disableRange || false;
+ }
+ if (typeof params.disableStream !== 'boolean') {
+ params.disableStream = _api_compatibility.apiCompatibilityParams.disableStream || false;
+ }
+ if (typeof params.disableAutoFetch !== 'boolean') {
+ params.disableAutoFetch = false;
+ }
+ if (typeof params.disableCreateObjectURL !== 'boolean') {
+ params.disableCreateObjectURL = _api_compatibility.apiCompatibilityParams.disableCreateObjectURL || false;
+ }
+ (0, _util.setVerbosityLevel)(params.verbosity);
+ if (!worker) {
+ const workerParams = {
+ postMessageTransfers: params.postMessageTransfers,
+ verbosity: params.verbosity
+ };
+ let workerPort = _worker_options.GlobalWorkerOptions.workerPort;
+ if (workerPort) {
+ workerParams.port = workerPort;
+ worker = PDFWorker.fromPort(workerParams);
+ } else {
+ worker = new PDFWorker(workerParams);
+ }
+ task._worker = worker;
+ }
+ var docId = task.docId;
+ worker.promise.then(function () {
+ if (task.destroyed) {
+ throw new Error('Loading aborted');
+ }
+ return _fetchDocument(worker, params, rangeTransport, docId).then(function (workerId) {
+ if (task.destroyed) {
+ throw new Error('Loading aborted');
+ }
+ let networkStream;
+ if (rangeTransport) {
+ networkStream = new _transport_stream.PDFDataTransportStream({
+ length: params.length,
+ initialData: params.initialData,
+ disableRange: params.disableRange,
+ disableStream: params.disableStream
+ }, rangeTransport);
+ } else if (!params.data) {
+ networkStream = createPDFNetworkStream({
+ url: params.url,
+ length: params.length,
+ httpHeaders: params.httpHeaders,
+ withCredentials: params.withCredentials,
+ rangeChunkSize: params.rangeChunkSize,
+ disableRange: params.disableRange,
+ disableStream: params.disableStream
+ });
+ }
+ var messageHandler = new _util.MessageHandler(docId, workerId, worker.port);
+ messageHandler.postMessageTransfers = worker.postMessageTransfers;
+ var transport = new WorkerTransport(messageHandler, task, networkStream, params, CMapReaderFactory);
+ task._transport = transport;
+ messageHandler.send('Ready', null);
+ });
+ }).catch(task._capability.reject);
+ return task;
+}
+function _fetchDocument(worker, source, pdfDataRangeTransport, docId) {
+ if (worker.destroyed) {
+ return Promise.reject(new Error('Worker was destroyed'));
+ }
+ if (pdfDataRangeTransport) {
+ source.length = pdfDataRangeTransport.length;
+ source.initialData = pdfDataRangeTransport.initialData;
+ }
+ return worker.messageHandler.sendWithPromise('GetDocRequest', {
+ docId,
+ apiVersion: '2.0.447',
+ source: {
+ data: source.data,
+ url: source.url,
+ password: source.password,
+ disableAutoFetch: source.disableAutoFetch,
+ rangeChunkSize: source.rangeChunkSize,
+ length: source.length
+ },
+ maxImageSize: source.maxImageSize,
+ disableFontFace: source.disableFontFace,
+ disableCreateObjectURL: source.disableCreateObjectURL,
+ postMessageTransfers: worker.postMessageTransfers,
+ docBaseUrl: source.docBaseUrl,
+ nativeImageDecoderSupport: source.nativeImageDecoderSupport,
+ ignoreErrors: source.ignoreErrors,
+ isEvalSupported: source.isEvalSupported
+ }).then(function (workerId) {
+ if (worker.destroyed) {
+ throw new Error('Worker was destroyed');
+ }
+ return workerId;
+ });
+}
+var PDFDocumentLoadingTask = function PDFDocumentLoadingTaskClosure() {
+ var nextDocumentId = 0;
+ function PDFDocumentLoadingTask() {
+ this._capability = (0, _util.createPromiseCapability)();
+ this._transport = null;
+ this._worker = null;
+ this.docId = 'd' + nextDocumentId++;
+ this.destroyed = false;
+ this.onPassword = null;
+ this.onProgress = null;
+ this.onUnsupportedFeature = null;
+ }
+ PDFDocumentLoadingTask.prototype = {
+ get promise() {
+ return this._capability.promise;
+ },
+ destroy() {
+ this.destroyed = true;
+ var transportDestroyed = !this._transport ? Promise.resolve() : this._transport.destroy();
+ return transportDestroyed.then(() => {
+ this._transport = null;
+ if (this._worker) {
+ this._worker.destroy();
+ this._worker = null;
+ }
+ });
+ },
+ then: function PDFDocumentLoadingTask_then(onFulfilled, onRejected) {
+ return this.promise.then.apply(this.promise, arguments);
+ }
+ };
+ return PDFDocumentLoadingTask;
+}();
+var PDFDataRangeTransport = function pdfDataRangeTransportClosure() {
+ function PDFDataRangeTransport(length, initialData) {
+ this.length = length;
+ this.initialData = initialData;
+ this._rangeListeners = [];
+ this._progressListeners = [];
+ this._progressiveReadListeners = [];
+ this._readyCapability = (0, _util.createPromiseCapability)();
+ }
+ PDFDataRangeTransport.prototype = {
+ addRangeListener: function PDFDataRangeTransport_addRangeListener(listener) {
+ this._rangeListeners.push(listener);
+ },
+ addProgressListener: function PDFDataRangeTransport_addProgressListener(listener) {
+ this._progressListeners.push(listener);
+ },
+ addProgressiveReadListener: function PDFDataRangeTransport_addProgressiveReadListener(listener) {
+ this._progressiveReadListeners.push(listener);
+ },
+ onDataRange: function PDFDataRangeTransport_onDataRange(begin, chunk) {
+ var listeners = this._rangeListeners;
+ for (var i = 0, n = listeners.length; i < n; ++i) {
+ listeners[i](begin, chunk);
+ }
+ },
+ onDataProgress: function PDFDataRangeTransport_onDataProgress(loaded) {
+ this._readyCapability.promise.then(() => {
+ var listeners = this._progressListeners;
+ for (var i = 0, n = listeners.length; i < n; ++i) {
+ listeners[i](loaded);
+ }
+ });
+ },
+ onDataProgressiveRead: function PDFDataRangeTransport_onDataProgress(chunk) {
+ this._readyCapability.promise.then(() => {
+ var listeners = this._progressiveReadListeners;
+ for (var i = 0, n = listeners.length; i < n; ++i) {
+ listeners[i](chunk);
+ }
+ });
+ },
+ transportReady: function PDFDataRangeTransport_transportReady() {
+ this._readyCapability.resolve();
+ },
+ requestDataRange: function PDFDataRangeTransport_requestDataRange(begin, end) {
+ (0, _util.unreachable)('Abstract method PDFDataRangeTransport.requestDataRange');
+ },
+ abort: function PDFDataRangeTransport_abort() {}
+ };
+ return PDFDataRangeTransport;
+}();
+var PDFDocumentProxy = function PDFDocumentProxyClosure() {
+ function PDFDocumentProxy(pdfInfo, transport, loadingTask) {
+ this.pdfInfo = pdfInfo;
+ this.transport = transport;
+ this.loadingTask = loadingTask;
+ }
+ PDFDocumentProxy.prototype = {
+ get numPages() {
+ return this.pdfInfo.numPages;
+ },
+ get fingerprint() {
+ return this.pdfInfo.fingerprint;
+ },
+ getPage(pageNumber) {
+ return this.transport.getPage(pageNumber);
+ },
+ getPageIndex: function PDFDocumentProxy_getPageIndex(ref) {
+ return this.transport.getPageIndex(ref);
+ },
+ getDestinations: function PDFDocumentProxy_getDestinations() {
+ return this.transport.getDestinations();
+ },
+ getDestination: function PDFDocumentProxy_getDestination(id) {
+ return this.transport.getDestination(id);
+ },
+ getPageLabels: function PDFDocumentProxy_getPageLabels() {
+ return this.transport.getPageLabels();
+ },
+ getPageMode() {
+ return this.transport.getPageMode();
+ },
+ getAttachments: function PDFDocumentProxy_getAttachments() {
+ return this.transport.getAttachments();
+ },
+ getJavaScript() {
+ return this.transport.getJavaScript();
+ },
+ getOutline: function PDFDocumentProxy_getOutline() {
+ return this.transport.getOutline();
+ },
+ getMetadata: function PDFDocumentProxy_getMetadata() {
+ return this.transport.getMetadata();
+ },
+ getData: function PDFDocumentProxy_getData() {
+ return this.transport.getData();
+ },
+ getDownloadInfo: function PDFDocumentProxy_getDownloadInfo() {
+ return this.transport.downloadInfoCapability.promise;
+ },
+ getStats: function PDFDocumentProxy_getStats() {
+ return this.transport.getStats();
+ },
+ cleanup: function PDFDocumentProxy_cleanup() {
+ this.transport.startCleanup();
+ },
+ destroy: function PDFDocumentProxy_destroy() {
+ return this.loadingTask.destroy();
+ },
+ get loadingParams() {
+ return this.transport.loadingParams;
+ }
+ };
+ return PDFDocumentProxy;
+}();
+var PDFPageProxy = function PDFPageProxyClosure() {
+ function PDFPageProxy(pageIndex, pageInfo, transport, pdfBug = false) {
+ this.pageIndex = pageIndex;
+ this.pageInfo = pageInfo;
+ this.transport = transport;
+ this._stats = pdfBug ? new _dom_utils.StatTimer() : _dom_utils.DummyStatTimer;
+ this._pdfBug = pdfBug;
+ this.commonObjs = transport.commonObjs;
+ this.objs = new PDFObjects();
+ this.cleanupAfterRender = false;
+ this.pendingCleanup = false;
+ this.intentStates = Object.create(null);
+ this.destroyed = false;
+ }
+ PDFPageProxy.prototype = {
+ get pageNumber() {
+ return this.pageIndex + 1;
+ },
+ get rotate() {
+ return this.pageInfo.rotate;
+ },
+ get ref() {
+ return this.pageInfo.ref;
+ },
+ get userUnit() {
+ return this.pageInfo.userUnit;
+ },
+ get view() {
+ return this.pageInfo.view;
+ },
+ get pageSizeInches() {
+ const [x1, y1, x2, y2] = this.view,
+ userUnit = this.userUnit;
+ return {
+ width: (x2 - x1) / 72 * userUnit,
+ height: (y2 - y1) / 72 * userUnit
+ };
+ },
+ getViewport(scale, rotate = this.rotate, dontFlip = false) {
+ return new _util.PageViewport(this.view, scale, rotate, 0, 0, dontFlip);
+ },
+ getAnnotations: function PDFPageProxy_getAnnotations(params) {
+ var intent = params && params.intent || null;
+ if (!this.annotationsPromise || this.annotationsIntent !== intent) {
+ this.annotationsPromise = this.transport.getAnnotations(this.pageIndex, intent);
+ this.annotationsIntent = intent;
+ }
+ return this.annotationsPromise;
+ },
+ render: function PDFPageProxy_render(params) {
+ let stats = this._stats;
+ stats.time('Overall');
+ this.pendingCleanup = false;
+ var renderingIntent = params.intent === 'print' ? 'print' : 'display';
+ var canvasFactory = params.canvasFactory || new _dom_utils.DOMCanvasFactory();
+ let webGLContext = new _webgl.WebGLContext({ enable: params.enableWebGL });
+ if (!this.intentStates[renderingIntent]) {
+ this.intentStates[renderingIntent] = Object.create(null);
+ }
+ var intentState = this.intentStates[renderingIntent];
+ if (!intentState.displayReadyCapability) {
+ intentState.receivingOperatorList = true;
+ intentState.displayReadyCapability = (0, _util.createPromiseCapability)();
+ intentState.operatorList = {
+ fnArray: [],
+ argsArray: [],
+ lastChunk: false
+ };
+ stats.time('Page Request');
+ this.transport.messageHandler.send('RenderPageRequest', {
+ pageIndex: this.pageNumber - 1,
+ intent: renderingIntent,
+ renderInteractiveForms: params.renderInteractiveForms === true
+ });
+ }
+ var complete = error => {
+ var i = intentState.renderTasks.indexOf(internalRenderTask);
+ if (i >= 0) {
+ intentState.renderTasks.splice(i, 1);
+ }
+ if (this.cleanupAfterRender) {
+ this.pendingCleanup = true;
+ }
+ this._tryCleanup();
+ if (error) {
+ internalRenderTask.capability.reject(error);
+ } else {
+ internalRenderTask.capability.resolve();
+ }
+ stats.timeEnd('Rendering');
+ stats.timeEnd('Overall');
+ };
+ var internalRenderTask = new InternalRenderTask(complete, params, this.objs, this.commonObjs, intentState.operatorList, this.pageNumber, canvasFactory, webGLContext, this._pdfBug);
+ internalRenderTask.useRequestAnimationFrame = renderingIntent !== 'print';
+ if (!intentState.renderTasks) {
+ intentState.renderTasks = [];
+ }
+ intentState.renderTasks.push(internalRenderTask);
+ var renderTask = internalRenderTask.task;
+ intentState.displayReadyCapability.promise.then(transparency => {
+ if (this.pendingCleanup) {
+ complete();
+ return;
+ }
+ stats.time('Rendering');
+ internalRenderTask.initializeGraphics(transparency);
+ internalRenderTask.operatorListChanged();
+ }).catch(complete);
+ return renderTask;
+ },
+ getOperatorList: function PDFPageProxy_getOperatorList() {
+ function operatorListChanged() {
+ if (intentState.operatorList.lastChunk) {
+ intentState.opListReadCapability.resolve(intentState.operatorList);
+ var i = intentState.renderTasks.indexOf(opListTask);
+ if (i >= 0) {
+ intentState.renderTasks.splice(i, 1);
+ }
+ }
+ }
+ var renderingIntent = 'oplist';
+ if (!this.intentStates[renderingIntent]) {
+ this.intentStates[renderingIntent] = Object.create(null);
+ }
+ var intentState = this.intentStates[renderingIntent];
+ var opListTask;
+ if (!intentState.opListReadCapability) {
+ opListTask = {};
+ opListTask.operatorListChanged = operatorListChanged;
+ intentState.receivingOperatorList = true;
+ intentState.opListReadCapability = (0, _util.createPromiseCapability)();
+ intentState.renderTasks = [];
+ intentState.renderTasks.push(opListTask);
+ intentState.operatorList = {
+ fnArray: [],
+ argsArray: [],
+ lastChunk: false
+ };
+ this.transport.messageHandler.send('RenderPageRequest', {
+ pageIndex: this.pageIndex,
+ intent: renderingIntent
+ });
+ }
+ return intentState.opListReadCapability.promise;
+ },
+ streamTextContent(params = {}) {
+ const TEXT_CONTENT_CHUNK_SIZE = 100;
+ return this.transport.messageHandler.sendWithStream('GetTextContent', {
+ pageIndex: this.pageNumber - 1,
+ normalizeWhitespace: params.normalizeWhitespace === true,
+ combineTextItems: params.disableCombineTextItems !== true
+ }, {
+ highWaterMark: TEXT_CONTENT_CHUNK_SIZE,
+ size(textContent) {
+ return textContent.items.length;
+ }
+ });
+ },
+ getTextContent: function PDFPageProxy_getTextContent(params) {
+ params = params || {};
+ let readableStream = this.streamTextContent(params);
+ return new Promise(function (resolve, reject) {
+ function pump() {
+ reader.read().then(function ({ value, done }) {
+ if (done) {
+ resolve(textContent);
+ return;
+ }
+ _util.Util.extendObj(textContent.styles, value.styles);
+ _util.Util.appendToArray(textContent.items, value.items);
+ pump();
+ }, reject);
+ }
+ let reader = readableStream.getReader();
+ let textContent = {
+ items: [],
+ styles: Object.create(null)
+ };
+ pump();
+ });
+ },
+ _destroy: function PDFPageProxy_destroy() {
+ this.destroyed = true;
+ this.transport.pageCache[this.pageIndex] = null;
+ var waitOn = [];
+ Object.keys(this.intentStates).forEach(function (intent) {
+ if (intent === 'oplist') {
+ return;
+ }
+ var intentState = this.intentStates[intent];
+ intentState.renderTasks.forEach(function (renderTask) {
+ var renderCompleted = renderTask.capability.promise.catch(function () {});
+ waitOn.push(renderCompleted);
+ renderTask.cancel();
+ });
+ }, this);
+ this.objs.clear();
+ this.annotationsPromise = null;
+ this.pendingCleanup = false;
+ return Promise.all(waitOn);
+ },
+ cleanup(resetStats = false) {
+ this.pendingCleanup = true;
+ this._tryCleanup(resetStats);
+ },
+ _tryCleanup(resetStats = false) {
+ if (!this.pendingCleanup || Object.keys(this.intentStates).some(function (intent) {
+ var intentState = this.intentStates[intent];
+ return intentState.renderTasks.length !== 0 || intentState.receivingOperatorList;
+ }, this)) {
+ return;
+ }
+ Object.keys(this.intentStates).forEach(function (intent) {
+ delete this.intentStates[intent];
+ }, this);
+ this.objs.clear();
+ this.annotationsPromise = null;
+ if (resetStats && this._stats instanceof _dom_utils.StatTimer) {
+ this._stats = new _dom_utils.StatTimer();
+ }
+ this.pendingCleanup = false;
+ },
+ _startRenderPage: function PDFPageProxy_startRenderPage(transparency, intent) {
+ var intentState = this.intentStates[intent];
+ if (intentState.displayReadyCapability) {
+ intentState.displayReadyCapability.resolve(transparency);
+ }
+ },
+ _renderPageChunk: function PDFPageProxy_renderPageChunk(operatorListChunk, intent) {
+ var intentState = this.intentStates[intent];
+ var i, ii;
+ for (i = 0, ii = operatorListChunk.length; i < ii; i++) {
+ intentState.operatorList.fnArray.push(operatorListChunk.fnArray[i]);
+ intentState.operatorList.argsArray.push(operatorListChunk.argsArray[i]);
+ }
+ intentState.operatorList.lastChunk = operatorListChunk.lastChunk;
+ for (i = 0; i < intentState.renderTasks.length; i++) {
+ intentState.renderTasks[i].operatorListChanged();
+ }
+ if (operatorListChunk.lastChunk) {
+ intentState.receivingOperatorList = false;
+ this._tryCleanup();
+ }
+ },
+ get stats() {
+ return this._stats instanceof _dom_utils.StatTimer ? this._stats : null;
+ }
+ };
+ return PDFPageProxy;
+}();
+class LoopbackPort {
+ constructor(defer) {
+ this._listeners = [];
+ this._defer = defer;
+ this._deferred = Promise.resolve(undefined);
+ }
+ postMessage(obj, transfers) {
+ function cloneValue(value) {
+ if (typeof value !== 'object' || value === null) {
+ return value;
+ }
+ if (cloned.has(value)) {
+ return cloned.get(value);
+ }
+ var result;
+ var buffer;
+ if ((buffer = value.buffer) && (0, _util.isArrayBuffer)(buffer)) {
+ var transferable = transfers && transfers.includes(buffer);
+ if (value === buffer) {
+ result = value;
+ } else if (transferable) {
+ result = new value.constructor(buffer, value.byteOffset, value.byteLength);
+ } else {
+ result = new value.constructor(value);
+ }
+ cloned.set(value, result);
+ return result;
+ }
+ result = Array.isArray(value) ? [] : {};
+ cloned.set(value, result);
+ for (var i in value) {
+ var desc,
+ p = value;
+ while (!(desc = Object.getOwnPropertyDescriptor(p, i))) {
+ p = Object.getPrototypeOf(p);
+ }
+ if (typeof desc.value === 'undefined' || typeof desc.value === 'function') {
+ continue;
+ }
+ result[i] = cloneValue(desc.value);
+ }
+ return result;
+ }
+ if (!this._defer) {
+ this._listeners.forEach(function (listener) {
+ listener.call(this, { data: obj });
+ }, this);
+ return;
+ }
+ var cloned = new WeakMap();
+ var e = { data: cloneValue(obj) };
+ this._deferred.then(() => {
+ this._listeners.forEach(function (listener) {
+ listener.call(this, e);
+ }, this);
+ });
+ }
+ addEventListener(name, listener) {
+ this._listeners.push(listener);
+ }
+ removeEventListener(name, listener) {
+ var i = this._listeners.indexOf(listener);
+ this._listeners.splice(i, 1);
+ }
+ terminate() {
+ this._listeners = [];
+ }
}
-var PDFJS = _global_scope2.default.PDFJS;
-PDFJS.pdfBug = false;
-PDFJS.OPS = _util.OPS;
-PDFJS.UNSUPPORTED_FEATURES = _util.UNSUPPORTED_FEATURES;
-PDFJS.shadow = _util.shadow;
-PDFJS.createBlob = _util.createBlob;
-PDFJS.createObjectURL = function PDFJS_createObjectURL(data, contentType) {
- return (0, _util.createObjectURL)(data, contentType, PDFJS.disableCreateObjectURL);
-};
-Object.defineProperty(PDFJS, 'isLittleEndian', {
- configurable: true,
- get: function PDFJS_isLittleEndian() {
- return (0, _util.shadow)(PDFJS, 'isLittleEndian', (0, _util.isLittleEndian)());
- }
-});
-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;
-PDFJS.disableFontFace = PDFJS.disableFontFace === undefined ? false : PDFJS.disableFontFace;
-PDFJS.disableRange = PDFJS.disableRange === undefined ? false : PDFJS.disableRange;
-PDFJS.disableStream = PDFJS.disableStream === undefined ? false : PDFJS.disableStream;
-PDFJS.disableAutoFetch = PDFJS.disableAutoFetch === undefined ? false : PDFJS.disableAutoFetch;
-PDFJS.pdfBug = PDFJS.pdfBug === undefined ? false : PDFJS.pdfBug;
-PDFJS.disableCreateObjectURL = PDFJS.disableCreateObjectURL === undefined ? false : PDFJS.disableCreateObjectURL;
-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.getDocument = _api.getDocument;
-PDFJS.LoopbackPort = _api.LoopbackPort;
-PDFJS.PDFDataRangeTransport = _api.PDFDataRangeTransport;
-PDFJS.PDFWorker = _api.PDFWorker;
-PDFJS.GlobalWorkerOptions = _worker_options.GlobalWorkerOptions;
-PDFJS.getFilenameFromUrl = _dom_utils.getFilenameFromUrl;
-PDFJS.AnnotationLayer = _annotation_layer.AnnotationLayer;
-PDFJS.renderTextLayer = _text_layer.renderTextLayer;
-PDFJS.Metadata = _metadata.Metadata;
-PDFJS.SVGGraphics = _svg.SVGGraphics;
-exports.globalScope = _global_scope2.default;
-exports.PDFJS = PDFJS;
+var PDFWorker = function PDFWorkerClosure() {
+ let nextFakeWorkerId = 0;
+ function getWorkerSrc() {
+ if (_worker_options.GlobalWorkerOptions.workerSrc) {
+ return _worker_options.GlobalWorkerOptions.workerSrc;
+ }
+ if (typeof workerSrc !== 'undefined') {
+ return workerSrc;
+ }
+ throw new Error('No "GlobalWorkerOptions.workerSrc" specified.');
+ }
+ function getMainThreadWorkerMessageHandler() {
+ if (typeof window === 'undefined') {
+ return null;
+ }
+ return window.pdfjsWorker && window.pdfjsWorker.WorkerMessageHandler;
+ }
+ let fakeWorkerFilesLoadedCapability;
+ function setupFakeWorkerGlobal() {
+ if (fakeWorkerFilesLoadedCapability) {
+ return fakeWorkerFilesLoadedCapability.promise;
+ }
+ fakeWorkerFilesLoadedCapability = (0, _util.createPromiseCapability)();
+ let mainWorkerMessageHandler = getMainThreadWorkerMessageHandler();
+ if (mainWorkerMessageHandler) {
+ fakeWorkerFilesLoadedCapability.resolve(mainWorkerMessageHandler);
+ return fakeWorkerFilesLoadedCapability.promise;
+ }
+ let loader = fakeWorkerFilesLoader || function (callback) {
+ _util.Util.loadScript(getWorkerSrc(), function () {
+ callback(window.pdfjsWorker.WorkerMessageHandler);
+ });
+ };
+ loader(fakeWorkerFilesLoadedCapability.resolve);
+ return fakeWorkerFilesLoadedCapability.promise;
+ }
+ function createCDNWrapper(url) {
+ var wrapper = 'importScripts(\'' + url + '\');';
+ return URL.createObjectURL(new Blob([wrapper]));
+ }
+ let pdfWorkerPorts = new WeakMap();
+ function PDFWorker({ name = null, port = null, postMessageTransfers = true, verbosity = null } = {}) {
+ if (port && pdfWorkerPorts.has(port)) {
+ throw new Error('Cannot use more than one PDFWorker per port');
+ }
+ this.name = name;
+ this.destroyed = false;
+ this.postMessageTransfers = postMessageTransfers !== false;
+ this.verbosity = (0, _util.isNum)(verbosity) ? verbosity : (0, _util.getVerbosityLevel)();
+ this._readyCapability = (0, _util.createPromiseCapability)();
+ this._port = null;
+ this._webWorker = null;
+ this._messageHandler = null;
+ if (port) {
+ pdfWorkerPorts.set(port, this);
+ this._initializeFromPort(port);
+ return;
+ }
+ this._initialize();
+ }
+ PDFWorker.prototype = {
+ get promise() {
+ return this._readyCapability.promise;
+ },
+ get port() {
+ return this._port;
+ },
+ get messageHandler() {
+ return this._messageHandler;
+ },
+ _initializeFromPort: function PDFWorker_initializeFromPort(port) {
+ this._port = port;
+ this._messageHandler = new _util.MessageHandler('main', 'worker', port);
+ this._messageHandler.on('ready', function () {});
+ this._readyCapability.resolve();
+ },
+ _initialize: function PDFWorker_initialize() {
+ if (typeof Worker !== 'undefined' && !isWorkerDisabled && !getMainThreadWorkerMessageHandler()) {
+ var workerSrc = getWorkerSrc();
+ try {
+ var worker = new Worker(workerSrc);
+ var messageHandler = new _util.MessageHandler('main', 'worker', worker);
+ var terminateEarly = () => {
+ worker.removeEventListener('error', onWorkerError);
+ messageHandler.destroy();
+ worker.terminate();
+ if (this.destroyed) {
+ this._readyCapability.reject(new Error('Worker was destroyed'));
+ } else {
+ this._setupFakeWorker();
+ }
+ };
+ var onWorkerError = () => {
+ if (!this._webWorker) {
+ terminateEarly();
+ }
+ };
+ worker.addEventListener('error', onWorkerError);
+ messageHandler.on('test', data => {
+ worker.removeEventListener('error', onWorkerError);
+ if (this.destroyed) {
+ terminateEarly();
+ return;
+ }
+ var supportTypedArray = data && data.supportTypedArray;
+ if (supportTypedArray) {
+ this._messageHandler = messageHandler;
+ this._port = worker;
+ this._webWorker = worker;
+ if (!data.supportTransfers) {
+ this.postMessageTransfers = false;
+ }
+ this._readyCapability.resolve();
+ messageHandler.send('configure', { verbosity: this.verbosity });
+ } else {
+ this._setupFakeWorker();
+ messageHandler.destroy();
+ worker.terminate();
+ }
+ });
+ messageHandler.on('ready', data => {
+ worker.removeEventListener('error', onWorkerError);
+ if (this.destroyed) {
+ terminateEarly();
+ return;
+ }
+ try {
+ sendTest();
+ } catch (e) {
+ this._setupFakeWorker();
+ }
+ });
+ const sendTest = () => {
+ let testObj = new Uint8Array([this.postMessageTransfers ? 255 : 0]);
+ try {
+ messageHandler.send('test', testObj, [testObj.buffer]);
+ } catch (ex) {
+ (0, _util.info)('Cannot use postMessage transfers');
+ testObj[0] = 0;
+ messageHandler.send('test', testObj);
+ }
+ };
+ sendTest();
+ return;
+ } catch (e) {
+ (0, _util.info)('The worker has been disabled.');
+ }
+ }
+ this._setupFakeWorker();
+ },
+ _setupFakeWorker: function PDFWorker_setupFakeWorker() {
+ if (!isWorkerDisabled) {
+ (0, _util.warn)('Setting up fake worker.');
+ isWorkerDisabled = true;
+ }
+ setupFakeWorkerGlobal().then(WorkerMessageHandler => {
+ if (this.destroyed) {
+ this._readyCapability.reject(new Error('Worker was destroyed'));
+ return;
+ }
+ var isTypedArraysPresent = Uint8Array !== Float32Array;
+ var port = new LoopbackPort(isTypedArraysPresent);
+ this._port = port;
+ var id = 'fake' + nextFakeWorkerId++;
+ var workerHandler = new _util.MessageHandler(id + '_worker', id, port);
+ WorkerMessageHandler.setup(workerHandler, port);
+ var messageHandler = new _util.MessageHandler(id, id + '_worker', port);
+ this._messageHandler = messageHandler;
+ this._readyCapability.resolve();
+ });
+ },
+ destroy: function PDFWorker_destroy() {
+ this.destroyed = true;
+ if (this._webWorker) {
+ this._webWorker.terminate();
+ this._webWorker = null;
+ }
+ pdfWorkerPorts.delete(this._port);
+ this._port = null;
+ if (this._messageHandler) {
+ this._messageHandler.destroy();
+ this._messageHandler = null;
+ }
+ }
+ };
+ PDFWorker.fromPort = function (params) {
+ if (pdfWorkerPorts.has(params.port)) {
+ return pdfWorkerPorts.get(params.port);
+ }
+ return new PDFWorker(params);
+ };
+ PDFWorker.getWorkerSrc = function () {
+ return getWorkerSrc();
+ };
+ return PDFWorker;
+}();
+var WorkerTransport = function WorkerTransportClosure() {
+ function WorkerTransport(messageHandler, loadingTask, networkStream, params, CMapReaderFactory) {
+ this.messageHandler = messageHandler;
+ this.loadingTask = loadingTask;
+ this.commonObjs = new PDFObjects();
+ this.fontLoader = new _font_loader.FontLoader(loadingTask.docId);
+ this._params = params;
+ this.CMapReaderFactory = new CMapReaderFactory({
+ baseUrl: params.cMapUrl,
+ isCompressed: params.cMapPacked
+ });
+ this.destroyed = false;
+ this.destroyCapability = null;
+ this._passwordCapability = null;
+ this._networkStream = networkStream;
+ this._fullReader = null;
+ this._lastProgress = null;
+ this.pageCache = [];
+ this.pagePromises = [];
+ this.downloadInfoCapability = (0, _util.createPromiseCapability)();
+ this.setupMessageHandler();
+ }
+ WorkerTransport.prototype = {
+ destroy: function WorkerTransport_destroy() {
+ if (this.destroyCapability) {
+ return this.destroyCapability.promise;
+ }
+ this.destroyed = true;
+ this.destroyCapability = (0, _util.createPromiseCapability)();
+ if (this._passwordCapability) {
+ this._passwordCapability.reject(new Error('Worker was destroyed during onPassword callback'));
+ }
+ var waitOn = [];
+ this.pageCache.forEach(function (page) {
+ if (page) {
+ waitOn.push(page._destroy());
+ }
+ });
+ this.pageCache = [];
+ this.pagePromises = [];
+ var terminated = this.messageHandler.sendWithPromise('Terminate', null);
+ waitOn.push(terminated);
+ Promise.all(waitOn).then(() => {
+ this.fontLoader.clear();
+ if (this._networkStream) {
+ this._networkStream.cancelAllRequests();
+ }
+ if (this.messageHandler) {
+ this.messageHandler.destroy();
+ this.messageHandler = null;
+ }
+ this.destroyCapability.resolve();
+ }, this.destroyCapability.reject);
+ return this.destroyCapability.promise;
+ },
+ setupMessageHandler: function WorkerTransport_setupMessageHandler() {
+ var messageHandler = this.messageHandler;
+ var loadingTask = this.loadingTask;
+ messageHandler.on('GetReader', function (data, sink) {
+ (0, _util.assert)(this._networkStream);
+ this._fullReader = this._networkStream.getFullReader();
+ this._fullReader.onProgress = evt => {
+ this._lastProgress = {
+ loaded: evt.loaded,
+ total: evt.total
+ };
+ };
+ sink.onPull = () => {
+ this._fullReader.read().then(function ({ value, done }) {
+ if (done) {
+ sink.close();
+ return;
+ }
+ (0, _util.assert)((0, _util.isArrayBuffer)(value));
+ sink.enqueue(new Uint8Array(value), 1, [value]);
+ }).catch(reason => {
+ sink.error(reason);
+ });
+ };
+ sink.onCancel = reason => {
+ this._fullReader.cancel(reason);
+ };
+ }, this);
+ messageHandler.on('ReaderHeadersReady', function (data) {
+ let headersCapability = (0, _util.createPromiseCapability)();
+ let fullReader = this._fullReader;
+ fullReader.headersReady.then(() => {
+ if (!fullReader.isStreamingSupported || !fullReader.isRangeSupported) {
+ if (this._lastProgress) {
+ let loadingTask = this.loadingTask;
+ if (loadingTask.onProgress) {
+ loadingTask.onProgress(this._lastProgress);
+ }
+ }
+ fullReader.onProgress = evt => {
+ let loadingTask = this.loadingTask;
+ if (loadingTask.onProgress) {
+ loadingTask.onProgress({
+ loaded: evt.loaded,
+ total: evt.total
+ });
+ }
+ };
+ }
+ headersCapability.resolve({
+ isStreamingSupported: fullReader.isStreamingSupported,
+ isRangeSupported: fullReader.isRangeSupported,
+ contentLength: fullReader.contentLength
+ });
+ }, headersCapability.reject);
+ return headersCapability.promise;
+ }, this);
+ messageHandler.on('GetRangeReader', function (data, sink) {
+ (0, _util.assert)(this._networkStream);
+ let _rangeReader = this._networkStream.getRangeReader(data.begin, data.end);
+ sink.onPull = () => {
+ _rangeReader.read().then(function ({ value, done }) {
+ if (done) {
+ sink.close();
+ return;
+ }
+ (0, _util.assert)((0, _util.isArrayBuffer)(value));
+ sink.enqueue(new Uint8Array(value), 1, [value]);
+ }).catch(reason => {
+ sink.error(reason);
+ });
+ };
+ sink.onCancel = reason => {
+ _rangeReader.cancel(reason);
+ };
+ }, this);
+ messageHandler.on('GetDoc', function transportDoc({ pdfInfo }) {
+ this.numPages = pdfInfo.numPages;
+ var loadingTask = this.loadingTask;
+ var pdfDocument = new PDFDocumentProxy(pdfInfo, this, loadingTask);
+ this.pdfDocument = pdfDocument;
+ loadingTask._capability.resolve(pdfDocument);
+ }, this);
+ messageHandler.on('PasswordRequest', function transportPasswordRequest(exception) {
+ this._passwordCapability = (0, _util.createPromiseCapability)();
+ if (loadingTask.onPassword) {
+ var updatePassword = password => {
+ this._passwordCapability.resolve({ password });
+ };
+ loadingTask.onPassword(updatePassword, exception.code);
+ } else {
+ 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 _util.PasswordException(exception.message, exception.code));
+ }, this);
+ messageHandler.on('InvalidPDF', function transportInvalidPDF(exception) {
+ this.loadingTask._capability.reject(new _util.InvalidPDFException(exception.message));
+ }, this);
+ messageHandler.on('MissingPDF', function transportMissingPDF(exception) {
+ this.loadingTask._capability.reject(new _util.MissingPDFException(exception.message));
+ }, this);
+ messageHandler.on('UnexpectedResponse', function transportUnexpectedResponse(exception) {
+ this.loadingTask._capability.reject(new _util.UnexpectedResponseException(exception.message, exception.status));
+ }, this);
+ messageHandler.on('UnknownError', function transportUnknownError(exception) {
+ this.loadingTask._capability.reject(new _util.UnknownErrorException(exception.message, exception.details));
+ }, this);
+ messageHandler.on('DataLoaded', function transportPage(data) {
+ this.downloadInfoCapability.resolve(data);
+ }, this);
+ messageHandler.on('PDFManagerReady', function transportPage(data) {}, this);
+ messageHandler.on('StartRenderPage', function transportRender(data) {
+ if (this.destroyed) {
+ return;
+ }
+ var page = this.pageCache[data.pageIndex];
+ page._stats.timeEnd('Page Request');
+ page._startRenderPage(data.transparency, data.intent);
+ }, this);
+ messageHandler.on('RenderPageChunk', function transportRender(data) {
+ if (this.destroyed) {
+ return;
+ }
+ var page = this.pageCache[data.pageIndex];
+ page._renderPageChunk(data.operatorList, data.intent);
+ }, this);
+ messageHandler.on('commonobj', function transportObj(data) {
+ if (this.destroyed) {
+ return;
+ }
+ var id = data[0];
+ var type = data[1];
+ if (this.commonObjs.hasData(id)) {
+ return;
+ }
+ switch (type) {
+ case 'Font':
+ var exportedData = data[2];
+ let params = this._params;
+ if ('error' in exportedData) {
+ var exportedError = exportedData.error;
+ (0, _util.warn)('Error during font loading: ' + exportedError);
+ this.commonObjs.resolve(id, exportedError);
+ break;
+ }
+ var fontRegistry = null;
+ if (params.pdfBug && _global_scope2.default.FontInspector && _global_scope2.default.FontInspector.enabled) {
+ fontRegistry = {
+ registerFont(font, url) {
+ _global_scope2.default['FontInspector'].fontAdded(font, url);
+ }
+ };
+ }
+ var font = new _font_loader.FontFaceObject(exportedData, {
+ isEvalSupported: params.isEvalSupported,
+ disableFontFace: params.disableFontFace,
+ fontRegistry
+ });
+ var fontReady = fontObjs => {
+ this.commonObjs.resolve(id, font);
+ };
+ this.fontLoader.bind([font], fontReady);
+ break;
+ case 'FontPath':
+ this.commonObjs.resolve(id, data[2]);
+ break;
+ default:
+ throw new Error(`Got unknown common object type ${type}`);
+ }
+ }, this);
+ messageHandler.on('obj', function transportObj(data) {
+ if (this.destroyed) {
+ return;
+ }
+ var id = data[0];
+ var pageIndex = data[1];
+ var type = data[2];
+ var pageProxy = this.pageCache[pageIndex];
+ var imageData;
+ if (pageProxy.objs.hasData(id)) {
+ return;
+ }
+ switch (type) {
+ case 'JpegStream':
+ imageData = data[3];
+ return new Promise((resolve, reject) => {
+ const img = new Image();
+ img.onload = function () {
+ resolve(img);
+ };
+ img.onerror = function () {
+ reject(new Error('Error during JPEG image loading'));
+ };
+ img.src = imageData;
+ }).then(img => {
+ pageProxy.objs.resolve(id, img);
+ });
+ case 'Image':
+ imageData = data[3];
+ pageProxy.objs.resolve(id, imageData);
+ var MAX_IMAGE_SIZE_TO_STORE = 8000000;
+ if (imageData && 'data' in imageData && imageData.data.length > MAX_IMAGE_SIZE_TO_STORE) {
+ pageProxy.cleanupAfterRender = true;
+ }
+ break;
+ default:
+ throw new Error(`Got unknown object type ${type}`);
+ }
+ }, this);
+ messageHandler.on('DocProgress', function transportDocProgress(data) {
+ if (this.destroyed) {
+ return;
+ }
+ var loadingTask = this.loadingTask;
+ if (loadingTask.onProgress) {
+ loadingTask.onProgress({
+ loaded: data.loaded,
+ total: data.total
+ });
+ }
+ }, this);
+ messageHandler.on('PageError', function transportError(data) {
+ if (this.destroyed) {
+ return;
+ }
+ var page = this.pageCache[data.pageNum - 1];
+ var intentState = page.intentStates[data.intent];
+ if (intentState.displayReadyCapability) {
+ intentState.displayReadyCapability.reject(data.error);
+ } else {
+ throw new Error(data.error);
+ }
+ if (intentState.operatorList) {
+ intentState.operatorList.lastChunk = true;
+ for (var i = 0; i < intentState.renderTasks.length; i++) {
+ intentState.renderTasks[i].operatorListChanged();
+ }
+ }
+ }, this);
+ messageHandler.on('UnsupportedFeature', function (data) {
+ if (this.destroyed) {
+ return;
+ }
+ let loadingTask = this.loadingTask;
+ if (loadingTask.onUnsupportedFeature) {
+ loadingTask.onUnsupportedFeature(data.featureId);
+ }
+ }, this);
+ messageHandler.on('JpegDecode', function (data) {
+ if (this.destroyed) {
+ return Promise.reject(new Error('Worker was destroyed'));
+ }
+ if (typeof document === 'undefined') {
+ return Promise.reject(new Error('"document" is not defined.'));
+ }
+ var imageUrl = data[0];
+ var components = data[1];
+ if (components !== 3 && components !== 1) {
+ return Promise.reject(new Error('Only 3 components or 1 component can be returned'));
+ }
+ return new Promise(function (resolve, reject) {
+ var img = new Image();
+ img.onload = function () {
+ var width = img.width;
+ var height = img.height;
+ var size = width * height;
+ var rgbaLength = size * 4;
+ var buf = new Uint8Array(size * components);
+ var tmpCanvas = document.createElement('canvas');
+ tmpCanvas.width = width;
+ tmpCanvas.height = height;
+ var tmpCtx = tmpCanvas.getContext('2d');
+ tmpCtx.drawImage(img, 0, 0);
+ var data = tmpCtx.getImageData(0, 0, width, height).data;
+ var i, j;
+ if (components === 3) {
+ for (i = 0, j = 0; i < rgbaLength; i += 4, j += 3) {
+ buf[j] = data[i];
+ buf[j + 1] = data[i + 1];
+ buf[j + 2] = data[i + 2];
+ }
+ } else if (components === 1) {
+ for (i = 0, j = 0; i < rgbaLength; i += 4, j++) {
+ buf[j] = data[i];
+ }
+ }
+ resolve({
+ data: buf,
+ width,
+ height
+ });
+ };
+ img.onerror = function () {
+ reject(new Error('JpegDecode failed to load image'));
+ };
+ img.src = imageUrl;
+ });
+ }, this);
+ messageHandler.on('FetchBuiltInCMap', function (data) {
+ if (this.destroyed) {
+ return Promise.reject(new Error('Worker was destroyed'));
+ }
+ return this.CMapReaderFactory.fetch({ name: data.name });
+ }, this);
+ },
+ getData: function WorkerTransport_getData() {
+ return this.messageHandler.sendWithPromise('GetData', null);
+ },
+ getPage(pageNumber) {
+ if (!Number.isInteger(pageNumber) || pageNumber <= 0 || pageNumber > this.numPages) {
+ return Promise.reject(new Error('Invalid page request'));
+ }
+ var pageIndex = pageNumber - 1;
+ if (pageIndex in this.pagePromises) {
+ return this.pagePromises[pageIndex];
+ }
+ var promise = this.messageHandler.sendWithPromise('GetPage', { pageIndex }).then(pageInfo => {
+ if (this.destroyed) {
+ throw new Error('Transport destroyed');
+ }
+ let page = new PDFPageProxy(pageIndex, pageInfo, this, this._params.pdfBug);
+ this.pageCache[pageIndex] = page;
+ return page;
+ });
+ this.pagePromises[pageIndex] = promise;
+ return promise;
+ },
+ getPageIndex: function WorkerTransport_getPageIndexByRef(ref) {
+ return this.messageHandler.sendWithPromise('GetPageIndex', { ref }).catch(function (reason) {
+ return Promise.reject(new Error(reason));
+ });
+ },
+ getAnnotations: function WorkerTransport_getAnnotations(pageIndex, intent) {
+ return this.messageHandler.sendWithPromise('GetAnnotations', {
+ pageIndex,
+ intent
+ });
+ },
+ getDestinations: function WorkerTransport_getDestinations() {
+ return this.messageHandler.sendWithPromise('GetDestinations', null);
+ },
+ getDestination: function WorkerTransport_getDestination(id) {
+ return this.messageHandler.sendWithPromise('GetDestination', { id });
+ },
+ getPageLabels: function WorkerTransport_getPageLabels() {
+ return this.messageHandler.sendWithPromise('GetPageLabels', null);
+ },
+ getPageMode() {
+ return this.messageHandler.sendWithPromise('GetPageMode', null);
+ },
+ getAttachments: function WorkerTransport_getAttachments() {
+ return this.messageHandler.sendWithPromise('GetAttachments', null);
+ },
+ getJavaScript: function WorkerTransport_getJavaScript() {
+ return this.messageHandler.sendWithPromise('GetJavaScript', null);
+ },
+ getOutline: function WorkerTransport_getOutline() {
+ return this.messageHandler.sendWithPromise('GetOutline', null);
+ },
+ getMetadata: function WorkerTransport_getMetadata() {
+ return this.messageHandler.sendWithPromise('GetMetadata', null).then(results => {
+ return {
+ info: results[0],
+ metadata: results[1] ? new _metadata.Metadata(results[1]) : null,
+ contentDispositionFilename: this._fullReader ? this._fullReader.filename : null
+ };
+ });
+ },
+ getStats: function WorkerTransport_getStats() {
+ return this.messageHandler.sendWithPromise('GetStats', null);
+ },
+ startCleanup: function WorkerTransport_startCleanup() {
+ this.messageHandler.sendWithPromise('Cleanup', null).then(() => {
+ for (var i = 0, ii = this.pageCache.length; i < ii; i++) {
+ var page = this.pageCache[i];
+ if (page) {
+ page.cleanup();
+ }
+ }
+ this.commonObjs.clear();
+ this.fontLoader.clear();
+ });
+ },
+ get loadingParams() {
+ let params = this._params;
+ return (0, _util.shadow)(this, 'loadingParams', {
+ disableRange: params.disableRange,
+ disableStream: params.disableStream,
+ disableAutoFetch: params.disableAutoFetch,
+ disableCreateObjectURL: params.disableCreateObjectURL
+ });
+ }
+ };
+ return WorkerTransport;
+}();
+var PDFObjects = function PDFObjectsClosure() {
+ function PDFObjects() {
+ this.objs = Object.create(null);
+ }
+ PDFObjects.prototype = {
+ ensureObj: function PDFObjects_ensureObj(objId) {
+ if (this.objs[objId]) {
+ return this.objs[objId];
+ }
+ var obj = {
+ capability: (0, _util.createPromiseCapability)(),
+ data: null,
+ resolved: false
+ };
+ this.objs[objId] = obj;
+ return obj;
+ },
+ get: function PDFObjects_get(objId, callback) {
+ if (callback) {
+ this.ensureObj(objId).capability.promise.then(callback);
+ return null;
+ }
+ var obj = this.objs[objId];
+ if (!obj || !obj.resolved) {
+ throw new Error(`Requesting object that isn't resolved yet ${objId}`);
+ }
+ return obj.data;
+ },
+ resolve: function PDFObjects_resolve(objId, data) {
+ var obj = this.ensureObj(objId);
+ obj.resolved = true;
+ obj.data = data;
+ obj.capability.resolve(data);
+ },
+ isResolved: function PDFObjects_isResolved(objId) {
+ var objs = this.objs;
+ if (!objs[objId]) {
+ return false;
+ }
+ return objs[objId].resolved;
+ },
+ hasData: function PDFObjects_hasData(objId) {
+ return this.isResolved(objId);
+ },
+ getData: function PDFObjects_getData(objId) {
+ var objs = this.objs;
+ if (!objs[objId] || !objs[objId].resolved) {
+ return null;
+ }
+ return objs[objId].data;
+ },
+ clear: function PDFObjects_clear() {
+ this.objs = Object.create(null);
+ }
+ };
+ return PDFObjects;
+}();
+var RenderTask = function RenderTaskClosure() {
+ function RenderTask(internalRenderTask) {
+ this._internalRenderTask = internalRenderTask;
+ this.onContinue = null;
+ }
+ RenderTask.prototype = {
+ get promise() {
+ return this._internalRenderTask.capability.promise;
+ },
+ cancel: function RenderTask_cancel() {
+ this._internalRenderTask.cancel();
+ },
+ then: function RenderTask_then(onFulfilled, onRejected) {
+ return this.promise.then.apply(this.promise, arguments);
+ }
+ };
+ return RenderTask;
+}();
+var InternalRenderTask = function InternalRenderTaskClosure() {
+ let canvasInRendering = new WeakMap();
+ function InternalRenderTask(callback, params, objs, commonObjs, operatorList, pageNumber, canvasFactory, webGLContext, pdfBug = false) {
+ this.callback = callback;
+ this.params = params;
+ this.objs = objs;
+ this.commonObjs = commonObjs;
+ this.operatorListIdx = null;
+ this.operatorList = operatorList;
+ this.pageNumber = pageNumber;
+ this.canvasFactory = canvasFactory;
+ this.webGLContext = webGLContext;
+ this._pdfBug = pdfBug;
+ this.running = false;
+ this.graphicsReadyCallback = null;
+ this.graphicsReady = false;
+ this.useRequestAnimationFrame = false;
+ this.cancelled = false;
+ this.capability = (0, _util.createPromiseCapability)();
+ this.task = new RenderTask(this);
+ this._continueBound = this._continue.bind(this);
+ this._scheduleNextBound = this._scheduleNext.bind(this);
+ this._nextBound = this._next.bind(this);
+ this._canvas = params.canvasContext.canvas;
+ }
+ InternalRenderTask.prototype = {
+ initializeGraphics: function InternalRenderTask_initializeGraphics(transparency) {
+ if (this._canvas) {
+ if (canvasInRendering.has(this._canvas)) {
+ throw new Error('Cannot use the same canvas during multiple render() operations. ' + 'Use different canvas or ensure previous operations were ' + 'cancelled or completed.');
+ }
+ canvasInRendering.set(this._canvas, this);
+ }
+ if (this.cancelled) {
+ return;
+ }
+ if (this._pdfBug && _global_scope2.default.StepperManager && _global_scope2.default.StepperManager.enabled) {
+ this.stepper = _global_scope2.default.StepperManager.create(this.pageNumber - 1);
+ this.stepper.init(this.operatorList);
+ this.stepper.nextBreakPoint = this.stepper.getNextBreakPoint();
+ }
+ var params = this.params;
+ this.gfx = new _canvas.CanvasGraphics(params.canvasContext, this.commonObjs, this.objs, this.canvasFactory, this.webGLContext, params.imageLayer);
+ this.gfx.beginDrawing({
+ transform: params.transform,
+ viewport: params.viewport,
+ transparency,
+ background: params.background
+ });
+ this.operatorListIdx = 0;
+ this.graphicsReady = true;
+ if (this.graphicsReadyCallback) {
+ this.graphicsReadyCallback();
+ }
+ },
+ cancel: function InternalRenderTask_cancel() {
+ this.running = false;
+ this.cancelled = true;
+ if (this._canvas) {
+ canvasInRendering.delete(this._canvas);
+ }
+ this.callback(new _dom_utils.RenderingCancelledException('Rendering cancelled, page ' + this.pageNumber, 'canvas'));
+ },
+ operatorListChanged: function InternalRenderTask_operatorListChanged() {
+ if (!this.graphicsReady) {
+ if (!this.graphicsReadyCallback) {
+ this.graphicsReadyCallback = this._continueBound;
+ }
+ return;
+ }
+ if (this.stepper) {
+ this.stepper.updateOperatorList(this.operatorList);
+ }
+ if (this.running) {
+ return;
+ }
+ this._continue();
+ },
+ _continue: function InternalRenderTask__continue() {
+ this.running = true;
+ if (this.cancelled) {
+ return;
+ }
+ if (this.task.onContinue) {
+ this.task.onContinue(this._scheduleNextBound);
+ } else {
+ this._scheduleNext();
+ }
+ },
+ _scheduleNext: function InternalRenderTask__scheduleNext() {
+ if (this.useRequestAnimationFrame && typeof window !== 'undefined') {
+ window.requestAnimationFrame(this._nextBound);
+ } else {
+ Promise.resolve(undefined).then(this._nextBound);
+ }
+ },
+ _next: function InternalRenderTask__next() {
+ if (this.cancelled) {
+ return;
+ }
+ this.operatorListIdx = this.gfx.executeOperatorList(this.operatorList, this.operatorListIdx, this._continueBound, this.stepper);
+ if (this.operatorListIdx === this.operatorList.argsArray.length) {
+ this.running = false;
+ if (this.operatorList.lastChunk) {
+ this.gfx.endDrawing();
+ if (this._canvas) {
+ canvasInRendering.delete(this._canvas);
+ }
+ this.callback();
+ }
+ }
+ }
+ };
+ return InternalRenderTask;
+}();
+var version, build;
+{
+ exports.version = version = '2.0.447';
+ exports.build = build = 'c0b22da0';
+}
+exports.getDocument = getDocument;
+exports.LoopbackPort = LoopbackPort;
+exports.PDFDataRangeTransport = PDFDataRangeTransport;
+exports.PDFWorker = PDFWorker;
+exports.PDFDocumentProxy = PDFDocumentProxy;
+exports.PDFPageProxy = PDFPageProxy;
+exports.setPDFNetworkStreamFactory = setPDFNetworkStreamFactory;
+exports.version = version;
+exports.build = build;
/***/ }),
-/* 14 */
+/* 10 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
@@ -7838,49 +6430,47 @@ FontLoader.prototype = {
;
;
var IsEvalSupportedCached = {
get value() {
return (0, _util.shadow)(this, 'value', (0, _util.isEvalSupported)());
}
};
var FontFaceObject = function FontFaceObjectClosure() {
- function FontFaceObject(translatedData, options) {
+ function FontFaceObject(translatedData, { isEvalSupported = true, disableFontFace = false, fontRegistry = null }) {
this.compiledGlyphs = Object.create(null);
for (var i in translatedData) {
this[i] = translatedData[i];
}
- this.options = options;
+ this.isEvalSupported = isEvalSupported !== false;
+ this.disableFontFace = disableFontFace === true;
+ this.fontRegistry = fontRegistry;
}
FontFaceObject.prototype = {
createNativeFontFace: function FontFaceObject_createNativeFontFace() {
throw new Error('Not implemented: createNativeFontFace');
},
createFontFaceRule: function FontFaceObject_createFontFaceRule() {
- if (!this.data) {
- return null;
- }
- if (this.options.disableFontFace) {
- this.disableFontFace = true;
+ if (!this.data || this.disableFontFace) {
return null;
}
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 + '}';
- if (this.options.fontRegistry) {
- this.options.fontRegistry.registerFont(this, url);
+ if (this.fontRegistry) {
+ this.fontRegistry.registerFont(this, url);
}
return rule;
},
getPathGenerator: function FontFaceObject_getPathGenerator(objs, character) {
if (!(character in this.compiledGlyphs)) {
var cmds = objs.get(this.loadedName + '_path_' + character);
var current, i, len;
- if (this.options.isEvalSupported && IsEvalSupportedCached.value) {
+ if (this.isEvalSupported && IsEvalSupportedCached.value) {
var args,
js = '';
for (i = 0, len = cmds.length; i < len; i++) {
current = cmds[i];
if (current.args !== undefined) {
args = current.args.join(',');
} else {
args = '';
@@ -7904,30 +6494,30 @@ var FontFaceObject = function FontFaceOb
}
};
return FontFaceObject;
}();
exports.FontFaceObject = FontFaceObject;
exports.FontLoader = FontLoader;
/***/ }),
-/* 15 */
+/* 11 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.CanvasGraphics = undefined;
var _util = __w_pdfjs_require__(0);
-var _pattern_helper = __w_pdfjs_require__(16);
+var _pattern_helper = __w_pdfjs_require__(12);
var MIN_FONT_SIZE = 16;
var MAX_FONT_SIZE = 100;
var MAX_GROUP_SIZE = 4096;
var MIN_WIDTH_FACTOR = 0.65;
var COMPILE_TYPE3_GLYPHS = true;
var MAX_SIZE_TO_COMPILE = 1000;
var FULL_CHUNK_HEIGHT = 16;
@@ -9645,17 +8235,17 @@ var CanvasGraphics = function CanvasGrap
for (var op in _util.OPS) {
CanvasGraphics.prototype[_util.OPS[op]] = CanvasGraphics.prototype[op];
}
return CanvasGraphics;
}();
exports.CanvasGraphics = CanvasGraphics;
/***/ }),
-/* 16 */
+/* 12 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
@@ -10027,17 +8617,112 @@ var TilingPattern = function TilingPatte
}
};
return TilingPattern;
}();
exports.getShadingPatternFromIR = getShadingPatternFromIR;
exports.TilingPattern = TilingPattern;
/***/ }),
-/* 17 */
+/* 13 */
+/***/ (function(module, exports, __w_pdfjs_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.Metadata = undefined;
+
+var _util = __w_pdfjs_require__(0);
+
+var _dom_utils = __w_pdfjs_require__(1);
+
+class Metadata {
+ constructor(data) {
+ (0, _util.assert)(typeof data === 'string', 'Metadata: input is not a string');
+ data = this._repair(data);
+ let parser = new _dom_utils.SimpleXMLParser();
+ data = parser.parseFromString(data);
+ this._metadata = Object.create(null);
+ this._parse(data);
+ }
+ _repair(data) {
+ return data.replace(/>\\376\\377([^<]+)/g, function (all, codes) {
+ let bytes = codes.replace(/\\([0-3])([0-7])([0-7])/g, function (code, d1, d2, d3) {
+ return String.fromCharCode(d1 * 64 + d2 * 8 + d3 * 1);
+ }).replace(/&(amp|apos|gt|lt|quot);/g, function (str, name) {
+ switch (name) {
+ case 'amp':
+ return '&';
+ case 'apos':
+ return '\'';
+ case 'gt':
+ return '>';
+ case 'lt':
+ return '<';
+ case 'quot':
+ return '\"';
+ }
+ throw new Error(`_repair: ${name} isn't defined.`);
+ });
+ let chars = '';
+ for (let i = 0, ii = bytes.length; i < ii; i += 2) {
+ let code = bytes.charCodeAt(i) * 256 + bytes.charCodeAt(i + 1);
+ if (code >= 32 && code < 127 && code !== 60 && code !== 62 && code !== 38) {
+ chars += String.fromCharCode(code);
+ } else {
+ chars += '&#x' + (0x10000 + code).toString(16).substring(1) + ';';
+ }
+ }
+ return '>' + chars;
+ });
+ }
+ _parse(domDocument) {
+ let rdf = domDocument.documentElement;
+ if (rdf.nodeName.toLowerCase() !== 'rdf:rdf') {
+ rdf = rdf.firstChild;
+ while (rdf && rdf.nodeName.toLowerCase() !== 'rdf:rdf') {
+ rdf = rdf.nextSibling;
+ }
+ }
+ let nodeName = rdf ? rdf.nodeName.toLowerCase() : null;
+ if (!rdf || nodeName !== 'rdf:rdf' || !rdf.hasChildNodes()) {
+ return;
+ }
+ let children = rdf.childNodes;
+ for (let i = 0, ii = children.length; i < ii; i++) {
+ let desc = children[i];
+ if (desc.nodeName.toLowerCase() !== 'rdf:description') {
+ continue;
+ }
+ for (let j = 0, jj = desc.childNodes.length; j < jj; j++) {
+ if (desc.childNodes[j].nodeName.toLowerCase() !== '#text') {
+ let entry = desc.childNodes[j];
+ let name = entry.nodeName.toLowerCase();
+ this._metadata[name] = entry.textContent.trim();
+ }
+ }
+ }
+ }
+ get(name) {
+ return this._metadata[name] || null;
+ }
+ getAll() {
+ return this._metadata;
+ }
+ has(name) {
+ return typeof this._metadata[name] !== 'undefined';
+ }
+}
+exports.Metadata = Metadata;
+
+/***/ }),
+/* 14 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
@@ -10267,17 +8952,17 @@ var PDFDataTransportStream = function PD
this._stream._removeRangeReader(this);
}
};
return PDFDataTransportStream;
}();
exports.PDFDataTransportStream = PDFDataTransportStream;
/***/ }),
-/* 18 */
+/* 15 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
@@ -10650,16 +9335,1302 @@ var WebGLUtils = function WebGLUtilsClos
smaskCache = null;
figuresCache = null;
}
};
}();
exports.WebGLContext = WebGLContext;
/***/ }),
+/* 16 */
+/***/ (function(module, exports, __w_pdfjs_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.renderTextLayer = undefined;
+
+var _util = __w_pdfjs_require__(0);
+
+var _global_scope = __w_pdfjs_require__(2);
+
+var _global_scope2 = _interopRequireDefault(_global_scope);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+var renderTextLayer = function renderTextLayerClosure() {
+ var MAX_TEXT_DIVS_TO_RENDER = 100000;
+ var NonWhitespaceRegexp = /\S/;
+ function isAllWhitespace(str) {
+ return !NonWhitespaceRegexp.test(str);
+ }
+ var styleBuf = ['left: ', 0, 'px; top: ', 0, 'px; font-size: ', 0, 'px; font-family: ', '', ';'];
+ function appendText(task, geom, styles) {
+ var textDiv = document.createElement('div');
+ var textDivProperties = {
+ style: null,
+ angle: 0,
+ canvasWidth: 0,
+ isWhitespace: false,
+ originalTransform: null,
+ paddingBottom: 0,
+ paddingLeft: 0,
+ paddingRight: 0,
+ paddingTop: 0,
+ scale: 1
+ };
+ task._textDivs.push(textDiv);
+ if (isAllWhitespace(geom.str)) {
+ textDivProperties.isWhitespace = true;
+ task._textDivProperties.set(textDiv, textDivProperties);
+ return;
+ }
+ 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) {
+ angle += Math.PI / 2;
+ }
+ var fontHeight = Math.sqrt(tx[2] * tx[2] + tx[3] * tx[3]);
+ var fontAscent = fontHeight;
+ if (style.ascent) {
+ fontAscent = style.ascent * fontAscent;
+ } else if (style.descent) {
+ fontAscent = (1 + style.descent) * fontAscent;
+ }
+ var left;
+ var top;
+ if (angle === 0) {
+ left = tx[4];
+ top = tx[5] - fontAscent;
+ } else {
+ left = tx[4] + fontAscent * Math.sin(angle);
+ top = tx[5] - fontAscent * Math.cos(angle);
+ }
+ styleBuf[1] = left;
+ styleBuf[3] = top;
+ styleBuf[5] = fontHeight;
+ styleBuf[7] = style.fontFamily;
+ textDivProperties.style = styleBuf.join('');
+ textDiv.setAttribute('style', textDivProperties.style);
+ textDiv.textContent = geom.str;
+ if (task._fontInspectorEnabled) {
+ textDiv.dataset.fontName = geom.fontName;
+ }
+ if (angle !== 0) {
+ textDivProperties.angle = angle * (180 / Math.PI);
+ }
+ if (geom.str.length > 1) {
+ if (style.vertical) {
+ textDivProperties.canvasWidth = geom.height * task._viewport.scale;
+ } else {
+ textDivProperties.canvasWidth = geom.width * task._viewport.scale;
+ }
+ }
+ task._textDivProperties.set(textDiv, textDivProperties);
+ if (task._textContentStream) {
+ task._layoutText(textDiv);
+ }
+ if (task._enhanceTextSelection) {
+ var angleCos = 1,
+ angleSin = 0;
+ if (angle !== 0) {
+ angleCos = Math.cos(angle);
+ angleSin = Math.sin(angle);
+ }
+ var divWidth = (style.vertical ? geom.height : geom.width) * task._viewport.scale;
+ var divHeight = fontHeight;
+ var m, b;
+ if (angle !== 0) {
+ m = [angleCos, angleSin, -angleSin, angleCos, left, top];
+ b = _util.Util.getAxialAlignedBoundingBox([0, 0, divWidth, divHeight], m);
+ } else {
+ b = [left, top, left + divWidth, top + divHeight];
+ }
+ task._bounds.push({
+ left: b[0],
+ top: b[1],
+ right: b[2],
+ bottom: b[3],
+ div: textDiv,
+ size: [divWidth, divHeight],
+ m
+ });
+ }
+ }
+ function render(task) {
+ if (task._canceled) {
+ return;
+ }
+ var textDivs = task._textDivs;
+ var capability = task._capability;
+ var textDivsLength = textDivs.length;
+ if (textDivsLength > MAX_TEXT_DIVS_TO_RENDER) {
+ task._renderingDone = true;
+ capability.resolve();
+ return;
+ }
+ if (!task._textContentStream) {
+ for (var i = 0; i < textDivsLength; i++) {
+ task._layoutText(textDivs[i]);
+ }
+ }
+ task._renderingDone = true;
+ capability.resolve();
+ }
+ function expand(task) {
+ var bounds = task._bounds;
+ var viewport = task._viewport;
+ var expanded = expandBounds(viewport.width, viewport.height, bounds);
+ for (var i = 0; i < expanded.length; i++) {
+ var div = bounds[i].div;
+ var divProperties = task._textDivProperties.get(div);
+ if (divProperties.angle === 0) {
+ divProperties.paddingLeft = bounds[i].left - expanded[i].left;
+ divProperties.paddingTop = bounds[i].top - expanded[i].top;
+ divProperties.paddingRight = expanded[i].right - bounds[i].right;
+ divProperties.paddingBottom = expanded[i].bottom - bounds[i].bottom;
+ task._textDivProperties.set(div, divProperties);
+ continue;
+ }
+ var e = expanded[i],
+ b = bounds[i];
+ var m = b.m,
+ c = m[0],
+ s = m[1];
+ 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.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;
+ ts[i + 12] = s && (e.bottom - t[1]) / s;
+ ts[i + 16] = s && (e.left - t[0]) / -s;
+ ts[i + 20] = c && (e.top - t[1]) / c;
+ ts[i + 24] = s && (e.right - t[0]) / -s;
+ ts[i + 28] = c && (e.bottom - t[1]) / c;
+ ts[i + 32] = c && (e.left - t[0]) / -c;
+ ts[i + 36] = s && (e.top - t[1]) / -s;
+ ts[i + 40] = c && (e.right - t[0]) / -c;
+ ts[i + 44] = s && (e.bottom - t[1]) / -s;
+ ts[i + 48] = s && (e.left - t[0]) / s;
+ ts[i + 52] = c && (e.top - t[1]) / -c;
+ ts[i + 56] = s && (e.right - t[0]) / s;
+ ts[i + 60] = c && (e.bottom - t[1]) / -c;
+ });
+ var findPositiveMin = function (ts, offset, count) {
+ var result = 0;
+ for (var i = 0; i < count; i++) {
+ var t = ts[offset++];
+ if (t > 0) {
+ result = result ? Math.min(t, result) : t;
+ }
+ }
+ return result;
+ };
+ var boxScale = 1 + Math.min(Math.abs(c), Math.abs(s));
+ divProperties.paddingLeft = findPositiveMin(ts, 32, 16) / boxScale;
+ divProperties.paddingTop = findPositiveMin(ts, 48, 16) / boxScale;
+ divProperties.paddingRight = findPositiveMin(ts, 0, 16) / boxScale;
+ divProperties.paddingBottom = findPositiveMin(ts, 16, 16) / boxScale;
+ task._textDivProperties.set(div, divProperties);
+ }
+ }
+ function expandBounds(width, height, boxes) {
+ var bounds = boxes.map(function (box, i) {
+ return {
+ x1: box.left,
+ y1: box.top,
+ x2: box.right,
+ y2: box.bottom,
+ index: i,
+ x1New: undefined,
+ x2New: undefined
+ };
+ });
+ expandBoundsLTR(width, bounds);
+ var expanded = new Array(boxes.length);
+ bounds.forEach(function (b) {
+ var i = b.index;
+ expanded[i] = {
+ left: b.x1New,
+ top: 0,
+ right: b.x2New,
+ bottom: 0
+ };
+ });
+ boxes.map(function (box, i) {
+ var e = expanded[i],
+ b = bounds[i];
+ b.x1 = box.top;
+ b.y1 = width - e.right;
+ b.x2 = box.bottom;
+ b.y2 = width - e.left;
+ b.index = i;
+ b.x1New = undefined;
+ b.x2New = undefined;
+ });
+ expandBoundsLTR(height, bounds);
+ bounds.forEach(function (b) {
+ var i = b.index;
+ expanded[i].top = b.x1New;
+ expanded[i].bottom = b.x2New;
+ });
+ return expanded;
+ }
+ function expandBoundsLTR(width, bounds) {
+ bounds.sort(function (a, b) {
+ return a.x1 - b.x1 || a.index - b.index;
+ });
+ var fakeBoundary = {
+ x1: -Infinity,
+ y1: -Infinity,
+ x2: 0,
+ y2: Infinity,
+ index: -1,
+ x1New: 0,
+ x2New: 0
+ };
+ var horizon = [{
+ start: -Infinity,
+ end: Infinity,
+ boundary: fakeBoundary
+ }];
+ bounds.forEach(function (boundary) {
+ var i = 0;
+ while (i < horizon.length && horizon[i].end <= boundary.y1) {
+ i++;
+ }
+ var j = horizon.length - 1;
+ while (j >= 0 && horizon[j].start >= boundary.y2) {
+ j--;
+ }
+ var horizonPart, affectedBoundary;
+ var q,
+ k,
+ maxXNew = -Infinity;
+ for (q = i; q <= j; q++) {
+ horizonPart = horizon[q];
+ affectedBoundary = horizonPart.boundary;
+ var xNew;
+ if (affectedBoundary.x2 > boundary.x1) {
+ xNew = affectedBoundary.index > boundary.index ? affectedBoundary.x1New : boundary.x1;
+ } else if (affectedBoundary.x2New === undefined) {
+ xNew = (affectedBoundary.x2 + boundary.x1) / 2;
+ } else {
+ xNew = affectedBoundary.x2New;
+ }
+ if (xNew > maxXNew) {
+ maxXNew = xNew;
+ }
+ }
+ boundary.x1New = maxXNew;
+ for (q = i; q <= j; q++) {
+ horizonPart = horizon[q];
+ affectedBoundary = horizonPart.boundary;
+ if (affectedBoundary.x2New === undefined) {
+ if (affectedBoundary.x2 > boundary.x1) {
+ if (affectedBoundary.index > boundary.index) {
+ affectedBoundary.x2New = affectedBoundary.x2;
+ }
+ } else {
+ affectedBoundary.x2New = maxXNew;
+ }
+ } else if (affectedBoundary.x2New > maxXNew) {
+ affectedBoundary.x2New = Math.max(maxXNew, affectedBoundary.x2);
+ }
+ }
+ var changedHorizon = [],
+ lastBoundary = null;
+ for (q = i; q <= j; q++) {
+ horizonPart = horizon[q];
+ affectedBoundary = horizonPart.boundary;
+ var useBoundary = affectedBoundary.x2 > boundary.x2 ? affectedBoundary : boundary;
+ if (lastBoundary === useBoundary) {
+ changedHorizon[changedHorizon.length - 1].end = horizonPart.end;
+ } else {
+ changedHorizon.push({
+ start: horizonPart.start,
+ end: horizonPart.end,
+ boundary: useBoundary
+ });
+ lastBoundary = useBoundary;
+ }
+ }
+ if (horizon[i].start < boundary.y1) {
+ changedHorizon[0].start = boundary.y1;
+ changedHorizon.unshift({
+ start: horizon[i].start,
+ end: boundary.y1,
+ boundary: horizon[i].boundary
+ });
+ }
+ if (boundary.y2 < horizon[j].end) {
+ changedHorizon[changedHorizon.length - 1].end = boundary.y2;
+ changedHorizon.push({
+ start: boundary.y2,
+ end: horizon[j].end,
+ boundary: horizon[j].boundary
+ });
+ }
+ for (q = i; q <= j; q++) {
+ horizonPart = horizon[q];
+ affectedBoundary = horizonPart.boundary;
+ if (affectedBoundary.x2New !== undefined) {
+ continue;
+ }
+ var used = false;
+ for (k = i - 1; !used && k >= 0 && horizon[k].start >= affectedBoundary.y1; k--) {
+ used = horizon[k].boundary === affectedBoundary;
+ }
+ for (k = j + 1; !used && k < horizon.length && horizon[k].end <= affectedBoundary.y2; k++) {
+ used = horizon[k].boundary === affectedBoundary;
+ }
+ for (k = 0; !used && k < changedHorizon.length; k++) {
+ used = changedHorizon[k].boundary === affectedBoundary;
+ }
+ if (!used) {
+ affectedBoundary.x2New = maxXNew;
+ }
+ }
+ Array.prototype.splice.apply(horizon, [i, j - i + 1].concat(changedHorizon));
+ });
+ horizon.forEach(function (horizonPart) {
+ var affectedBoundary = horizonPart.boundary;
+ if (affectedBoundary.x2New === undefined) {
+ affectedBoundary.x2New = Math.max(width, affectedBoundary.x2);
+ }
+ });
+ }
+ function TextLayerRenderTask({ textContent, textContentStream, container, viewport, textDivs, textContentItemsStr, enhanceTextSelection }) {
+ this._textContent = textContent;
+ this._textContentStream = textContentStream;
+ this._container = container;
+ this._viewport = viewport;
+ this._textDivs = textDivs || [];
+ this._textContentItemsStr = textContentItemsStr || [];
+ this._enhanceTextSelection = !!enhanceTextSelection;
+ this._fontInspectorEnabled = !!(_global_scope2.default.FontInspector && _global_scope2.default.FontInspector.enabled);
+ this._reader = null;
+ this._layoutTextLastFontSize = null;
+ this._layoutTextLastFontFamily = null;
+ this._layoutTextCtx = null;
+ this._textDivProperties = new WeakMap();
+ this._renderingDone = false;
+ this._canceled = false;
+ this._capability = (0, _util.createPromiseCapability)();
+ this._renderTimer = null;
+ this._bounds = [];
+ }
+ TextLayerRenderTask.prototype = {
+ get promise() {
+ return this._capability.promise;
+ },
+ cancel: function TextLayer_cancel() {
+ if (this._reader) {
+ this._reader.cancel(new _util.AbortException('text layer task cancelled'));
+ this._reader = null;
+ }
+ this._canceled = true;
+ if (this._renderTimer !== null) {
+ clearTimeout(this._renderTimer);
+ this._renderTimer = null;
+ }
+ this._capability.reject('canceled');
+ },
+ _processItems(items, styleCache) {
+ for (let i = 0, len = items.length; i < len; i++) {
+ this._textContentItemsStr.push(items[i].str);
+ appendText(this, items[i], styleCache);
+ }
+ },
+ _layoutText(textDiv) {
+ let textLayerFrag = this._container;
+ let textDivProperties = this._textDivProperties.get(textDiv);
+ if (textDivProperties.isWhitespace) {
+ return;
+ }
+ let fontSize = textDiv.style.fontSize;
+ let fontFamily = textDiv.style.fontFamily;
+ if (fontSize !== this._layoutTextLastFontSize || fontFamily !== this._layoutTextLastFontFamily) {
+ this._layoutTextCtx.font = fontSize + ' ' + fontFamily;
+ this._lastFontSize = fontSize;
+ this._lastFontFamily = fontFamily;
+ }
+ let width = this._layoutTextCtx.measureText(textDiv.textContent).width;
+ let transform = '';
+ if (textDivProperties.canvasWidth !== 0 && width > 0) {
+ textDivProperties.scale = textDivProperties.canvasWidth / width;
+ transform = 'scaleX(' + textDivProperties.scale + ')';
+ }
+ if (textDivProperties.angle !== 0) {
+ transform = 'rotate(' + textDivProperties.angle + 'deg) ' + transform;
+ }
+ if (transform !== '') {
+ textDivProperties.originalTransform = transform;
+ textDiv.style.transform = transform;
+ }
+ this._textDivProperties.set(textDiv, textDivProperties);
+ textLayerFrag.appendChild(textDiv);
+ },
+ _render: function TextLayer_render(timeout) {
+ let capability = (0, _util.createPromiseCapability)();
+ let styleCache = Object.create(null);
+ let canvas = document.createElement('canvas');
+ canvas.mozOpaque = true;
+ this._layoutTextCtx = canvas.getContext('2d', { alpha: false });
+ if (this._textContent) {
+ let textItems = this._textContent.items;
+ let textStyles = this._textContent.styles;
+ this._processItems(textItems, textStyles);
+ capability.resolve();
+ } else if (this._textContentStream) {
+ let pump = () => {
+ this._reader.read().then(({ value, done }) => {
+ if (done) {
+ capability.resolve();
+ return;
+ }
+ _util.Util.extendObj(styleCache, value.styles);
+ this._processItems(value.items, styleCache);
+ pump();
+ }, capability.reject);
+ };
+ this._reader = this._textContentStream.getReader();
+ pump();
+ } else {
+ throw new Error('Neither "textContent" nor "textContentStream"' + ' parameters specified.');
+ }
+ capability.promise.then(() => {
+ styleCache = null;
+ if (!timeout) {
+ render(this);
+ } else {
+ this._renderTimer = setTimeout(() => {
+ render(this);
+ this._renderTimer = null;
+ }, timeout);
+ }
+ }, this._capability.reject);
+ },
+ expandTextDivs: function TextLayer_expandTextDivs(expandDivs) {
+ if (!this._enhanceTextSelection || !this._renderingDone) {
+ return;
+ }
+ if (this._bounds !== null) {
+ expand(this);
+ this._bounds = null;
+ }
+ for (var i = 0, ii = this._textDivs.length; i < ii; i++) {
+ var div = this._textDivs[i];
+ var divProperties = this._textDivProperties.get(div);
+ if (divProperties.isWhitespace) {
+ continue;
+ }
+ if (expandDivs) {
+ var transform = '',
+ padding = '';
+ if (divProperties.scale !== 1) {
+ transform = 'scaleX(' + divProperties.scale + ')';
+ }
+ if (divProperties.angle !== 0) {
+ transform = 'rotate(' + divProperties.angle + 'deg) ' + transform;
+ }
+ if (divProperties.paddingLeft !== 0) {
+ padding += ' padding-left: ' + divProperties.paddingLeft / divProperties.scale + 'px;';
+ transform += ' translateX(' + -divProperties.paddingLeft / divProperties.scale + 'px)';
+ }
+ if (divProperties.paddingTop !== 0) {
+ padding += ' padding-top: ' + divProperties.paddingTop + 'px;';
+ transform += ' translateY(' + -divProperties.paddingTop + 'px)';
+ }
+ if (divProperties.paddingRight !== 0) {
+ padding += ' padding-right: ' + divProperties.paddingRight / divProperties.scale + 'px;';
+ }
+ if (divProperties.paddingBottom !== 0) {
+ padding += ' padding-bottom: ' + divProperties.paddingBottom + 'px;';
+ }
+ if (padding !== '') {
+ div.setAttribute('style', divProperties.style + padding);
+ }
+ if (transform !== '') {
+ div.style.transform = transform;
+ }
+ } else {
+ div.style.padding = 0;
+ div.style.transform = divProperties.originalTransform || '';
+ }
+ }
+ }
+ };
+ function renderTextLayer(renderParameters) {
+ var task = new TextLayerRenderTask({
+ textContent: renderParameters.textContent,
+ textContentStream: renderParameters.textContentStream,
+ container: renderParameters.container,
+ viewport: renderParameters.viewport,
+ textDivs: renderParameters.textDivs,
+ textContentItemsStr: renderParameters.textContentItemsStr,
+ enhanceTextSelection: renderParameters.enhanceTextSelection
+ });
+ task._render(renderParameters.timeout);
+ return task;
+ }
+ return renderTextLayer;
+}();
+exports.renderTextLayer = renderTextLayer;
+
+/***/ }),
+/* 17 */
+/***/ (function(module, exports, __w_pdfjs_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.AnnotationLayer = undefined;
+
+var _dom_utils = __w_pdfjs_require__(1);
+
+var _util = __w_pdfjs_require__(0);
+
+class AnnotationElementFactory {
+ static create(parameters) {
+ let subtype = parameters.data.annotationType;
+ switch (subtype) {
+ case _util.AnnotationType.LINK:
+ return new LinkAnnotationElement(parameters);
+ case _util.AnnotationType.TEXT:
+ return new TextAnnotationElement(parameters);
+ case _util.AnnotationType.WIDGET:
+ let fieldType = parameters.data.fieldType;
+ switch (fieldType) {
+ case 'Tx':
+ return new TextWidgetAnnotationElement(parameters);
+ case 'Btn':
+ if (parameters.data.radioButton) {
+ return new RadioButtonWidgetAnnotationElement(parameters);
+ } else if (parameters.data.checkBox) {
+ return new CheckboxWidgetAnnotationElement(parameters);
+ }
+ return new PushButtonWidgetAnnotationElement(parameters);
+ case 'Ch':
+ return new ChoiceWidgetAnnotationElement(parameters);
+ }
+ return new WidgetAnnotationElement(parameters);
+ case _util.AnnotationType.POPUP:
+ return new PopupAnnotationElement(parameters);
+ case _util.AnnotationType.LINE:
+ return new LineAnnotationElement(parameters);
+ case _util.AnnotationType.SQUARE:
+ return new SquareAnnotationElement(parameters);
+ case _util.AnnotationType.CIRCLE:
+ return new CircleAnnotationElement(parameters);
+ case _util.AnnotationType.POLYLINE:
+ return new PolylineAnnotationElement(parameters);
+ case _util.AnnotationType.POLYGON:
+ return new PolygonAnnotationElement(parameters);
+ case _util.AnnotationType.HIGHLIGHT:
+ return new HighlightAnnotationElement(parameters);
+ case _util.AnnotationType.UNDERLINE:
+ return new UnderlineAnnotationElement(parameters);
+ case _util.AnnotationType.SQUIGGLY:
+ return new SquigglyAnnotationElement(parameters);
+ case _util.AnnotationType.STRIKEOUT:
+ return new StrikeOutAnnotationElement(parameters);
+ case _util.AnnotationType.STAMP:
+ return new StampAnnotationElement(parameters);
+ case _util.AnnotationType.FILEATTACHMENT:
+ return new FileAttachmentAnnotationElement(parameters);
+ default:
+ return new AnnotationElement(parameters);
+ }
+ }
+}
+class AnnotationElement {
+ constructor(parameters, isRenderable = false, ignoreBorder = false) {
+ this.isRenderable = isRenderable;
+ this.data = parameters.data;
+ this.layer = parameters.layer;
+ this.page = parameters.page;
+ this.viewport = parameters.viewport;
+ this.linkService = parameters.linkService;
+ this.downloadManager = parameters.downloadManager;
+ this.imageResourcesPath = parameters.imageResourcesPath;
+ this.renderInteractiveForms = parameters.renderInteractiveForms;
+ this.svgFactory = parameters.svgFactory;
+ if (isRenderable) {
+ this.container = this._createContainer(ignoreBorder);
+ }
+ }
+ _createContainer(ignoreBorder = false) {
+ let data = this.data,
+ page = this.page,
+ viewport = this.viewport;
+ let container = document.createElement('section');
+ let width = data.rect[2] - data.rect[0];
+ let height = data.rect[3] - data.rect[1];
+ container.setAttribute('data-annotation-id', data.id);
+ let 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]]);
+ container.style.transform = 'matrix(' + viewport.transform.join(',') + ')';
+ container.style.transformOrigin = -rect[0] + 'px ' + -rect[1] + 'px';
+ if (!ignoreBorder && data.borderStyle.width > 0) {
+ container.style.borderWidth = data.borderStyle.width + 'px';
+ if (data.borderStyle.style !== _util.AnnotationBorderStyleType.UNDERLINE) {
+ width = width - 2 * data.borderStyle.width;
+ height = height - 2 * data.borderStyle.width;
+ }
+ let horizontalRadius = data.borderStyle.horizontalCornerRadius;
+ let verticalRadius = data.borderStyle.verticalCornerRadius;
+ if (horizontalRadius > 0 || verticalRadius > 0) {
+ let radius = horizontalRadius + 'px / ' + verticalRadius + 'px';
+ container.style.borderRadius = radius;
+ }
+ switch (data.borderStyle.style) {
+ case _util.AnnotationBorderStyleType.SOLID:
+ container.style.borderStyle = 'solid';
+ break;
+ case _util.AnnotationBorderStyleType.DASHED:
+ container.style.borderStyle = 'dashed';
+ break;
+ case _util.AnnotationBorderStyleType.BEVELED:
+ (0, _util.warn)('Unimplemented border style: beveled');
+ break;
+ case _util.AnnotationBorderStyleType.INSET:
+ (0, _util.warn)('Unimplemented border style: inset');
+ break;
+ case _util.AnnotationBorderStyleType.UNDERLINE:
+ container.style.borderBottomStyle = 'solid';
+ break;
+ default:
+ break;
+ }
+ if (data.color) {
+ container.style.borderColor = _util.Util.makeCssRgb(data.color[0] | 0, data.color[1] | 0, data.color[2] | 0);
+ } else {
+ container.style.borderWidth = 0;
+ }
+ }
+ container.style.left = rect[0] + 'px';
+ container.style.top = rect[1] + 'px';
+ container.style.width = width + 'px';
+ container.style.height = height + 'px';
+ return container;
+ }
+ _createPopup(container, trigger, data) {
+ if (!trigger) {
+ trigger = document.createElement('div');
+ trigger.style.height = container.style.height;
+ trigger.style.width = container.style.width;
+ container.appendChild(trigger);
+ }
+ let popupElement = new PopupElement({
+ container,
+ trigger,
+ color: data.color,
+ title: data.title,
+ contents: data.contents,
+ hideWrapper: true
+ });
+ let popup = popupElement.render();
+ popup.style.left = container.style.width;
+ container.appendChild(popup);
+ }
+ render() {
+ (0, _util.unreachable)('Abstract method `AnnotationElement.render` called');
+ }
+}
+class LinkAnnotationElement extends AnnotationElement {
+ constructor(parameters) {
+ let isRenderable = !!(parameters.data.url || parameters.data.dest || parameters.data.action);
+ super(parameters, isRenderable);
+ }
+ render() {
+ this.container.className = 'linkAnnotation';
+ let { data, linkService } = this;
+ let link = document.createElement('a');
+ (0, _dom_utils.addLinkAttributes)(link, {
+ url: data.url,
+ target: data.newWindow ? _dom_utils.LinkTarget.BLANK : linkService.externalLinkTarget,
+ rel: linkService.externalLinkRel
+ });
+ if (!data.url) {
+ if (data.action) {
+ this._bindNamedAction(link, data.action);
+ } else {
+ this._bindLink(link, data.dest);
+ }
+ }
+ this.container.appendChild(link);
+ return this.container;
+ }
+ _bindLink(link, destination) {
+ link.href = this.linkService.getDestinationHash(destination);
+ link.onclick = () => {
+ if (destination) {
+ this.linkService.navigateTo(destination);
+ }
+ return false;
+ };
+ if (destination) {
+ link.className = 'internalLink';
+ }
+ }
+ _bindNamedAction(link, action) {
+ link.href = this.linkService.getAnchorUrl('');
+ link.onclick = () => {
+ this.linkService.executeNamedAction(action);
+ return false;
+ };
+ link.className = 'internalLink';
+ }
+}
+class TextAnnotationElement extends AnnotationElement {
+ constructor(parameters) {
+ let isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
+ super(parameters, isRenderable);
+ }
+ render() {
+ this.container.className = 'textAnnotation';
+ let image = document.createElement('img');
+ image.style.height = this.container.style.height;
+ image.style.width = this.container.style.width;
+ image.src = this.imageResourcesPath + 'annotation-' + this.data.name.toLowerCase() + '.svg';
+ image.alt = '[{{type}} Annotation]';
+ image.dataset.l10nId = 'text_annotation_type';
+ image.dataset.l10nArgs = JSON.stringify({ type: this.data.name });
+ if (!this.data.hasPopup) {
+ this._createPopup(this.container, image, this.data);
+ }
+ this.container.appendChild(image);
+ return this.container;
+ }
+}
+class WidgetAnnotationElement extends AnnotationElement {
+ render() {
+ return this.container;
+ }
+}
+class TextWidgetAnnotationElement extends WidgetAnnotationElement {
+ constructor(parameters) {
+ let isRenderable = parameters.renderInteractiveForms || !parameters.data.hasAppearance && !!parameters.data.fieldValue;
+ super(parameters, isRenderable);
+ }
+ render() {
+ const TEXT_ALIGNMENT = ['left', 'center', 'right'];
+ this.container.className = 'textWidgetAnnotation';
+ let element = null;
+ if (this.renderInteractiveForms) {
+ if (this.data.multiLine) {
+ element = document.createElement('textarea');
+ element.textContent = this.data.fieldValue;
+ } else {
+ element = document.createElement('input');
+ element.type = 'text';
+ element.setAttribute('value', this.data.fieldValue);
+ }
+ element.disabled = this.data.readOnly;
+ if (this.data.maxLen !== null) {
+ element.maxLength = this.data.maxLen;
+ }
+ if (this.data.comb) {
+ let fieldWidth = this.data.rect[2] - this.data.rect[0];
+ let combWidth = fieldWidth / this.data.maxLen;
+ element.classList.add('comb');
+ element.style.letterSpacing = 'calc(' + combWidth + 'px - 1ch)';
+ }
+ } else {
+ element = document.createElement('div');
+ element.textContent = this.data.fieldValue;
+ element.style.verticalAlign = 'middle';
+ element.style.display = 'table-cell';
+ let font = null;
+ if (this.data.fontRefName) {
+ font = this.page.commonObjs.getData(this.data.fontRefName);
+ }
+ this._setTextStyle(element, font);
+ }
+ if (this.data.textAlignment !== null) {
+ element.style.textAlign = TEXT_ALIGNMENT[this.data.textAlignment];
+ }
+ this.container.appendChild(element);
+ return this.container;
+ }
+ _setTextStyle(element, font) {
+ let style = element.style;
+ style.fontSize = this.data.fontSize + 'px';
+ style.direction = this.data.fontDirection < 0 ? 'rtl' : 'ltr';
+ if (!font) {
+ return;
+ }
+ style.fontWeight = font.black ? font.bold ? '900' : 'bold' : font.bold ? 'bold' : 'normal';
+ style.fontStyle = font.italic ? 'italic' : 'normal';
+ let fontFamily = font.loadedName ? '"' + font.loadedName + '", ' : '';
+ let fallbackName = font.fallbackName || 'Helvetica, sans-serif';
+ style.fontFamily = fontFamily + fallbackName;
+ }
+}
+class CheckboxWidgetAnnotationElement extends WidgetAnnotationElement {
+ constructor(parameters) {
+ super(parameters, parameters.renderInteractiveForms);
+ }
+ render() {
+ this.container.className = 'buttonWidgetAnnotation checkBox';
+ let element = document.createElement('input');
+ element.disabled = this.data.readOnly;
+ element.type = 'checkbox';
+ if (this.data.fieldValue && this.data.fieldValue !== 'Off') {
+ element.setAttribute('checked', true);
+ }
+ this.container.appendChild(element);
+ return this.container;
+ }
+}
+class RadioButtonWidgetAnnotationElement extends WidgetAnnotationElement {
+ constructor(parameters) {
+ super(parameters, parameters.renderInteractiveForms);
+ }
+ render() {
+ this.container.className = 'buttonWidgetAnnotation radioButton';
+ let element = document.createElement('input');
+ element.disabled = this.data.readOnly;
+ element.type = 'radio';
+ element.name = this.data.fieldName;
+ if (this.data.fieldValue === this.data.buttonValue) {
+ element.setAttribute('checked', true);
+ }
+ this.container.appendChild(element);
+ return this.container;
+ }
+}
+class PushButtonWidgetAnnotationElement extends LinkAnnotationElement {
+ render() {
+ let container = super.render();
+ container.className = 'buttonWidgetAnnotation pushButton';
+ return container;
+ }
+}
+class ChoiceWidgetAnnotationElement extends WidgetAnnotationElement {
+ constructor(parameters) {
+ super(parameters, parameters.renderInteractiveForms);
+ }
+ render() {
+ this.container.className = 'choiceWidgetAnnotation';
+ let selectElement = document.createElement('select');
+ selectElement.disabled = this.data.readOnly;
+ if (!this.data.combo) {
+ selectElement.size = this.data.options.length;
+ if (this.data.multiSelect) {
+ selectElement.multiple = true;
+ }
+ }
+ for (let i = 0, ii = this.data.options.length; i < ii; i++) {
+ let option = this.data.options[i];
+ let optionElement = document.createElement('option');
+ optionElement.textContent = option.displayValue;
+ optionElement.value = option.exportValue;
+ if (this.data.fieldValue.includes(option.displayValue)) {
+ optionElement.setAttribute('selected', true);
+ }
+ selectElement.appendChild(optionElement);
+ }
+ this.container.appendChild(selectElement);
+ return this.container;
+ }
+}
+class PopupAnnotationElement extends AnnotationElement {
+ constructor(parameters) {
+ let isRenderable = !!(parameters.data.title || parameters.data.contents);
+ super(parameters, isRenderable);
+ }
+ render() {
+ const IGNORE_TYPES = ['Line', 'Square', 'Circle', 'PolyLine', 'Polygon'];
+ this.container.className = 'popupAnnotation';
+ if (IGNORE_TYPES.includes(this.data.parentType)) {
+ return this.container;
+ }
+ let selector = '[data-annotation-id="' + this.data.parentId + '"]';
+ let parentElement = this.layer.querySelector(selector);
+ if (!parentElement) {
+ return this.container;
+ }
+ let popup = new PopupElement({
+ container: this.container,
+ trigger: parentElement,
+ color: this.data.color,
+ title: this.data.title,
+ contents: this.data.contents
+ });
+ let parentLeft = parseFloat(parentElement.style.left);
+ let parentWidth = parseFloat(parentElement.style.width);
+ this.container.style.transformOrigin = -(parentLeft + parentWidth) + 'px -' + parentElement.style.top;
+ this.container.style.left = parentLeft + parentWidth + 'px';
+ this.container.appendChild(popup.render());
+ return this.container;
+ }
+}
+class PopupElement {
+ constructor(parameters) {
+ this.container = parameters.container;
+ this.trigger = parameters.trigger;
+ this.color = parameters.color;
+ this.title = parameters.title;
+ this.contents = parameters.contents;
+ this.hideWrapper = parameters.hideWrapper || false;
+ this.pinned = false;
+ }
+ render() {
+ const BACKGROUND_ENLIGHT = 0.7;
+ let wrapper = document.createElement('div');
+ wrapper.className = 'popupWrapper';
+ this.hideElement = this.hideWrapper ? wrapper : this.container;
+ this.hideElement.setAttribute('hidden', true);
+ let popup = document.createElement('div');
+ popup.className = 'popup';
+ let color = this.color;
+ if (color) {
+ let r = BACKGROUND_ENLIGHT * (255 - color[0]) + color[0];
+ let g = BACKGROUND_ENLIGHT * (255 - color[1]) + color[1];
+ let b = BACKGROUND_ENLIGHT * (255 - color[2]) + color[2];
+ popup.style.backgroundColor = _util.Util.makeCssRgb(r | 0, g | 0, b | 0);
+ }
+ let contents = this._formatContents(this.contents);
+ let title = document.createElement('h1');
+ title.textContent = this.title;
+ this.trigger.addEventListener('click', this._toggle.bind(this));
+ this.trigger.addEventListener('mouseover', this._show.bind(this, false));
+ this.trigger.addEventListener('mouseout', this._hide.bind(this, false));
+ popup.addEventListener('click', this._hide.bind(this, true));
+ popup.appendChild(title);
+ popup.appendChild(contents);
+ wrapper.appendChild(popup);
+ return wrapper;
+ }
+ _formatContents(contents) {
+ let p = document.createElement('p');
+ let lines = contents.split(/(?:\r\n?|\n)/);
+ for (let i = 0, ii = lines.length; i < ii; ++i) {
+ let line = lines[i];
+ p.appendChild(document.createTextNode(line));
+ if (i < ii - 1) {
+ p.appendChild(document.createElement('br'));
+ }
+ }
+ return p;
+ }
+ _toggle() {
+ if (this.pinned) {
+ this._hide(true);
+ } else {
+ this._show(true);
+ }
+ }
+ _show(pin = false) {
+ if (pin) {
+ this.pinned = true;
+ }
+ if (this.hideElement.hasAttribute('hidden')) {
+ this.hideElement.removeAttribute('hidden');
+ this.container.style.zIndex += 1;
+ }
+ }
+ _hide(unpin = true) {
+ if (unpin) {
+ this.pinned = false;
+ }
+ if (!this.hideElement.hasAttribute('hidden') && !this.pinned) {
+ this.hideElement.setAttribute('hidden', true);
+ this.container.style.zIndex -= 1;
+ }
+ }
+}
+class LineAnnotationElement extends AnnotationElement {
+ constructor(parameters) {
+ let isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
+ super(parameters, isRenderable, true);
+ }
+ render() {
+ this.container.className = 'lineAnnotation';
+ let data = this.data;
+ let width = data.rect[2] - data.rect[0];
+ let height = data.rect[3] - data.rect[1];
+ let svg = this.svgFactory.create(width, height);
+ let line = this.svgFactory.createElement('svg:line');
+ line.setAttribute('x1', data.rect[2] - data.lineCoordinates[0]);
+ line.setAttribute('y1', data.rect[3] - data.lineCoordinates[1]);
+ line.setAttribute('x2', data.rect[2] - data.lineCoordinates[2]);
+ line.setAttribute('y2', data.rect[3] - data.lineCoordinates[3]);
+ line.setAttribute('stroke-width', data.borderStyle.width);
+ line.setAttribute('stroke', 'transparent');
+ svg.appendChild(line);
+ this.container.append(svg);
+ this._createPopup(this.container, line, data);
+ return this.container;
+ }
+}
+class SquareAnnotationElement extends AnnotationElement {
+ constructor(parameters) {
+ let isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
+ super(parameters, isRenderable, true);
+ }
+ render() {
+ this.container.className = 'squareAnnotation';
+ let data = this.data;
+ let width = data.rect[2] - data.rect[0];
+ let height = data.rect[3] - data.rect[1];
+ let svg = this.svgFactory.create(width, height);
+ let borderWidth = data.borderStyle.width;
+ let square = this.svgFactory.createElement('svg:rect');
+ square.setAttribute('x', borderWidth / 2);
+ square.setAttribute('y', borderWidth / 2);
+ square.setAttribute('width', width - borderWidth);
+ square.setAttribute('height', height - borderWidth);
+ square.setAttribute('stroke-width', borderWidth);
+ square.setAttribute('stroke', 'transparent');
+ square.setAttribute('fill', 'none');
+ svg.appendChild(square);
+ this.container.append(svg);
+ this._createPopup(this.container, square, data);
+ return this.container;
+ }
+}
+class CircleAnnotationElement extends AnnotationElement {
+ constructor(parameters) {
+ let isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
+ super(parameters, isRenderable, true);
+ }
+ render() {
+ this.container.className = 'circleAnnotation';
+ let data = this.data;
+ let width = data.rect[2] - data.rect[0];
+ let height = data.rect[3] - data.rect[1];
+ let svg = this.svgFactory.create(width, height);
+ let borderWidth = data.borderStyle.width;
+ let circle = this.svgFactory.createElement('svg:ellipse');
+ circle.setAttribute('cx', width / 2);
+ circle.setAttribute('cy', height / 2);
+ circle.setAttribute('rx', width / 2 - borderWidth / 2);
+ circle.setAttribute('ry', height / 2 - borderWidth / 2);
+ circle.setAttribute('stroke-width', borderWidth);
+ circle.setAttribute('stroke', 'transparent');
+ circle.setAttribute('fill', 'none');
+ svg.appendChild(circle);
+ this.container.append(svg);
+ this._createPopup(this.container, circle, data);
+ return this.container;
+ }
+}
+class PolylineAnnotationElement extends AnnotationElement {
+ constructor(parameters) {
+ let isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
+ super(parameters, isRenderable, true);
+ this.containerClassName = 'polylineAnnotation';
+ this.svgElementName = 'svg:polyline';
+ }
+ render() {
+ this.container.className = this.containerClassName;
+ let data = this.data;
+ let width = data.rect[2] - data.rect[0];
+ let height = data.rect[3] - data.rect[1];
+ let svg = this.svgFactory.create(width, height);
+ let vertices = data.vertices;
+ let points = [];
+ for (let i = 0, ii = vertices.length; i < ii; i++) {
+ let x = vertices[i].x - data.rect[0];
+ let y = data.rect[3] - vertices[i].y;
+ points.push(x + ',' + y);
+ }
+ points = points.join(' ');
+ let borderWidth = data.borderStyle.width;
+ let polyline = this.svgFactory.createElement(this.svgElementName);
+ polyline.setAttribute('points', points);
+ polyline.setAttribute('stroke-width', borderWidth);
+ polyline.setAttribute('stroke', 'transparent');
+ polyline.setAttribute('fill', 'none');
+ svg.appendChild(polyline);
+ this.container.append(svg);
+ this._createPopup(this.container, polyline, data);
+ return this.container;
+ }
+}
+class PolygonAnnotationElement extends PolylineAnnotationElement {
+ constructor(parameters) {
+ super(parameters);
+ this.containerClassName = 'polygonAnnotation';
+ this.svgElementName = 'svg:polygon';
+ }
+}
+class HighlightAnnotationElement extends AnnotationElement {
+ constructor(parameters) {
+ let isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
+ super(parameters, isRenderable, true);
+ }
+ render() {
+ this.container.className = 'highlightAnnotation';
+ if (!this.data.hasPopup) {
+ this._createPopup(this.container, null, this.data);
+ }
+ return this.container;
+ }
+}
+class UnderlineAnnotationElement extends AnnotationElement {
+ constructor(parameters) {
+ let isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
+ super(parameters, isRenderable, true);
+ }
+ render() {
+ this.container.className = 'underlineAnnotation';
+ if (!this.data.hasPopup) {
+ this._createPopup(this.container, null, this.data);
+ }
+ return this.container;
+ }
+}
+class SquigglyAnnotationElement extends AnnotationElement {
+ constructor(parameters) {
+ let isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
+ super(parameters, isRenderable, true);
+ }
+ render() {
+ this.container.className = 'squigglyAnnotation';
+ if (!this.data.hasPopup) {
+ this._createPopup(this.container, null, this.data);
+ }
+ return this.container;
+ }
+}
+class StrikeOutAnnotationElement extends AnnotationElement {
+ constructor(parameters) {
+ let isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
+ super(parameters, isRenderable, true);
+ }
+ render() {
+ this.container.className = 'strikeoutAnnotation';
+ if (!this.data.hasPopup) {
+ this._createPopup(this.container, null, this.data);
+ }
+ return this.container;
+ }
+}
+class StampAnnotationElement extends AnnotationElement {
+ constructor(parameters) {
+ let isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
+ super(parameters, isRenderable, true);
+ }
+ render() {
+ this.container.className = 'stampAnnotation';
+ if (!this.data.hasPopup) {
+ this._createPopup(this.container, null, this.data);
+ }
+ return this.container;
+ }
+}
+class FileAttachmentAnnotationElement extends AnnotationElement {
+ constructor(parameters) {
+ super(parameters, true);
+ let file = this.data.file;
+ this.filename = (0, _dom_utils.getFilenameFromUrl)(file.filename);
+ this.content = file.content;
+ this.linkService.onFileAttachmentAnnotation({
+ id: (0, _util.stringToPDFString)(file.filename),
+ filename: file.filename,
+ content: file.content
+ });
+ }
+ render() {
+ this.container.className = 'fileAttachmentAnnotation';
+ let trigger = document.createElement('div');
+ trigger.style.height = this.container.style.height;
+ trigger.style.width = this.container.style.width;
+ trigger.addEventListener('dblclick', this._download.bind(this));
+ if (!this.data.hasPopup && (this.data.title || this.data.contents)) {
+ this._createPopup(this.container, trigger, this.data);
+ }
+ this.container.appendChild(trigger);
+ return this.container;
+ }
+ _download() {
+ if (!this.downloadManager) {
+ (0, _util.warn)('Download cannot be started due to unavailable download manager');
+ return;
+ }
+ this.downloadManager.downloadData(this.content, this.filename, '');
+ }
+}
+class AnnotationLayer {
+ static render(parameters) {
+ for (let i = 0, ii = parameters.annotations.length; i < ii; i++) {
+ let data = parameters.annotations[i];
+ if (!data) {
+ continue;
+ }
+ let element = AnnotationElementFactory.create({
+ data,
+ layer: parameters.div,
+ page: parameters.page,
+ viewport: parameters.viewport,
+ linkService: parameters.linkService,
+ downloadManager: parameters.downloadManager,
+ imageResourcesPath: parameters.imageResourcesPath || '',
+ renderInteractiveForms: parameters.renderInteractiveForms || false,
+ svgFactory: new _dom_utils.DOMSVGFactory()
+ });
+ if (element.isRenderable) {
+ parameters.div.appendChild(element.render());
+ }
+ }
+ }
+ static update(parameters) {
+ for (let i = 0, ii = parameters.annotations.length; i < ii; i++) {
+ let data = parameters.annotations[i];
+ let element = parameters.div.querySelector('[data-annotation-id="' + data.id + '"]');
+ if (element) {
+ element.style.transform = 'matrix(' + parameters.viewport.transform.join(',') + ')';
+ }
+ }
+ parameters.div.removeAttribute('hidden');
+ }
+}
+exports.AnnotationLayer = AnnotationLayer;
+
+/***/ }),
+/* 18 */
+/***/ (function(module, exports, __w_pdfjs_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.SVGGraphics = undefined;
+
+var _util = __w_pdfjs_require__(0);
+
+var _dom_utils = __w_pdfjs_require__(1);
+
+var _is_node = __w_pdfjs_require__(19);
+
+var _is_node2 = _interopRequireDefault(_is_node);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+var SVGGraphics = function () {
+ throw new Error('Not implemented: SVGGraphics');
+};
+;
+exports.SVGGraphics = SVGGraphics;
+
+/***/ }),
/* 19 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
module.exports = function isNodeJS() {
return typeof process === 'object' && process + '' === '[object process]';
--- a/browser/extensions/pdfjs/content/build/pdf.worker.js
+++ b/browser/extensions/pdfjs/content/build/pdf.worker.js
@@ -23,17 +23,17 @@
(function webpackUniversalModuleDefinition(root, factory) {
if(typeof exports === 'object' && typeof module === 'object')
module.exports = factory();
else if(typeof define === 'function' && define.amd)
define("pdfjs-dist/build/pdf.worker", [], factory);
else if(typeof exports === 'object')
exports["pdfjs-dist/build/pdf.worker"] = factory();
else
- root["pdfjs-dist/build/pdf.worker"] = root.pdfjsDistBuildPdfWorker = factory();
+ root["pdfjs-dist/build/pdf.worker"] = root.pdfjsWorker = factory();
})(typeof self !== 'undefined' ? self : this, function() {
return /******/ (function(modules) { // webpackBootstrap
/******/ // The module cache
/******/ var installedModules = {};
/******/
/******/ // The require function
/******/ function __w_pdfjs_require__(moduleId) {
/******/
@@ -100,21 +100,21 @@ return /******/ (function(modules) { //
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
-exports.unreachable = exports.warn = exports.utf8StringToString = exports.stringToUTF8String = exports.stringToPDFString = exports.stringToBytes = exports.string32 = exports.shadow = exports.setVerbosityLevel = exports.ReadableStream = exports.removeNullCharacters = exports.readUint32 = exports.readUint16 = exports.readInt8 = exports.log2 = exports.isEvalSupported = exports.isLittleEndian = exports.createValidAbsoluteUrl = exports.isSameOrigin = exports.isSpace = exports.isString = exports.isNum = exports.isEmptyObj = exports.isBool = exports.isArrayBuffer = exports.info = exports.getVerbosityLevel = exports.getLookupTableFactory = exports.deprecated = exports.createObjectURL = exports.createPromiseCapability = exports.createBlob = exports.bytesToString = exports.assert = exports.arraysToBytes = exports.arrayByteLength = exports.FormatError = exports.XRefParseException = exports.Util = exports.UnknownErrorException = exports.UnexpectedResponseException = exports.TextRenderingMode = exports.StreamType = exports.PasswordResponses = exports.PasswordException = exports.PageViewport = exports.NotImplementedException = exports.NativeImageDecoding = exports.MissingPDFException = exports.MissingDataException = exports.MessageHandler = exports.InvalidPDFException = exports.AbortException = exports.CMapCompressionType = exports.ImageKind = exports.FontType = exports.AnnotationType = exports.AnnotationFlag = exports.AnnotationFieldFlag = exports.AnnotationBorderStyleType = exports.UNSUPPORTED_FEATURES = exports.VerbosityLevel = exports.OPS = exports.IDENTITY_MATRIX = exports.FONT_IDENTITY_MATRIX = undefined;
+exports.unreachable = exports.warn = exports.utf8StringToString = exports.stringToUTF8String = exports.stringToPDFString = exports.stringToBytes = exports.string32 = exports.shadow = exports.setVerbosityLevel = exports.ReadableStream = exports.removeNullCharacters = exports.readUint32 = exports.readUint16 = exports.readInt8 = exports.log2 = exports.isEvalSupported = exports.isLittleEndian = exports.createValidAbsoluteUrl = exports.isSameOrigin = exports.isSpace = exports.isString = exports.isNum = exports.isEmptyObj = exports.isBool = exports.isArrayBuffer = exports.info = exports.getVerbosityLevel = exports.getLookupTableFactory = exports.getInheritableProperty = exports.deprecated = exports.createObjectURL = exports.createPromiseCapability = exports.createBlob = exports.bytesToString = exports.assert = exports.arraysToBytes = exports.arrayByteLength = exports.FormatError = exports.XRefParseException = exports.Util = exports.UnknownErrorException = exports.UnexpectedResponseException = exports.TextRenderingMode = exports.StreamType = exports.PasswordResponses = exports.PasswordException = exports.PageViewport = exports.NotImplementedException = exports.NativeImageDecoding = exports.MissingPDFException = exports.MissingDataException = exports.MessageHandler = exports.InvalidPDFException = exports.AbortException = exports.CMapCompressionType = exports.ImageKind = exports.FontType = exports.AnnotationType = exports.AnnotationFlag = exports.AnnotationFieldFlag = exports.AnnotationBorderStyleType = exports.UNSUPPORTED_FEATURES = exports.VerbosityLevel = exports.OPS = exports.IDENTITY_MATRIX = exports.FONT_IDENTITY_MATRIX = undefined;
__w_pdfjs_require__(21);
-var _streams_polyfill = __w_pdfjs_require__(22);
+var _streams_polyfill = __w_pdfjs_require__(23);
var FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];
const NativeImageDecoding = {
NONE: 'none',
DECODE: 'decode',
DISPLAY: 'display'
};
var TextRenderingMode = {
@@ -622,16 +622,39 @@ function isLittleEndian() {
function isEvalSupported() {
try {
new Function('');
return true;
} catch (e) {
return false;
}
}
+function getInheritableProperty({ dict, key, getArray = false, stopWhenFound = true }) {
+ const LOOP_LIMIT = 100;
+ let loopCount = 0;
+ let values;
+ while (dict) {
+ const value = getArray ? dict.getArray(key) : dict.get(key);
+ if (value !== undefined) {
+ if (stopWhenFound) {
+ return value;
+ }
+ if (!values) {
+ values = [];
+ }
+ values.push(value);
+ }
+ if (++loopCount > LOOP_LIMIT) {
+ warn(`getInheritableProperty: maximum loop count exceeded for "${key}"`);
+ break;
+ }
+ dict = dict.get('Parent');
+ }
+ return values;
+}
var IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];
var Util = function UtilClosure() {
function Util() {}
var rgbBuf = ['rgb(', 0, ',', 0, ',', 0, ')'];
Util.makeCssRgb = function Util_makeCssRgb(r, g, b) {
rgbBuf[1] = r;
rgbBuf[3] = g;
rgbBuf[5] = b;
@@ -737,25 +760,16 @@ var Util = function UtilClosure() {
Util.prependToArray = function Util_prependToArray(arr1, arr2) {
Array.prototype.unshift.apply(arr1, arr2);
};
Util.extendObj = function extendObj(obj1, obj2) {
for (var key in obj2) {
obj1[key] = obj2[key];
}
};
- Util.getInheritableProperty = function Util_getInheritableProperty(dict, name, getArray) {
- while (dict && !dict.has(name)) {
- dict = dict.get('Parent');
- }
- if (!dict) {
- return null;
- }
- return getArray ? dict.getArray(name) : dict.get(name);
- };
Util.inherit = function Util_inherit(sub, base, prototype) {
sub.prototype = Object.create(base.prototype);
sub.prototype.constructor = sub;
for (var prop in prototype) {
sub.prototype[prop] = prototype[prop];
}
};
Util.loadScript = function Util_loadScript(src, callback) {
@@ -1344,16 +1358,17 @@ exports.FormatError = FormatError;
exports.arrayByteLength = arrayByteLength;
exports.arraysToBytes = arraysToBytes;
exports.assert = assert;
exports.bytesToString = bytesToString;
exports.createBlob = createBlob;
exports.createPromiseCapability = createPromiseCapability;
exports.createObjectURL = createObjectURL;
exports.deprecated = deprecated;
+exports.getInheritableProperty = getInheritableProperty;
exports.getLookupTableFactory = getLookupTableFactory;
exports.getVerbosityLevel = getVerbosityLevel;
exports.info = info;
exports.isArrayBuffer = isArrayBuffer;
exports.isBool = isBool;
exports.isEmptyObj = isEmptyObj;
exports.isNum = isNum;
exports.isString = isString;
@@ -3601,23 +3616,23 @@ Object.defineProperty(exports, "__esModu
exports.Parser = exports.Linearization = exports.Lexer = undefined;
var _stream = __w_pdfjs_require__(2);
var _util = __w_pdfjs_require__(0);
var _primitives = __w_pdfjs_require__(1);
-var _ccitt_stream = __w_pdfjs_require__(26);
-
-var _jbig2_stream = __w_pdfjs_require__(27);
+var _ccitt_stream = __w_pdfjs_require__(27);
+
+var _jbig2_stream = __w_pdfjs_require__(28);
var _jpeg_stream = __w_pdfjs_require__(6);
-var _jpx_stream = __w_pdfjs_require__(30);
+var _jpx_stream = __w_pdfjs_require__(31);
const MAX_LENGTH_TO_CACHE = 1000;
const MAX_ADLER32_LENGTH = 5552;
function computeAdler32(bytes) {
let bytesLength = bytes.length;
if (bytesLength >= MAX_ADLER32_LENGTH) {
throw new Error('computeAdler32: The input is too large.');
}
@@ -4593,17 +4608,17 @@ Object.defineProperty(exports, "__esModu
exports.JpegStream = undefined;
var _util = __w_pdfjs_require__(0);
var _stream = __w_pdfjs_require__(2);
var _primitives = __w_pdfjs_require__(1);
-var _jpg = __w_pdfjs_require__(29);
+var _jpg = __w_pdfjs_require__(30);
let JpegStream = function JpegStreamClosure() {
function JpegStream(stream, maybeLength, dict, params) {
let ch;
while ((ch = stream.getByte()) !== -1) {
if (ch === 0xFF) {
stream.skip(-1);
break;
@@ -10643,26 +10658,36 @@ var Catalog = function CatalogClosure()
}, capability.reject);
return;
}
if (!(0, _primitives.isDict)(currentNode)) {
capability.reject(new _util.FormatError('page dictionary kid reference points to wrong type of object'));
return;
}
count = currentNode.get('Count');
- var objId = currentNode.objId;
- if (objId && !pageKidsCountCache.has(objId)) {
- pageKidsCountCache.put(objId, count);
- }
- if (currentPageIndex + count <= pageIndex) {
- currentPageIndex += count;
- continue;
+ if (Number.isInteger(count) && count >= 0) {
+ var objId = currentNode.objId;
+ if (objId && !pageKidsCountCache.has(objId)) {
+ pageKidsCountCache.put(objId, count);
+ }
+ if (currentPageIndex + count <= pageIndex) {
+ currentPageIndex += count;
+ continue;
+ }
}
var kids = currentNode.get('Kids');
if (!Array.isArray(kids)) {
+ if ((0, _primitives.isName)(currentNode.get('Type'), 'Page') || !currentNode.has('Type') && currentNode.has('Contents')) {
+ if (currentPageIndex === pageIndex) {
+ capability.resolve([currentNode, null]);
+ return;
+ }
+ currentPageIndex++;
+ continue;
+ }
capability.reject(new _util.FormatError('page dictionary kids object is not an array'));
return;
}
for (var last = kids.length - 1; last >= 0; last--) {
nodesToVisit.push(kids[last]);
}
}
capability.reject(new Error('Page index ' + pageIndex + ' not found.'));
@@ -10701,21 +10726,24 @@ var Catalog = function CatalogClosure()
}
var kidPromises = [];
var found = false;
for (var i = 0; i < kids.length; i++) {
var kid = kids[i];
if (!(0, _primitives.isRef)(kid)) {
throw new _util.FormatError('kid must be a Ref.');
}
- if (kid.num === kidRef.num) {
+ if ((0, _primitives.isRefsEqual)(kid, kidRef)) {
found = true;
break;
}
kidPromises.push(xref.fetchAsync(kid).then(function (kid) {
+ if (!(0, _primitives.isDict)(kid)) {
+ throw new _util.FormatError('kid node must be a Dict.');
+ }
if (kid.has('Count')) {
var count = kid.get('Count');
total += count;
} else {
total++;
}
}));
}
@@ -15879,17 +15907,17 @@ exports.calculateSHA512 = calculateSHA51
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.CFFCompiler = exports.CFFPrivateDict = exports.CFFTopDict = exports.CFFCharset = exports.CFFIndex = exports.CFFStrings = exports.CFFHeader = exports.CFF = exports.CFFParser = exports.CFFStandardStrings = undefined;
var _util = __w_pdfjs_require__(0);
-var _charsets = __w_pdfjs_require__(35);
+var _charsets = __w_pdfjs_require__(36);
var _encodings = __w_pdfjs_require__(4);
var MAX_SUBR_NESTING = 10;
var CFFStandardStrings = ['.notdef', 'space', 'exclam', 'quotedbl', 'numbersign', 'dollar', 'percent', 'ampersand', 'quoteright', 'parenleft', 'parenright', 'asterisk', 'plus', 'comma', 'hyphen', 'period', 'slash', 'zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'colon', 'semicolon', 'less', 'equal', 'greater', 'question', 'at', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'bracketleft', 'backslash', 'bracketright', 'asciicircum', 'underscore', 'quoteleft', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'braceleft', 'bar', 'braceright', 'asciitilde', 'exclamdown', 'cent', 'sterling', 'fraction', 'yen', 'florin', 'section', 'currency', 'quotesingle', 'quotedblleft', 'guillemotleft', 'guilsinglleft', 'guilsinglright', 'fi', 'fl', 'endash', 'dagger', 'daggerdbl', 'periodcentered', 'paragraph', 'bullet', 'quotesinglbase', 'quotedblbase', 'quotedblright', 'guillemotright', 'ellipsis', 'perthousand', 'questiondown', 'grave', 'acute', 'circumflex', 'tilde', 'macron', 'breve', 'dotaccent', 'dieresis', 'ring', 'cedilla', 'hungarumlaut', 'ogonek', 'caron', 'emdash', 'AE', 'ordfeminine', 'Lslash', 'Oslash', 'OE', 'ordmasculine', 'ae', 'dotlessi', 'lslash', 'oslash', 'oe', 'germandbls', 'onesuperior', 'logicalnot', 'mu', 'trademark', 'Eth', 'onehalf', 'plusminus', 'Thorn', 'onequarter', 'divide', 'brokenbar', 'degree', 'thorn', 'threequarters', 'twosuperior', 'registered', 'minus', 'eth', 'multiply', 'threesuperior', 'copyright', 'Aacute', 'Acircumflex', 'Adieresis', 'Agrave', 'Aring', 'Atilde', 'Ccedilla', 'Eacute', 'Ecircumflex', 'Edieresis', 'Egrave', 'Iacute', 'Icircumflex', 'Idieresis', 'Igrave', 'Ntilde', 'Oacute', 'Ocircumflex', 'Odieresis', 'Ograve', 'Otilde', 'Scaron', 'Uacute', 'Ucircumflex', 'Udieresis', 'Ugrave', 'Yacute', 'Ydieresis', 'Zcaron', 'aacute', 'acircumflex', 'adieresis', 'agrave', 'aring', 'atilde', 'ccedilla', 'eacute', 'ecircumflex', 'edieresis', 'egrave', 'iacute', 'icircumflex', 'idieresis', 'igrave', 'ntilde', 'oacute', 'ocircumflex', 'odieresis', 'ograve', 'otilde', 'scaron', 'uacute', 'ucircumflex', 'udieresis', 'ugrave', 'yacute', 'ydieresis', 'zcaron', 'exclamsmall', 'Hungarumlautsmall', 'dollaroldstyle', 'dollarsuperior', 'ampersandsmall', 'Acutesmall', 'parenleftsuperior', 'parenrightsuperior', 'twodotenleader', 'onedotenleader', 'zerooldstyle', 'oneoldstyle', 'twooldstyle', 'threeoldstyle', 'fouroldstyle', 'fiveoldstyle', 'sixoldstyle', 'sevenoldstyle', 'eightoldstyle', 'nineoldstyle', 'commasuperior', 'threequartersemdash', 'periodsuperior', 'questionsmall', 'asuperior', 'bsuperior', 'centsuperior', 'dsuperior', 'esuperior', 'isuperior', 'lsuperior', 'msuperior', 'nsuperior', 'osuperior', 'rsuperior', 'ssuperior', 'tsuperior', 'ff', 'ffi', 'ffl', 'parenleftinferior', 'parenrightinferior', 'Circumflexsmall', 'hyphensuperior', 'Gravesmall', 'Asmall', 'Bsmall', 'Csmall', 'Dsmall', 'Esmall', 'Fsmall', 'Gsmall', 'Hsmall', 'Ismall', 'Jsmall', 'Ksmall', 'Lsmall', 'Msmall', 'Nsmall', 'Osmall', 'Psmall', 'Qsmall', 'Rsmall', 'Ssmall', 'Tsmall', 'Usmall', 'Vsmall', 'Wsmall', 'Xsmall', 'Ysmall', 'Zsmall', 'colonmonetary', 'onefitted', 'rupiah', 'Tildesmall', 'exclamdownsmall', 'centoldstyle', 'Lslashsmall', 'Scaronsmall', 'Zcaronsmall', 'Dieresissmall', 'Brevesmall', 'Caronsmall', 'Dotaccentsmall', 'Macronsmall', 'figuredash', 'hypheninferior', 'Ogoneksmall', 'Ringsmall', 'Cedillasmall', 'questiondownsmall', 'oneeighth', 'threeeighths', 'fiveeighths', 'seveneighths', 'onethird', 'twothirds', 'zerosuperior', 'foursuperior', 'fivesuperior', 'sixsuperior', 'sevensuperior', 'eightsuperior', 'ninesuperior', 'zeroinferior', 'oneinferior', 'twoinferior', 'threeinferior', 'fourinferior', 'fiveinferior', 'sixinferior', 'seveninferior', 'eightinferior', 'nineinferior', 'centinferior', 'dollarinferior', 'periodinferior', 'commainferior', 'Agravesmall', 'Aacutesmall', 'Acircumflexsmall', 'Atildesmall', 'Adieresissmall', 'Aringsmall', 'AEsmall', 'Ccedillasmall', 'Egravesmall', 'Eacutesmall', 'Ecircumflexsmall', 'Edieresissmall', 'Igravesmall', 'Iacutesmall', 'Icircumflexsmall', 'Idieresissmall', 'Ethsmall', 'Ntildesmall', 'Ogravesmall', 'Oacutesmall', 'Ocircumflexsmall', 'Otildesmall', 'Odieresissmall', 'OEsmall', 'Oslashsmall', 'Ugravesmall', 'Uacutesmall', 'Ucircumflexsmall', 'Udieresissmall', 'Yacutesmall', 'Thornsmall', 'Ydieresissmall', '001.000', '001.001', '001.002', '001.003', 'Black', 'Bold', 'Book', 'Light', 'Medium', 'Regular', 'Roman', 'Semibold'];
var CFFParser = function CFFParserClosure() {
var CharstringValidationData = [null, {
id: 'hstem',
@@ -20021,17 +20049,17 @@ Object.defineProperty(exports, "__esModu
value: true
});
exports.PostScriptCompiler = exports.PostScriptEvaluator = exports.PDFFunctionFactory = exports.isPDFFunction = undefined;
var _util = __w_pdfjs_require__(0);
var _primitives = __w_pdfjs_require__(1);
-var _ps_parser = __w_pdfjs_require__(41);
+var _ps_parser = __w_pdfjs_require__(42);
let IsEvalSupportedCached = {
get value() {
return (0, _util.shadow)(this, 'value', (0, _util.isEvalSupported)());
}
};
class PDFFunctionFactory {
constructor({ xref, isEvalSupported = true }) {
@@ -21068,18 +21096,18 @@ exports.PostScriptCompiler = PostScriptC
/***/ }),
/* 19 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
-var pdfjsVersion = '2.0.402';
-var pdfjsBuild = '401f3a9d';
+var pdfjsVersion = '2.0.447';
+var pdfjsBuild = 'c0b22da0';
var pdfjsCoreWorker = __w_pdfjs_require__(20);
exports.WorkerMessageHandler = pdfjsCoreWorker.WorkerMessageHandler;
/***/ }),
/* 20 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
@@ -21087,19 +21115,19 @@ exports.WorkerMessageHandler = pdfjsCore
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.WorkerMessageHandler = exports.WorkerTask = undefined;
var _util = __w_pdfjs_require__(0);
-var _pdf_manager = __w_pdfjs_require__(24);
-
-var _is_node = __w_pdfjs_require__(44);
+var _pdf_manager = __w_pdfjs_require__(25);
+
+var _is_node = __w_pdfjs_require__(45);
var _is_node2 = _interopRequireDefault(_is_node);
var _primitives = __w_pdfjs_require__(1);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var WorkerTask = function WorkerTaskClosure() {
@@ -21270,17 +21298,17 @@ var WorkerMessageHandler = {
});
},
createDocumentHandler(docParams, port) {
var pdfManager;
var terminated = false;
var cancelXHRs = null;
var WorkerTasks = [];
let apiVersion = docParams.apiVersion;
- let workerVersion = '2.0.402';
+ let workerVersion = '2.0.447';
if (apiVersion !== null && apiVersion !== workerVersion) {
throw new Error(`The API version "${apiVersion}" does not match ` + `the Worker version "${workerVersion}".`);
}
var docId = docParams.docId;
var docBaseUrl = docParams.docBaseUrl;
var workerHandlerName = docParams.docId + '_worker';
var handler = new _util.MessageHandler(workerHandlerName, docId, port);
handler.postMessageTransfers = docParams.postMessageTransfers;
@@ -21457,17 +21485,17 @@ var WorkerMessageHandler = {
ensureNotTerminated();
loadDocument(true).then(onSuccess, onFailure);
});
}, onFailure);
}
ensureNotTerminated();
var evaluatorOptions = {
forceDataSchema: data.disableCreateObjectURL,
- maxImageSize: data.maxImageSize === undefined ? -1 : data.maxImageSize,
+ maxImageSize: data.maxImageSize,
disableFontFace: data.disableFontFace,
nativeImageDecoderSupport: data.nativeImageDecoderSupport,
ignoreErrors: data.ignoreErrors,
isEvalSupported: data.isEvalSupported
};
getPdfManager(data, evaluatorOptions).then(function (newPdfManager) {
if (terminated) {
newPdfManager.terminate();
@@ -21660,44 +21688,54 @@ exports.WorkerMessageHandler = WorkerMes
/***/ }),
/* 21 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
+const globalScope = __w_pdfjs_require__(22);
;
/***/ }),
/* 22 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
+module.exports = typeof window !== 'undefined' && window.Math === Math ? window : typeof global !== 'undefined' && global.Math === Math ? global : typeof self !== 'undefined' && self.Math === Math ? self : {};
+
+/***/ }),
+/* 23 */
+/***/ (function(module, exports, __w_pdfjs_require__) {
+
+"use strict";
+
+
let isReadableStreamSupported = false;
if (typeof ReadableStream !== 'undefined') {
try {
new ReadableStream({
start(controller) {
controller.close();
}
});
isReadableStreamSupported = true;
} catch (e) {}
}
if (isReadableStreamSupported) {
exports.ReadableStream = ReadableStream;
} else {
- exports.ReadableStream = __w_pdfjs_require__(23).ReadableStream;
-}
-
-/***/ }),
-/* 23 */
+ exports.ReadableStream = __w_pdfjs_require__(24).ReadableStream;
+}
+
+/***/ }),
+/* 24 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
(function (e, a) {
for (var i in a) e[i] = a[i];
})(exports, function (modules) {
@@ -24703,32 +24741,32 @@ if (isReadableStreamSupported) {
function streamBrandCheckException(name) {
return new TypeError('TransformStream.prototype.' + name + ' can only be used on a TransformStream');
}
}, function (module, exports, __w_pdfjs_require__) {
module.exports = __w_pdfjs_require__(5);
}]));
/***/ }),
-/* 24 */
+/* 25 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.NetworkPdfManager = exports.LocalPdfManager = undefined;
var _util = __w_pdfjs_require__(0);
var _chunked_stream = __w_pdfjs_require__(9);
-var _document = __w_pdfjs_require__(25);
+var _document = __w_pdfjs_require__(26);
var _stream = __w_pdfjs_require__(2);
var BasePdfManager = function BasePdfManagerClosure() {
function BasePdfManager() {
(0, _util.unreachable)('Cannot initialize BaseManagerManager');
}
BasePdfManager.prototype = {
@@ -24887,17 +24925,17 @@ var NetworkPdfManager = function Network
}
});
return NetworkPdfManager;
}();
exports.LocalPdfManager = LocalPdfManager;
exports.NetworkPdfManager = NetworkPdfManager;
/***/ }),
-/* 25 */
+/* 26 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
@@ -24906,25 +24944,25 @@ exports.PDFDocument = exports.Page = und
var _obj = __w_pdfjs_require__(10);
var _primitives = __w_pdfjs_require__(1);
var _util = __w_pdfjs_require__(0);
var _stream = __w_pdfjs_require__(2);
-var _annotation = __w_pdfjs_require__(31);
+var _annotation = __w_pdfjs_require__(32);
var _crypto = __w_pdfjs_require__(14);
var _parser = __w_pdfjs_require__(5);
var _operator_list = __w_pdfjs_require__(7);
-var _evaluator = __w_pdfjs_require__(32);
+var _evaluator = __w_pdfjs_require__(33);
var _function = __w_pdfjs_require__(18);
var Page = function PageClosure() {
var DEFAULT_USER_UNIT = 1.0;
var LETTER_SIZE_MEDIABOX = [0, 0, 612, 792];
function isAnnotationRenderable(annotation, intent) {
return intent === 'display' && annotation.viewable || intent === 'print' && annotation.printable;
@@ -24944,85 +24982,69 @@ var Page = function PageClosure() {
var idCounters = { obj: 0 };
this.idFactory = {
createObjId() {
return uniquePrefix + ++idCounters.obj;
}
};
}
Page.prototype = {
- getPageProp: function Page_getPageProp(key) {
- return this.pageDict.get(key);
- },
- getInheritedPageProp: function Page_getInheritedPageProp(key, getArray) {
- var dict = this.pageDict,
- valueArray = null,
- loopCount = 0;
- var MAX_LOOP_COUNT = 100;
- getArray = getArray || false;
- while (dict) {
- var value = getArray ? dict.getArray(key) : dict.get(key);
- if (value !== undefined) {
- if (!valueArray) {
- valueArray = [];
- }
- valueArray.push(value);
- }
- if (++loopCount > MAX_LOOP_COUNT) {
- (0, _util.warn)('getInheritedPageProp: maximum loop count exceeded for ' + key);
- return valueArray ? valueArray[0] : undefined;
- }
- dict = dict.get('Parent');
- }
- if (!valueArray) {
- return undefined;
- }
- if (valueArray.length === 1 || !(0, _primitives.isDict)(valueArray[0])) {
- return valueArray[0];
- }
- return _primitives.Dict.merge(this.xref, valueArray);
+ _getInheritableProperty(key, getArray = false) {
+ let value = (0, _util.getInheritableProperty)({
+ dict: this.pageDict,
+ key,
+ getArray,
+ stopWhenFound: false
+ });
+ if (!Array.isArray(value)) {
+ return value;
+ }
+ if (value.length === 1 || !(0, _primitives.isDict)(value[0])) {
+ return value[0];
+ }
+ return _primitives.Dict.merge(this.xref, value);
},
get content() {
- return this.getPageProp('Contents');
+ return this.pageDict.get('Contents');
},
get resources() {
- return (0, _util.shadow)(this, 'resources', this.getInheritedPageProp('Resources') || _primitives.Dict.empty);
+ return (0, _util.shadow)(this, 'resources', this._getInheritableProperty('Resources') || _primitives.Dict.empty);
},
get mediaBox() {
- var mediaBox = this.getInheritedPageProp('MediaBox', true);
+ var mediaBox = this._getInheritableProperty('MediaBox', true);
if (!Array.isArray(mediaBox) || mediaBox.length !== 4) {
return (0, _util.shadow)(this, 'mediaBox', LETTER_SIZE_MEDIABOX);
}
return (0, _util.shadow)(this, 'mediaBox', mediaBox);
},
get cropBox() {
- var cropBox = this.getInheritedPageProp('CropBox', true);
+ var cropBox = this._getInheritableProperty('CropBox', true);
if (!Array.isArray(cropBox) || cropBox.length !== 4) {
return (0, _util.shadow)(this, 'cropBox', this.mediaBox);
}
return (0, _util.shadow)(this, 'cropBox', cropBox);
},
get userUnit() {
- var obj = this.getPageProp('UserUnit');
+ var obj = this.pageDict.get('UserUnit');
if (!(0, _util.isNum)(obj) || obj <= 0) {
obj = DEFAULT_USER_UNIT;
}
return (0, _util.shadow)(this, 'userUnit', obj);
},
get view() {
var mediaBox = this.mediaBox,
cropBox = this.cropBox;
if (mediaBox === cropBox) {
return (0, _util.shadow)(this, 'view', mediaBox);
}
var intersection = _util.Util.intersect(cropBox, mediaBox);
return (0, _util.shadow)(this, 'view', intersection || mediaBox);
},
get rotate() {
- var rotate = this.getInheritedPageProp('Rotate') || 0;
+ var rotate = this._getInheritableProperty('Rotate') || 0;
if (rotate % 90 !== 0) {
rotate = 0;
} else if (rotate >= 360) {
rotate = rotate % 360;
} else if (rotate < 0) {
rotate = (rotate % 360 + 360) % 360;
}
return (0, _util.shadow)(this, 'rotate', rotate);
@@ -25144,17 +25166,17 @@ var Page = function PageClosure() {
if (!intent || isAnnotationRenderable(annotations[i], intent)) {
annotationsData.push(annotations[i].data);
}
}
return annotationsData;
},
get annotations() {
var annotations = [];
- var annotationRefs = this.getInheritedPageProp('Annots') || [];
+ var annotationRefs = this._getInheritableProperty('Annots') || [];
for (var i = 0, n = annotationRefs.length; i < n; ++i) {
var annotationRef = annotationRefs[i];
var annotation = _annotation.AnnotationFactory.create(this.xref, annotationRef, this.pdfManager, this.idFactory);
if (annotation) {
annotations.push(annotation);
}
}
return (0, _util.shadow)(this, 'annotations', annotations);
@@ -25410,17 +25432,17 @@ var PDFDocument = function PDFDocumentCl
}
};
return PDFDocument;
}();
exports.Page = Page;
exports.PDFDocument = PDFDocument;
/***/ }),
-/* 26 */
+/* 27 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
@@ -25467,32 +25489,32 @@ var CCITTFaxStream = function CCITTFaxSt
this.buffer[this.bufferLength++] = c;
}
};
return CCITTFaxStream;
}();
exports.CCITTFaxStream = CCITTFaxStream;
/***/ }),
-/* 27 */
+/* 28 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.Jbig2Stream = undefined;
var _primitives = __w_pdfjs_require__(1);
var _stream = __w_pdfjs_require__(2);
-var _jbig = __w_pdfjs_require__(28);
+var _jbig = __w_pdfjs_require__(29);
var _util = __w_pdfjs_require__(0);
let Jbig2Stream = function Jbig2StreamClosure() {
function Jbig2Stream(stream, maybeLength, dict, params) {
this.stream = stream;
this.maybeLength = maybeLength;
this.dict = dict;
@@ -25538,17 +25560,17 @@ let Jbig2Stream = function Jbig2StreamCl
this.bufferLength = dataLength;
this.eof = true;
};
return Jbig2Stream;
}();
exports.Jbig2Stream = Jbig2Stream;
/***/ }),
-/* 28 */
+/* 29 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
@@ -27307,17 +27329,17 @@ var Jbig2Image = function Jbig2ImageClos
return parseJbig2Chunks(chunks);
}
};
return Jbig2Image;
}();
exports.Jbig2Image = Jbig2Image;
/***/ }),
-/* 29 */
+/* 30 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
@@ -28263,17 +28285,17 @@ var JpegImage = function JpegImageClosur
return data;
}
};
return JpegImage;
}();
exports.JpegImage = JpegImage;
/***/ }),
-/* 30 */
+/* 31 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
@@ -28338,17 +28360,17 @@ let JpxStream = function JpxStreamClosur
this.bufferLength = this.buffer.length;
this.eof = true;
};
return JpxStream;
}();
exports.JpxStream = JpxStream;
/***/ }),
-/* 31 */
+/* 32 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
@@ -28384,17 +28406,20 @@ class AnnotationFactory {
pdfManager
};
switch (subtype) {
case 'Link':
return new LinkAnnotation(parameters);
case 'Text':
return new TextAnnotation(parameters);
case 'Widget':
- let fieldType = _util.Util.getInheritableProperty(dict, 'FT');
+ let fieldType = (0, _util.getInheritableProperty)({
+ dict,
+ key: 'FT'
+ });
fieldType = (0, _primitives.isName)(fieldType) ? fieldType.name : null;
switch (fieldType) {
case 'Tx':
return new TextWidgetAnnotation(parameters);
case 'Btn':
return new ButtonWidgetAnnotation(parameters);
case 'Ch':
return new ChoiceWidgetAnnotation(parameters);
@@ -28692,23 +28717,39 @@ class AnnotationBorderStyle {
}
class WidgetAnnotation extends Annotation {
constructor(params) {
super(params);
let dict = params.dict;
let data = this.data;
data.annotationType = _util.AnnotationType.WIDGET;
data.fieldName = this._constructFieldName(dict);
- data.fieldValue = _util.Util.getInheritableProperty(dict, 'V', true);
+ data.fieldValue = (0, _util.getInheritableProperty)({
+ dict,
+ key: 'V',
+ getArray: true
+ });
data.alternativeText = (0, _util.stringToPDFString)(dict.get('TU') || '');
- data.defaultAppearance = _util.Util.getInheritableProperty(dict, 'DA') || '';
- let fieldType = _util.Util.getInheritableProperty(dict, 'FT');
+ data.defaultAppearance = (0, _util.getInheritableProperty)({
+ dict,
+ key: 'DA'
+ }) || '';
+ let fieldType = (0, _util.getInheritableProperty)({
+ dict,
+ key: 'FT'
+ });
data.fieldType = (0, _primitives.isName)(fieldType) ? fieldType.name : null;
- this.fieldResources = _util.Util.getInheritableProperty(dict, 'DR') || _primitives.Dict.empty;
- data.fieldFlags = _util.Util.getInheritableProperty(dict, 'Ff');
+ this.fieldResources = (0, _util.getInheritableProperty)({
+ dict,
+ key: 'DR'
+ }) || _primitives.Dict.empty;
+ data.fieldFlags = (0, _util.getInheritableProperty)({
+ dict,
+ key: 'Ff'
+ });
if (!Number.isInteger(data.fieldFlags) || data.fieldFlags < 0) {
data.fieldFlags = 0;
}
data.readOnly = this.hasFieldFlag(_util.AnnotationFieldFlag.READONLY);
if (data.fieldType === 'Sig') {
this.setFlags(_util.AnnotationFlag.HIDDEN);
}
}
@@ -28744,23 +28785,30 @@ class WidgetAnnotation extends Annotatio
return Promise.resolve(new _operator_list.OperatorList());
}
return super.getOperatorList(evaluator, task, renderForms);
}
}
class TextWidgetAnnotation extends WidgetAnnotation {
constructor(params) {
super(params);
+ const dict = params.dict;
this.data.fieldValue = (0, _util.stringToPDFString)(this.data.fieldValue || '');
- let alignment = _util.Util.getInheritableProperty(params.dict, 'Q');
+ let alignment = (0, _util.getInheritableProperty)({
+ dict,
+ key: 'Q'
+ });
if (!Number.isInteger(alignment) || alignment < 0 || alignment > 2) {
alignment = null;
}
this.data.textAlignment = alignment;
- let maximumLength = _util.Util.getInheritableProperty(params.dict, 'MaxLen');
+ let maximumLength = (0, _util.getInheritableProperty)({
+ dict,
+ key: 'MaxLen'
+ });
if (!Number.isInteger(maximumLength) || maximumLength < 0) {
maximumLength = null;
}
this.data.maxLen = maximumLength;
this.data.multiLine = this.hasFieldFlag(_util.AnnotationFieldFlag.MULTILINE);
this.data.comb = this.hasFieldFlag(_util.AnnotationFieldFlag.COMB) && !this.hasFieldFlag(_util.AnnotationFieldFlag.MULTILINE) && !this.hasFieldFlag(_util.AnnotationFieldFlag.PASSWORD) && !this.hasFieldFlag(_util.AnnotationFieldFlag.FILESELECT) && this.data.maxLen !== null;
}
getOperatorList(evaluator, task, renderForms) {
@@ -28840,17 +28888,20 @@ class ButtonWidgetAnnotation extends Wid
docBaseUrl: params.pdfManager.docBaseUrl
});
}
}
class ChoiceWidgetAnnotation extends WidgetAnnotation {
constructor(params) {
super(params);
this.data.options = [];
- let options = _util.Util.getInheritableProperty(params.dict, 'Opt');
+ let options = (0, _util.getInheritableProperty)({
+ dict: params.dict,
+ key: 'Opt'
+ });
if (Array.isArray(options)) {
let xref = params.xref;
for (let i = 0, ii = options.length; i < ii; i++) {
let option = xref.fetchIfRef(options[i]);
let isOptionArray = Array.isArray(option);
this.data.options[i] = {
exportValue: isOptionArray ? xref.fetchIfRef(option[0]) : option,
displayValue: (0, _util.stringToPDFString)(isOptionArray ? xref.fetchIfRef(option[1]) : option)
@@ -29008,64 +29059,64 @@ class FileAttachmentAnnotation extends A
this._preparePopup(parameters.dict);
}
}
exports.Annotation = Annotation;
exports.AnnotationBorderStyle = AnnotationBorderStyle;
exports.AnnotationFactory = AnnotationFactory;
/***/ }),
-/* 32 */
+/* 33 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.PartialEvaluator = undefined;
var _util = __w_pdfjs_require__(0);
-var _cmap = __w_pdfjs_require__(33);
+var _cmap = __w_pdfjs_require__(34);
var _stream = __w_pdfjs_require__(2);
var _primitives = __w_pdfjs_require__(1);
-var _fonts = __w_pdfjs_require__(34);
+var _fonts = __w_pdfjs_require__(35);
var _encodings = __w_pdfjs_require__(4);
var _unicode = __w_pdfjs_require__(17);
var _standard_fonts = __w_pdfjs_require__(16);
-var _pattern = __w_pdfjs_require__(38);
+var _pattern = __w_pdfjs_require__(39);
var _parser = __w_pdfjs_require__(5);
-var _bidi = __w_pdfjs_require__(39);
+var _bidi = __w_pdfjs_require__(40);
var _colorspace = __w_pdfjs_require__(3);
var _glyphlist = __w_pdfjs_require__(8);
-var _metrics = __w_pdfjs_require__(40);
+var _metrics = __w_pdfjs_require__(41);
var _function = __w_pdfjs_require__(18);
var _jpeg_stream = __w_pdfjs_require__(6);
-var _murmurhash = __w_pdfjs_require__(42);
+var _murmurhash = __w_pdfjs_require__(43);
var _operator_list = __w_pdfjs_require__(7);
-var _image = __w_pdfjs_require__(43);
+var _image = __w_pdfjs_require__(44);
var PartialEvaluator = function PartialEvaluatorClosure() {
const DefaultPartialEvaluatorOptions = {
forceDataSchema: false,
maxImageSize: -1,
disableFontFace: false,
nativeImageDecoderSupport: _util.NativeImageDecoding.DECODE,
ignoreErrors: false,
@@ -31702,17 +31753,17 @@ var EvaluatorPreprocessor = function Eva
}
}
};
return EvaluatorPreprocessor;
}();
exports.PartialEvaluator = PartialEvaluator;
/***/ }),
-/* 33 */
+/* 34 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
@@ -32417,17 +32468,17 @@ var CMapFactory = function CMapFactoryCl
}
};
}();
exports.CMap = CMap;
exports.IdentityCMap = IdentityCMap;
exports.CMapFactory = CMapFactory;
/***/ }),
-/* 34 */
+/* 35 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
@@ -32440,21 +32491,21 @@ var _cff_parser = __w_pdfjs_require__(15
var _glyphlist = __w_pdfjs_require__(8);
var _encodings = __w_pdfjs_require__(4);
var _standard_fonts = __w_pdfjs_require__(16);
var _unicode = __w_pdfjs_require__(17);
-var _font_renderer = __w_pdfjs_require__(36);
+var _font_renderer = __w_pdfjs_require__(37);
var _stream = __w_pdfjs_require__(2);
-var _type1_parser = __w_pdfjs_require__(37);
+var _type1_parser = __w_pdfjs_require__(38);
var PRIVATE_USE_OFFSET_START = 0xE000;
var PRIVATE_USE_OFFSET_END = 0xF8FF;
var SKIP_PRIVATE_USE_RANGE_F000_TO_F01F = false;
var PDF_GLYPH_SPACE_UNITS = 1000;
var SEAC_ANALYSIS_ENABLED = false;
var FontFlags = {
FixedPitch: 1,
@@ -34964,34 +35015,34 @@ exports.ErrorFont = ErrorFont;
exports.Font = Font;
exports.FontFlags = FontFlags;
exports.ToUnicodeMap = ToUnicodeMap;
exports.IdentityToUnicodeMap = IdentityToUnicodeMap;
exports.ProblematicCharRanges = ProblematicCharRanges;
exports.getFontType = getFontType;
/***/ }),
-/* 35 */
+/* 36 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
var ISOAdobeCharset = ['.notdef', 'space', 'exclam', 'quotedbl', 'numbersign', 'dollar', 'percent', 'ampersand', 'quoteright', 'parenleft', 'parenright', 'asterisk', 'plus', 'comma', 'hyphen', 'period', 'slash', 'zero', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine', 'colon', 'semicolon', 'less', 'equal', 'greater', 'question', 'at', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'bracketleft', 'backslash', 'bracketright', 'asciicircum', 'underscore', 'quoteleft', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'braceleft', 'bar', 'braceright', 'asciitilde', 'exclamdown', 'cent', 'sterling', 'fraction', 'yen', 'florin', 'section', 'currency', 'quotesingle', 'quotedblleft', 'guillemotleft', 'guilsinglleft', 'guilsinglright', 'fi', 'fl', 'endash', 'dagger', 'daggerdbl', 'periodcentered', 'paragraph', 'bullet', 'quotesinglbase', 'quotedblbase', 'quotedblright', 'guillemotright', 'ellipsis', 'perthousand', 'questiondown', 'grave', 'acute', 'circumflex', 'tilde', 'macron', 'breve', 'dotaccent', 'dieresis', 'ring', 'cedilla', 'hungarumlaut', 'ogonek', 'caron', 'emdash', 'AE', 'ordfeminine', 'Lslash', 'Oslash', 'OE', 'ordmasculine', 'ae', 'dotlessi', 'lslash', 'oslash', 'oe', 'germandbls', 'onesuperior', 'logicalnot', 'mu', 'trademark', 'Eth', 'onehalf', 'plusminus', 'Thorn', 'onequarter', 'divide', 'brokenbar', 'degree', 'thorn', 'threequarters', 'twosuperior', 'registered', 'minus', 'eth', 'multiply', 'threesuperior', 'copyright', 'Aacute', 'Acircumflex', 'Adieresis', 'Agrave', 'Aring', 'Atilde', 'Ccedilla', 'Eacute', 'Ecircumflex', 'Edieresis', 'Egrave', 'Iacute', 'Icircumflex', 'Idieresis', 'Igrave', 'Ntilde', 'Oacute', 'Ocircumflex', 'Odieresis', 'Ograve', 'Otilde', 'Scaron', 'Uacute', 'Ucircumflex', 'Udieresis', 'Ugrave', 'Yacute', 'Ydieresis', 'Zcaron', 'aacute', 'acircumflex', 'adieresis', 'agrave', 'aring', 'atilde', 'ccedilla', 'eacute', 'ecircumflex', 'edieresis', 'egrave', 'iacute', 'icircumflex', 'idieresis', 'igrave', 'ntilde', 'oacute', 'ocircumflex', 'odieresis', 'ograve', 'otilde', 'scaron', 'uacute', 'ucircumflex', 'udieresis', 'ugrave', 'yacute', 'ydieresis', 'zcaron'];
var ExpertCharset = ['.notdef', 'space', 'exclamsmall', 'Hungarumlautsmall', 'dollaroldstyle', 'dollarsuperior', 'ampersandsmall', 'Acutesmall', 'parenleftsuperior', 'parenrightsuperior', 'twodotenleader', 'onedotenleader', 'comma', 'hyphen', 'period', 'fraction', 'zerooldstyle', 'oneoldstyle', 'twooldstyle', 'threeoldstyle', 'fouroldstyle', 'fiveoldstyle', 'sixoldstyle', 'sevenoldstyle', 'eightoldstyle', 'nineoldstyle', 'colon', 'semicolon', 'commasuperior', 'threequartersemdash', 'periodsuperior', 'questionsmall', 'asuperior', 'bsuperior', 'centsuperior', 'dsuperior', 'esuperior', 'isuperior', 'lsuperior', 'msuperior', 'nsuperior', 'osuperior', 'rsuperior', 'ssuperior', 'tsuperior', 'ff', 'fi', 'fl', 'ffi', 'ffl', 'parenleftinferior', 'parenrightinferior', 'Circumflexsmall', 'hyphensuperior', 'Gravesmall', 'Asmall', 'Bsmall', 'Csmall', 'Dsmall', 'Esmall', 'Fsmall', 'Gsmall', 'Hsmall', 'Ismall', 'Jsmall', 'Ksmall', 'Lsmall', 'Msmall', 'Nsmall', 'Osmall', 'Psmall', 'Qsmall', 'Rsmall', 'Ssmall', 'Tsmall', 'Usmall', 'Vsmall', 'Wsmall', 'Xsmall', 'Ysmall', 'Zsmall', 'colonmonetary', 'onefitted', 'rupiah', 'Tildesmall', 'exclamdownsmall', 'centoldstyle', 'Lslashsmall', 'Scaronsmall', 'Zcaronsmall', 'Dieresissmall', 'Brevesmall', 'Caronsmall', 'Dotaccentsmall', 'Macronsmall', 'figuredash', 'hypheninferior', 'Ogoneksmall', 'Ringsmall', 'Cedillasmall', 'onequarter', 'onehalf', 'threequarters', 'questiondownsmall', 'oneeighth', 'threeeighths', 'fiveeighths', 'seveneighths', 'onethird', 'twothirds', 'zerosuperior', 'onesuperior', 'twosuperior', 'threesuperior', 'foursuperior', 'fivesuperior', 'sixsuperior', 'sevensuperior', 'eightsuperior', 'ninesuperior', 'zeroinferior', 'oneinferior', 'twoinferior', 'threeinferior', 'fourinferior', 'fiveinferior', 'sixinferior', 'seveninferior', 'eightinferior', 'nineinferior', 'centinferior', 'dollarinferior', 'periodinferior', 'commainferior', 'Agravesmall', 'Aacutesmall', 'Acircumflexsmall', 'Atildesmall', 'Adieresissmall', 'Aringsmall', 'AEsmall', 'Ccedillasmall', 'Egravesmall', 'Eacutesmall', 'Ecircumflexsmall', 'Edieresissmall', 'Igravesmall', 'Iacutesmall', 'Icircumflexsmall', 'Idieresissmall', 'Ethsmall', 'Ntildesmall', 'Ogravesmall', 'Oacutesmall', 'Ocircumflexsmall', 'Otildesmall', 'Odieresissmall', 'OEsmall', 'Oslashsmall', 'Ugravesmall', 'Uacutesmall', 'Ucircumflexsmall', 'Udieresissmall', 'Yacutesmall', 'Thornsmall', 'Ydieresissmall'];
var ExpertSubsetCharset = ['.notdef', 'space', 'dollaroldstyle', 'dollarsuperior', 'parenleftsuperior', 'parenrightsuperior', 'twodotenleader', 'onedotenleader', 'comma', 'hyphen', 'period', 'fraction', 'zerooldstyle', 'oneoldstyle', 'twooldstyle', 'threeoldstyle', 'fouroldstyle', 'fiveoldstyle', 'sixoldstyle', 'sevenoldstyle', 'eightoldstyle', 'nineoldstyle', 'colon', 'semicolon', 'commasuperior', 'threequartersemdash', 'periodsuperior', 'asuperior', 'bsuperior', 'centsuperior', 'dsuperior', 'esuperior', 'isuperior', 'lsuperior', 'msuperior', 'nsuperior', 'osuperior', 'rsuperior', 'ssuperior', 'tsuperior', 'ff', 'fi', 'fl', 'ffi', 'ffl', 'parenleftinferior', 'parenrightinferior', 'hyphensuperior', 'colonmonetary', 'onefitted', 'rupiah', 'centoldstyle', 'figuredash', 'hypheninferior', 'onequarter', 'onehalf', 'threequarters', 'oneeighth', 'threeeighths', 'fiveeighths', 'seveneighths', 'onethird', 'twothirds', 'zerosuperior', 'onesuperior', 'twosuperior', 'threesuperior', 'foursuperior', 'fivesuperior', 'sixsuperior', 'sevensuperior', 'eightsuperior', 'ninesuperior', 'zeroinferior', 'oneinferior', 'twoinferior', 'threeinferior', 'fourinferior', 'fiveinferior', 'sixinferior', 'seveninferior', 'eightinferior', 'nineinferior', 'centinferior', 'dollarinferior', 'periodinferior', 'commainferior'];
exports.ISOAdobeCharset = ISOAdobeCharset;
exports.ExpertCharset = ExpertCharset;
exports.ExpertSubsetCharset = ExpertSubsetCharset;
/***/ }),
-/* 36 */
+/* 37 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
@@ -35721,17 +35772,17 @@ var FontRendererFactory = function FontR
}
return new Type2Compiled(cff, cmap, font.fontMatrix, font.glyphNameMap);
}
};
}();
exports.FontRendererFactory = FontRendererFactory;
/***/ }),
-/* 37 */
+/* 38 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
@@ -36284,17 +36335,17 @@ var Type1Parser = function Type1ParserCl
}
}
};
return Type1Parser;
}();
exports.Type1Parser = Type1Parser;
/***/ }),
-/* 38 */
+/* 39 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
@@ -37074,17 +37125,17 @@ function getTilingPatternIR(operatorList
throw new _util.FormatError(`Invalid getTilingPatternIR /BBox array: [${bbox}].`);
}
return ['TilingPattern', args, operatorList, matrix, bbox, xstep, ystep, paintType, tilingType];
}
exports.Pattern = Pattern;
exports.getTilingPatternIR = getTilingPatternIR;
/***/ }),
-/* 39 */
+/* 40 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
@@ -37319,17 +37370,17 @@ function bidi(str, startLevel, vertical)
chars[i] = '';
}
}
return createBidiText(chars.join(''), isLTR);
}
exports.bidi = bidi;
/***/ }),
-/* 40 */
+/* 41 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
@@ -40273,17 +40324,17 @@ var getMetrics = (0, _util.getLookupTabl
t['a189'] = 927;
t['a190'] = 970;
t['a191'] = 918;
});
});
exports.getMetrics = getMetrics;
/***/ }),
-/* 41 */
+/* 42 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
@@ -40477,17 +40528,17 @@ var PostScriptLexer = function PostScrip
}
};
return PostScriptLexer;
}();
exports.PostScriptLexer = PostScriptLexer;
exports.PostScriptParser = PostScriptParser;
/***/ }),
-/* 42 */
+/* 43 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
@@ -40595,17 +40646,17 @@ var MurmurHash3_64 = function MurmurHash
return str;
}
};
return MurmurHash3_64;
}();
exports.MurmurHash3_64 = MurmurHash3_64;
/***/ }),
-/* 43 */
+/* 44 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
@@ -41119,17 +41170,17 @@ var PDFImage = function PDFImageClosure(
return this.image.getBytes(length);
}
};
return PDFImage;
}();
exports.PDFImage = PDFImage;
/***/ }),
-/* 44 */
+/* 45 */
/***/ (function(module, exports, __w_pdfjs_require__) {
"use strict";
module.exports = function isNodeJS() {
return typeof process === 'object' && process + '' === '[object process]';
};
--- a/browser/extensions/pdfjs/content/web/viewer.html
+++ b/browser/extensions/pdfjs/content/web/viewer.html
@@ -324,16 +324,23 @@ See https://github.com/adobe-type-tools/
<span data-l10n-id="document_properties_producer">PDF Producer:</span> <p id="producerField">-</p>
</div>
<div class="row">
<span data-l10n-id="document_properties_version">PDF Version:</span> <p id="versionField">-</p>
</div>
<div class="row">
<span data-l10n-id="document_properties_page_count">Page Count:</span> <p id="pageCountField">-</p>
</div>
+ <div class="row">
+ <span data-l10n-id="document_properties_page_size">Page Size:</span>
+ <p>
+ <span id="pageSizeFieldMM">-</span><br>
+ <span id="pageSizeFieldInch">-</span>
+ </p>
+ </div>
<div class="buttonRow">
<button id="documentPropertiesClose" class="overlayButton"><span data-l10n-id="document_properties_close">Close</span></button>
</div>
</div>
</div>
</div> <!-- overlayContainer -->
</div> <!-- outerContainer -->
--- a/browser/extensions/pdfjs/content/web/viewer.js
+++ b/browser/extensions/pdfjs/content/web/viewer.js
@@ -77,30 +77,30 @@
/******/
/******/ // Object.prototype.hasOwnProperty.call
/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
/******/
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "";
/******/
/******/ // Load entry module and return exports
-/******/ return __webpack_require__(__webpack_require__.s = 9);
+/******/ return __webpack_require__(__webpack_require__.s = 10);
/******/ })
/************************************************************************/
/******/ ([
/* 0 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
-exports.waitOnEventOrTimeout = exports.WaitOnType = 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.NullL10n = exports.mozL10n = exports.TextLayerMode = exports.RendererType = exports.PresentationModeState = exports.cloneObj = exports.isFileSchema = exports.isValidRotation = 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;
+exports.waitOnEventOrTimeout = exports.WaitOnType = 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.NullL10n = exports.TextLayerMode = exports.RendererType = exports.PresentationModeState = exports.cloneObj = exports.isFileSchema = exports.isValidRotation = 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 _pdfjsLib = __webpack_require__(1);
const CSS_UNITS = 96.0 / 72.0;
const DEFAULT_SCALE_VALUE = 'auto';
const DEFAULT_SCALE = 1.0;
const MIN_SCALE = 0.10;
const MAX_SCALE = 10.0;
@@ -137,20 +137,16 @@ let NullL10n = {
},
get(property, args, fallback) {
return Promise.resolve(formatL10nValue(fallback, args));
},
translate(element) {
return Promise.resolve();
}
};
-_pdfjsLib.PDFJS.useOnlyCssZoom = _pdfjsLib.PDFJS.useOnlyCssZoom === undefined ? false : _pdfjsLib.PDFJS.useOnlyCssZoom;
-_pdfjsLib.PDFJS.maxCanvasPixels = _pdfjsLib.PDFJS.maxCanvasPixels === undefined ? 16777216 : _pdfjsLib.PDFJS.maxCanvasPixels;
-_pdfjsLib.PDFJS.disableHistory = _pdfjsLib.PDFJS.disableHistory === undefined ? false : _pdfjsLib.PDFJS.disableHistory;
-;
function getOutputScale(ctx) {
let devicePixelRatio = window.devicePixelRatio || 1;
let backingStoreRatio = ctx.webkitBackingStorePixelRatio || ctx.mozBackingStorePixelRatio || ctx.msBackingStorePixelRatio || ctx.oBackingStorePixelRatio || ctx.backingStorePixelRatio || 1;
let pixelRatio = devicePixelRatio / backingStoreRatio;
return {
sx: pixelRatio,
sy: pixelRatio,
scaled: pixelRatio !== 1
@@ -436,18 +432,16 @@ function waitOnEventOrTimeout({ target,
}
let timeoutHandler = handler.bind(null, WaitOnType.TIMEOUT);
let timeout = setTimeout(timeoutHandler, delay);
return capability.promise;
}
let animationStarted = new Promise(function (resolve) {
window.requestAnimationFrame(resolve);
});
-let mozL10n;
-let localized = Promise.resolve();
class EventBus {
constructor() {
this._listeners = Object.create(null);
}
on(eventName, listener) {
let eventListeners = this._listeners[eventName];
if (!eventListeners) {
eventListeners = [];
@@ -543,33 +537,31 @@ exports.MAX_AUTO_SCALE = MAX_AUTO_SCALE;
exports.SCROLLBAR_PADDING = SCROLLBAR_PADDING;
exports.VERTICAL_PADDING = VERTICAL_PADDING;
exports.isValidRotation = isValidRotation;
exports.isFileSchema = isFileSchema;
exports.cloneObj = cloneObj;
exports.PresentationModeState = PresentationModeState;
exports.RendererType = RendererType;
exports.TextLayerMode = TextLayerMode;
-exports.mozL10n = mozL10n;
exports.NullL10n = NullL10n;
exports.EventBus = EventBus;
exports.ProgressBar = ProgressBar;
exports.getPDFFileNameFromURL = getPDFFileNameFromURL;
exports.noContextMenuHandler = noContextMenuHandler;
exports.parseQueryString = parseQueryString;
exports.getVisibleElements = getVisibleElements;
exports.roundToDivide = roundToDivide;
exports.approximateFraction = approximateFraction;
exports.getOutputScale = getOutputScale;
exports.scrollIntoView = scrollIntoView;
exports.watchScroll = watchScroll;
exports.binarySearchFirstItem = binarySearchFirstItem;
exports.normalizeWheelEventDelta = normalizeWheelEventDelta;
exports.animationStarted = animationStarted;
-exports.localized = localized;
exports.WaitOnType = WaitOnType;
exports.waitOnEventOrTimeout = waitOnEventOrTimeout;
/***/ }),
/* 1 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
@@ -829,74 +821,68 @@ exports.PDFPrintServiceFactory = exports
var _ui_utils = __webpack_require__(0);
var _pdfjsLib = __webpack_require__(1);
var _pdf_cursor_tools = __webpack_require__(6);
var _pdf_rendering_queue = __webpack_require__(3);
-var _pdf_sidebar = __webpack_require__(11);
+var _pdf_sidebar = __webpack_require__(12);
+
+var _app_options = __webpack_require__(7);
var _dom_events = __webpack_require__(2);
-var _overlay_manager = __webpack_require__(12);
-
-var _password_prompt = __webpack_require__(13);
-
-var _pdf_attachment_viewer = __webpack_require__(14);
-
-var _pdf_document_properties = __webpack_require__(15);
-
-var _pdf_find_bar = __webpack_require__(16);
-
-var _pdf_find_controller = __webpack_require__(7);
-
-var _pdf_history = __webpack_require__(17);
+var _overlay_manager = __webpack_require__(13);
+
+var _password_prompt = __webpack_require__(14);
+
+var _pdf_attachment_viewer = __webpack_require__(15);
+
+var _pdf_document_properties = __webpack_require__(16);
+
+var _pdf_find_bar = __webpack_require__(17);
+
+var _pdf_find_controller = __webpack_require__(9);
+
+var _pdf_history = __webpack_require__(18);
var _pdf_link_service = __webpack_require__(5);
-var _pdf_outline_viewer = __webpack_require__(18);
-
-var _pdf_presentation_mode = __webpack_require__(19);
-
-var _pdf_sidebar_resizer = __webpack_require__(20);
-
-var _pdf_thumbnail_viewer = __webpack_require__(21);
-
-var _pdf_viewer = __webpack_require__(23);
-
-var _secondary_toolbar = __webpack_require__(28);
-
-var _toolbar = __webpack_require__(29);
-
-var _viewer_compatibility = __webpack_require__(8);
-
-var _view_history = __webpack_require__(30);
+var _pdf_outline_viewer = __webpack_require__(19);
+
+var _pdf_presentation_mode = __webpack_require__(20);
+
+var _pdf_sidebar_resizer = __webpack_require__(21);
+
+var _pdf_thumbnail_viewer = __webpack_require__(22);
+
+var _pdf_viewer = __webpack_require__(24);
+
+var _secondary_toolbar = __webpack_require__(29);
+
+var _toolbar = __webpack_require__(30);
+
+var _view_history = __webpack_require__(31);
const DEFAULT_SCALE_DELTA = 1.1;
const DISABLE_AUTO_FETCH_LOADING_BAR_TIMEOUT = 5000;
-function configure(PDFJS) {
- PDFJS.imageResourcesPath = './images/';
- _pdfjsLib.GlobalWorkerOptions.workerSrc = '../build/pdf.worker.js';
- PDFJS.cMapUrl = '../web/cmaps/';
- PDFJS.cMapPacked = true;
-}
const DefaultExternalServices = {
updateFindControlState(data) {},
initPassiveLoading(callbacks) {},
fallback(data, callback) {},
reportTelemetry(data) {},
- createDownloadManager() {
+ createDownloadManager(options) {
throw new Error('Not implemented: createDownloadManager');
},
createPreferences() {
throw new Error('Not implemented: createPreferences');
},
- createL10n() {
+ createL10n(options) {
throw new Error('Not implemented: createL10n');
},
supportsIntegratedFind: false,
supportsDocumentFonts: true,
supportsDocumentColors: true,
supportedMouseWheelZoomModifierKeys: {
ctrlKey: true,
metaKey: true
@@ -927,206 +913,194 @@ let PDFViewerApplication = {
overlayManager: null,
preferences: null,
toolbar: null,
secondaryToolbar: null,
eventBus: null,
l10n: null,
isInitialViewSet: false,
downloadComplete: false,
- viewerPrefs: {
- enableWebGL: false,
- sidebarViewOnLoad: _pdf_sidebar.SidebarView.NONE,
- pdfBugEnabled: false,
- showPreviousViewOnLoad: true,
- defaultZoomValue: '',
- disablePageMode: false,
- disablePageLabels: false,
- renderer: 'canvas',
- textLayerMode: _ui_utils.TextLayerMode.ENABLE,
- renderInteractiveForms: false,
- enablePrintAutoRotate: false
- },
isViewerEmbedded: window.parent !== window,
url: '',
baseUrl: '',
externalServices: DefaultExternalServices,
_boundEvents: {},
contentDispositionFilename: null,
initialize(appConfig) {
this.preferences = this.externalServices.createPreferences();
- configure(_pdfjsLib.PDFJS);
this.appConfig = appConfig;
return this._readPreferences().then(() => {
return this._parseHashParameters();
}).then(() => {
return this._initializeL10n();
}).then(() => {
return this._initializeViewerComponents();
}).then(() => {
this.bindEvents();
this.bindWindowEvents();
let appContainer = appConfig.appContainer || document.documentElement;
this.l10n.translate(appContainer).then(() => {
this.eventBus.dispatch('localized');
});
- if (this.isViewerEmbedded && _pdfjsLib.PDFJS.externalLinkTarget === _pdfjsLib.LinkTarget.NONE) {
- _pdfjsLib.PDFJS.externalLinkTarget = _pdfjsLib.LinkTarget.TOP;
+ if (this.isViewerEmbedded && _app_options.AppOptions.get('externalLinkTarget') === _pdfjsLib.LinkTarget.NONE) {
+ _app_options.AppOptions.set('externalLinkTarget', _pdfjsLib.LinkTarget.TOP);
}
this.initialized = true;
});
},
_readPreferences() {
- let { preferences, viewerPrefs } = this;
+ let { preferences } = this;
return Promise.all([preferences.get('enableWebGL').then(function resolved(value) {
- viewerPrefs['enableWebGL'] = value;
+ _app_options.AppOptions.set('enableWebGL', value);
}), preferences.get('sidebarViewOnLoad').then(function resolved(value) {
- viewerPrefs['sidebarViewOnLoad'] = value;
+ _app_options.AppOptions.set('sidebarViewOnLoad', value);
+ }), preferences.get('cursorToolOnLoad').then(function resolved(value) {
+ _app_options.AppOptions.set('cursorToolOnLoad', value);
}), preferences.get('pdfBugEnabled').then(function resolved(value) {
- viewerPrefs['pdfBugEnabled'] = value;
+ _app_options.AppOptions.set('pdfBugEnabled', value);
}), preferences.get('showPreviousViewOnLoad').then(function resolved(value) {
- viewerPrefs['showPreviousViewOnLoad'] = value;
+ _app_options.AppOptions.set('showPreviousViewOnLoad', value);
}), preferences.get('defaultZoomValue').then(function resolved(value) {
- viewerPrefs['defaultZoomValue'] = value;
+ _app_options.AppOptions.set('defaultZoomValue', value);
}), preferences.get('textLayerMode').then(function resolved(value) {
- if (viewerPrefs['textLayerMode'] === _ui_utils.TextLayerMode.DISABLE) {
+ if (_app_options.AppOptions.get('textLayerMode') === _ui_utils.TextLayerMode.DISABLE) {
return;
}
- viewerPrefs['textLayerMode'] = value;
+ _app_options.AppOptions.set('textLayerMode', value);
}), preferences.get('disableRange').then(function resolved(value) {
- if (_pdfjsLib.PDFJS.disableRange === true) {
+ if (_app_options.AppOptions.get('disableRange') === true) {
return;
}
- _pdfjsLib.PDFJS.disableRange = value;
+ _app_options.AppOptions.set('disableRange', value);
}), preferences.get('disableStream').then(function resolved(value) {
- if (_pdfjsLib.PDFJS.disableStream === true) {
+ if (_app_options.AppOptions.get('disableStream') === true) {
return;
}
- _pdfjsLib.PDFJS.disableStream = value;
+ _app_options.AppOptions.set('disableStream', value);
}), preferences.get('disableAutoFetch').then(function resolved(value) {
- _pdfjsLib.PDFJS.disableAutoFetch = value;
+ _app_options.AppOptions.set('disableAutoFetch', value);
}), preferences.get('disableFontFace').then(function resolved(value) {
- if (_pdfjsLib.PDFJS.disableFontFace === true) {
+ if (_app_options.AppOptions.get('disableFontFace') === true) {
return;
}
- _pdfjsLib.PDFJS.disableFontFace = value;
+ _app_options.AppOptions.set('disableFontFace', value);
}), preferences.get('useOnlyCssZoom').then(function resolved(value) {
- _pdfjsLib.PDFJS.useOnlyCssZoom = value;
+ _app_options.AppOptions.set('useOnlyCssZoom', value);
}), preferences.get('externalLinkTarget').then(function resolved(value) {
- if (_pdfjsLib.PDFJS.externalLinkTarget !== _pdfjsLib.LinkTarget.NONE) {
+ if (_app_options.AppOptions.get('externalLinkTarget') !== _pdfjsLib.LinkTarget.NONE) {
return;
}
- _pdfjsLib.PDFJS.externalLinkTarget = value;
+ _app_options.AppOptions.set('externalLinkTarget', value);
}), preferences.get('renderer').then(function resolved(value) {
- viewerPrefs['renderer'] = value;
+ _app_options.AppOptions.set('renderer', value);
}), preferences.get('renderInteractiveForms').then(function resolved(value) {
- viewerPrefs['renderInteractiveForms'] = value;
+ _app_options.AppOptions.set('renderInteractiveForms', value);
}), preferences.get('disablePageMode').then(function resolved(value) {
- viewerPrefs['disablePageMode'] = value;
+ _app_options.AppOptions.set('disablePageMode', value);
}), preferences.get('disablePageLabels').then(function resolved(value) {
- viewerPrefs['disablePageLabels'] = value;
+ _app_options.AppOptions.set('disablePageLabels', value);
}), preferences.get('enablePrintAutoRotate').then(function resolved(value) {
- viewerPrefs['enablePrintAutoRotate'] = value;
+ _app_options.AppOptions.set('enablePrintAutoRotate', value);
})]).catch(function (reason) {});
},
_parseHashParameters() {
- let { appConfig, viewerPrefs } = this;
+ let { appConfig } = this;
let waitOn = [];
- if (viewerPrefs['pdfBugEnabled']) {
+ if (_app_options.AppOptions.get('pdfBugEnabled')) {
let hash = document.location.hash.substring(1);
let hashParams = (0, _ui_utils.parseQueryString)(hash);
if ('disableworker' in hashParams && hashParams['disableworker'] === 'true') {
waitOn.push(loadFakeWorker());
}
if ('disablerange' in hashParams) {
- _pdfjsLib.PDFJS.disableRange = hashParams['disablerange'] === 'true';
+ _app_options.AppOptions.set('disableRange', hashParams['disablerange'] === 'true');
}
if ('disablestream' in hashParams) {
- _pdfjsLib.PDFJS.disableStream = hashParams['disablestream'] === 'true';
+ _app_options.AppOptions.set('disableStream', hashParams['disablestream'] === 'true');
}
if ('disableautofetch' in hashParams) {
- _pdfjsLib.PDFJS.disableAutoFetch = hashParams['disableautofetch'] === 'true';
+ _app_options.AppOptions.set('disableAutoFetch', hashParams['disableautofetch'] === 'true');
}
if ('disablefontface' in hashParams) {
- _pdfjsLib.PDFJS.disableFontFace = hashParams['disablefontface'] === 'true';
+ _app_options.AppOptions.set('disableFontFace', hashParams['disablefontface'] === 'true');
}
if ('disablehistory' in hashParams) {
- _pdfjsLib.PDFJS.disableHistory = hashParams['disablehistory'] === 'true';
+ _app_options.AppOptions.set('disableHistory', hashParams['disablehistory'] === 'true');
}
if ('webgl' in hashParams) {
- viewerPrefs['enableWebGL'] = hashParams['webgl'] === 'true';
+ _app_options.AppOptions.set('enableWebGL', hashParams['webgl'] === 'true');
}
if ('useonlycsszoom' in hashParams) {
- _pdfjsLib.PDFJS.useOnlyCssZoom = hashParams['useonlycsszoom'] === 'true';
+ _app_options.AppOptions.set('useOnlyCssZoom', hashParams['useonlycsszoom'] === 'true');
}
if ('verbosity' in hashParams) {
- _pdfjsLib.PDFJS.verbosity = hashParams['verbosity'] | 0;
+ _app_options.AppOptions.set('verbosity', hashParams['verbosity'] | 0);
}
if ('textlayer' in hashParams) {
switch (hashParams['textlayer']) {
case 'off':
- viewerPrefs['textLayerMode'] = _ui_utils.TextLayerMode.DISABLE;
+ _app_options.AppOptions.set('textLayerMode', _ui_utils.TextLayerMode.DISABLE);
break;
case 'visible':
case 'shadow':
case 'hover':
let viewer = appConfig.viewerContainer;
viewer.classList.add('textLayer-' + hashParams['textlayer']);
break;
}
}
if ('pdfbug' in hashParams) {
- _pdfjsLib.PDFJS.pdfBug = true;
+ _app_options.AppOptions.set('pdfBug', true);
let enabled = hashParams['pdfbug'].split(',');
waitOn.push(loadAndEnablePDFBug(enabled));
}
}
return Promise.all(waitOn);
},
_initializeL10n() {
- this.l10n = this.externalServices.createL10n({ locale: _pdfjsLib.PDFJS.locale });
+ this.l10n = this.externalServices.createL10n({ locale: _app_options.AppOptions.get('locale') });
return this.l10n.getDirection().then(dir => {
document.getElementsByTagName('html')[0].dir = dir;
});
},
_initializeViewerComponents() {
- let { appConfig, viewerPrefs } = this;
+ let { appConfig } = this;
return new Promise((resolve, reject) => {
this.overlayManager = new _overlay_manager.OverlayManager();
let eventBus = appConfig.eventBus || (0, _dom_events.getGlobalEventBus)();
this.eventBus = eventBus;
let pdfRenderingQueue = new _pdf_rendering_queue.PDFRenderingQueue();
pdfRenderingQueue.onIdle = this.cleanup.bind(this);
this.pdfRenderingQueue = pdfRenderingQueue;
let pdfLinkService = new _pdf_link_service.PDFLinkService({
eventBus,
- externalLinkTarget: _pdfjsLib.PDFJS.externalLinkTarget,
- externalLinkRel: _pdfjsLib.PDFJS.externalLinkRel
+ externalLinkTarget: _app_options.AppOptions.get('externalLinkTarget'),
+ externalLinkRel: _app_options.AppOptions.get('externalLinkRel')
});
this.pdfLinkService = pdfLinkService;
- let downloadManager = this.externalServices.createDownloadManager();
+ let downloadManager = this.externalServices.createDownloadManager({ disableCreateObjectURL: _app_options.AppOptions.get('disableCreateObjectURL') });
this.downloadManager = downloadManager;
let container = appConfig.mainContainer;
let viewer = appConfig.viewerContainer;
this.pdfViewer = new _pdf_viewer.PDFViewer({
container,
viewer,
eventBus,
renderingQueue: pdfRenderingQueue,
linkService: pdfLinkService,
downloadManager,
- renderer: viewerPrefs['renderer'],
- enableWebGL: viewerPrefs['enableWebGL'],
+ renderer: _app_options.AppOptions.get('renderer'),
+ enableWebGL: _app_options.AppOptions.get('enableWebGL'),
l10n: this.l10n,
- textLayerMode: viewerPrefs['textLayerMode'],
- imageResourcesPath: _pdfjsLib.PDFJS.imageResourcesPath,
- renderInteractiveForms: viewerPrefs['renderInteractiveForms'],
- enablePrintAutoRotate: viewerPrefs['enablePrintAutoRotate'],
- useOnlyCssZoom: _pdfjsLib.PDFJS.useOnlyCssZoom,
- maxCanvasPixels: _pdfjsLib.PDFJS.maxCanvasPixels
+ textLayerMode: _app_options.AppOptions.get('textLayerMode'),
+ imageResourcesPath: _app_options.AppOptions.get('imageResourcesPath'),
+ renderInteractiveForms: _app_options.AppOptions.get('renderInteractiveForms'),
+ enablePrintAutoRotate: _app_options.AppOptions.get('enablePrintAutoRotate'),
+ useOnlyCssZoom: _app_options.AppOptions.get('useOnlyCssZoom'),
+ maxCanvasPixels: _app_options.AppOptions.get('maxCanvasPixels')
});
pdfRenderingQueue.setViewer(this.pdfViewer);
pdfLinkService.setViewer(this.pdfViewer);
let thumbnailContainer = appConfig.sidebar.thumbnailView;
this.pdfThumbnailViewer = new _pdf_thumbnail_viewer.PDFThumbnailViewer({
container: thumbnailContainer,
renderingQueue: pdfRenderingQueue,
linkService: pdfLinkService,
@@ -1155,21 +1129,21 @@ let PDFViewerApplication = {
this.findBar.updateUIState(state, previous, matchCount);
}
};
this.pdfViewer.setFindController(this.findController);
let findBarConfig = Object.create(appConfig.findBar);
findBarConfig.findController = this.findController;
findBarConfig.eventBus = eventBus;
this.findBar = new _pdf_find_bar.PDFFindBar(findBarConfig, this.l10n);
- this.pdfDocumentProperties = new _pdf_document_properties.PDFDocumentProperties(appConfig.documentProperties, this.overlayManager, this.l10n);
+ this.pdfDocumentProperties = new _pdf_document_properties.PDFDocumentProperties(appConfig.documentProperties, this.overlayManager, eventBus, this.l10n);
this.pdfCursorTools = new _pdf_cursor_tools.PDFCursorTools({
container,
eventBus,
- preferences: this.preferences
+ cursorToolOnLoad: _app_options.AppOptions.get('cursorToolOnLoad')
});
this.toolbar = new _toolbar.Toolbar(appConfig.toolbar, container, eventBus, this.l10n);
this.secondaryToolbar = new _secondary_toolbar.SecondaryToolbar(appConfig.secondaryToolbar, container, eventBus);
if (this.supportsFullscreen) {
this.pdfPresentationMode = new _pdf_presentation_mode.PDFPresentationMode({
container,
viewer,
pdfViewer: this.pdfViewer,
@@ -1233,17 +1207,17 @@ let PDFViewerApplication = {
return !!this.printService;
},
get supportsPrinting() {
return PDFPrintServiceFactory.instance.supportsPrinting;
},
get supportsFullscreen() {
let support;
support = document.fullscreenEnabled === true || document.mozFullScreenEnabled === true;
- if (support && _viewer_compatibility.viewerCompatibilityParams['disableFullscreen'] === true) {
+ if (support && _app_options.AppOptions.get('disableFullscreen') === true) {
support = false;
}
return (0, _pdfjsLib.shadow)(this, 'supportsFullscreen', support);
},
get supportsIntegratedFind() {
return this.externalServices.supportsIntegratedFind;
},
get supportsDocumentFonts() {
@@ -1348,28 +1322,35 @@ let PDFViewerApplication = {
},
open(file, args) {
if (this.pdfLoadingTask) {
return this.close().then(() => {
this.preferences.reload();
return this.open(file, args);
});
}
+ const workerParameters = _app_options.AppOptions.getAll('worker');
+ for (let key in workerParameters) {
+ _pdfjsLib.GlobalWorkerOptions[key] = workerParameters[key];
+ }
let parameters = Object.create(null);
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;
}
parameters.docBaseUrl = this.baseUrl;
- parameters.verbosity = _pdfjsLib.PDFJS.verbosity;
+ const apiParameters = _app_options.AppOptions.getAll('api');
+ for (let key in apiParameters) {
+ parameters[key] = apiParameters[key];
+ }
if (args) {
for (let prop in args) {
if (prop === 'length') {
this.pdfDocumentProperties.setFileSize(args[prop]);
}
parameters[prop] = args[prop];
}
}
@@ -1470,17 +1451,18 @@ let PDFViewerApplication = {
},
progress(level) {
if (this.downloadComplete) {
return;
}
let percent = Math.round(level * 100);
if (percent > this.loadingBar.percent || isNaN(percent)) {
this.loadingBar.percent = percent;
- if (_pdfjsLib.PDFJS.disableAutoFetch && percent) {
+ const disableAutoFetch = this.pdfDocument ? this.pdfDocument.loadingParams['disableAutoFetch'] : _app_options.AppOptions.get('disableAutoFetch');
+ if (disableAutoFetch && percent) {
if (this.disableAutoFetchLoadingBarTimeout) {
clearTimeout(this.disableAutoFetchLoadingBarTimeout);
this.disableAutoFetchLoadingBarTimeout = null;
}
this.loadingBar.show();
this.disableAutoFetchLoadingBarTimeout = setTimeout(() => {
this.loadingBar.hide();
this.disableAutoFetchLoadingBarTimeout = null;
@@ -1510,18 +1492,18 @@ let PDFViewerApplication = {
pdfViewer.setDocument(pdfDocument);
let firstPagePromise = pdfViewer.firstPagePromise;
let pagesPromise = pdfViewer.pagesPromise;
let onePageRendered = pdfViewer.onePageRendered;
let pdfThumbnailViewer = this.pdfThumbnailViewer;
pdfThumbnailViewer.setDocument(pdfDocument);
firstPagePromise.then(pdfPage => {
this.loadingBar.setWidth(this.appConfig.viewerContainer);
- if (!_pdfjsLib.PDFJS.disableHistory && !this.isViewerEmbedded) {
- let resetHistory = !this.viewerPrefs['showPreviousViewOnLoad'];
+ if (!_app_options.AppOptions.get('disableHistory') && !this.isViewerEmbedded) {
+ let resetHistory = !_app_options.AppOptions.get('showPreviousViewOnLoad');
this.pdfHistory.initialize(id, resetHistory);
if (this.pdfHistory.initialBookmark) {
this.initialBookmark = this.pdfHistory.initialBookmark;
this.initialRotation = this.pdfHistory.initialRotation;
}
}
let initialParams = {
bookmark: null,
@@ -1532,25 +1514,25 @@ let PDFViewerApplication = {
page: '1',
zoom: _ui_utils.DEFAULT_SCALE_VALUE,
scrollLeft: '0',
scrollTop: '0',
rotation: null,
sidebarView: _pdf_sidebar.SidebarView.NONE
}).catch(() => {});
Promise.all([storePromise, pageModePromise]).then(([values = {}, pageMode]) => {
- let hash = this.viewerPrefs['defaultZoomValue'] ? 'zoom=' + this.viewerPrefs['defaultZoomValue'] : null;
+ let hash = _app_options.AppOptions.get('defaultZoomValue') ? 'zoom=' + _app_options.AppOptions.get('defaultZoomValue') : null;
let rotation = null;
- let sidebarView = this.viewerPrefs['sidebarViewOnLoad'];
- if (values.exists && this.viewerPrefs['showPreviousViewOnLoad']) {
- hash = 'page=' + values.page + '&zoom=' + (this.viewerPrefs['defaultZoomValue'] || values.zoom) + ',' + values.scrollLeft + ',' + values.scrollTop;
+ let sidebarView = _app_options.AppOptions.get('sidebarViewOnLoad');
+ if (values.exists && _app_options.AppOptions.get('showPreviousViewOnLoad')) {
+ hash = 'page=' + values.page + '&zoom=' + (_app_options.AppOptions.get('defaultZoomValue') || values.zoom) + ',' + values.scrollLeft + ',' + values.scrollTop;
rotation = parseInt(values.rotation, 10);
sidebarView = sidebarView || values.sidebarView | 0;
}
- if (pageMode && !this.viewerPrefs['disablePageMode']) {
+ if (pageMode && !_app_options.AppOptions.get('disablePageMode')) {
sidebarView = sidebarView || apiPageModeToSidebarView(pageMode);
}
return {
hash,
rotation,
sidebarView
};
}).then(({ hash, rotation, sidebarView }) => {
@@ -1574,17 +1556,17 @@ let PDFViewerApplication = {
this.initialBookmark = initialParams.bookmark;
pdfViewer.currentScaleValue = pdfViewer.currentScaleValue;
this.setInitialView(initialParams.hash);
}).then(function () {
pdfViewer.update();
});
});
pdfDocument.getPageLabels().then(labels => {
- if (!labels || this.viewerPrefs['disablePageLabels']) {
+ if (!labels || _app_options.AppOptions.get('disablePageLabels')) {
return;
}
let i = 0,
numLabels = labels.length;
if (numLabels !== this.pagesCount) {
console.error('The number of Page Labels does not match ' + 'the number of pages in the document.');
return;
}
@@ -1634,17 +1616,17 @@ let PDFViewerApplication = {
pdfDocument.getAttachments().then(attachments => {
this.pdfAttachmentViewer.render({ attachments });
});
});
pdfDocument.getMetadata().then(({ info, metadata, contentDispositionFilename }) => {
this.documentInfo = info;
this.metadata = metadata;
this.contentDispositionFilename = contentDispositionFilename;
- console.log('PDF ' + pdfDocument.fingerprint + ' [' + info.PDFFormatVersion + ' ' + (info.Producer || '-').trim() + ' / ' + (info.Creator || '-').trim() + ']' + ' (PDF.js: ' + (_pdfjsLib.version || '-') + (this.viewerPrefs['enableWebGL'] ? ' [WebGL]' : '') + ')');
+ console.log('PDF ' + pdfDocument.fingerprint + ' [' + info.PDFFormatVersion + ' ' + (info.Producer || '-').trim() + ' / ' + (info.Creator || '-').trim() + ']' + ' (PDF.js: ' + (_pdfjsLib.version || '-') + (_app_options.AppOptions.get('enableWebGL') ? ' [WebGL]' : '') + ')');
let pdfTitle;
if (metadata && metadata.has('dc:title')) {
let title = metadata.get('dc:title');
if (title !== 'Untitled') {
pdfTitle = title;
}
}
if (!pdfTitle && info && info['Title']) {
@@ -1870,16 +1852,19 @@ let PDFViewerApplication = {
_boundEvents.windowBeforePrint = null;
_boundEvents.windowAfterPrint = null;
}
};
let validateFileURL;
;
function loadFakeWorker() {
return new Promise(function (resolve, reject) {
+ if (!_pdfjsLib.GlobalWorkerOptions.workerSrc) {
+ _pdfjsLib.GlobalWorkerOptions.workerSrc = _app_options.AppOptions.get('workerSrc');
+ }
let script = document.createElement('script');
script.src = _pdfjsLib.PDFWorker.getWorkerSrc();
script.onload = function () {
resolve();
};
script.onerror = function () {
reject(new Error(`Cannot load fake worker at: ${script.src}`));
};
@@ -1904,17 +1889,17 @@ function loadAndEnablePDFBug(enabledTabs
}
function webViewerInitialized() {
let appConfig = PDFViewerApplication.appConfig;
let file;
file = window.location.href.split('#')[0];
appConfig.toolbar.openFile.setAttribute('hidden', 'true');
appConfig.secondaryToolbar.openFileButton.setAttribute('hidden', 'true');
if (!PDFViewerApplication.supportsDocumentFonts) {
- _pdfjsLib.PDFJS.disableFontFace = true;
+ _app_options.AppOptions.set('disableFontFace', true);
PDFViewerApplication.l10n.get('web_fonts_disabled', null, 'Web fonts are disabled: unable to use embedded PDF fonts.').then(msg => {
console.warn(msg);
});
}
if (!PDFViewerApplication.supportsPrinting) {
appConfig.toolbar.print.classList.add('hidden');
appConfig.secondaryToolbar.printButton.classList.add('hidden');
}
@@ -2686,16 +2671,19 @@ class PDFLinkService {
this.eventBus.dispatch('fileattachmentannotation', {
source: this,
id,
filename,
content
});
}
cachePageRef(pageNum, pageRef) {
+ if (!pageRef) {
+ return;
+ }
let refStr = pageRef.num + ' ' + pageRef.gen + ' R';
this._pagesRefCache[refStr] = pageNum;
}
_cachedPageNumber(pageRef) {
let refStr = pageRef.num + ' ' + pageRef.gen + ' R';
return this._pagesRefCache && this._pagesRefCache[refStr] || null;
}
}
@@ -2785,34 +2773,34 @@ exports.SimpleLinkService = SimpleLinkSe
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.PDFCursorTools = exports.CursorTool = undefined;
-var _grab_to_pan = __webpack_require__(10);
+var _grab_to_pan = __webpack_require__(11);
const CursorTool = {
SELECT: 0,
HAND: 1,
ZOOM: 2
};
class PDFCursorTools {
- constructor({ container, eventBus, preferences }) {
+ constructor({ container, eventBus, cursorToolOnLoad = CursorTool.SELECT }) {
this.container = container;
this.eventBus = eventBus;
this.active = CursorTool.SELECT;
this.activeBeforePresentationMode = null;
this.handTool = new _grab_to_pan.GrabToPan({ element: this.container });
this._addEventListeners();
- preferences.get('cursorToolOnLoad').then(value => {
- this.switchTool(value);
- }).catch(() => {});
+ Promise.resolve().then(() => {
+ this.switchTool(cursorToolOnLoad);
+ });
}
get activeTool() {
return this.active;
}
switchTool(tool) {
if (this.activeBeforePresentationMode !== null) {
return;
}
@@ -2880,16 +2868,229 @@ exports.PDFCursorTools = PDFCursorTools;
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
+exports.OptionKind = exports.AppOptions = undefined;
+
+var _pdfjsLib = __webpack_require__(1);
+
+var _viewer_compatibility = __webpack_require__(8);
+
+const OptionKind = {
+ VIEWER: 'viewer',
+ API: 'api',
+ WORKER: 'worker'
+};
+const defaultOptions = {
+ cursorToolOnLoad: {
+ value: 0,
+ kind: OptionKind.VIEWER
+ },
+ defaultUrl: {
+ value: 'compressed.tracemonkey-pldi-09.pdf',
+ kind: OptionKind.VIEWER
+ },
+ defaultZoomValue: {
+ value: '',
+ kind: OptionKind.VIEWER
+ },
+ disableFullscreen: {
+ value: _viewer_compatibility.viewerCompatibilityParams.disableFullscreen || false,
+ kind: OptionKind.VIEWER
+ },
+ disableHistory: {
+ value: false,
+ kind: OptionKind.VIEWER
+ },
+ disablePageLabels: {
+ value: false,
+ kind: OptionKind.VIEWER
+ },
+ disablePageMode: {
+ value: false,
+ kind: OptionKind.VIEWER
+ },
+ enablePrintAutoRotate: {
+ value: false,
+ kind: OptionKind.VIEWER
+ },
+ enableWebGL: {
+ value: false,
+ kind: OptionKind.VIEWER
+ },
+ externalLinkRel: {
+ value: 'noopener noreferrer nofollow',
+ kind: OptionKind.VIEWER
+ },
+ externalLinkTarget: {
+ value: 0,
+ kind: OptionKind.VIEWER
+ },
+ imageResourcesPath: {
+ value: './images/',
+ kind: OptionKind.VIEWER
+ },
+ locale: {
+ value: typeof navigator !== 'undefined' ? navigator.language : 'en-US',
+ kind: OptionKind.VIEWER
+ },
+ maxCanvasPixels: {
+ value: _viewer_compatibility.viewerCompatibilityParams.maxCanvasPixels || 16777216,
+ kind: OptionKind.VIEWER
+ },
+ pdfBugEnabled: {
+ value: false,
+ kind: OptionKind.VIEWER
+ },
+ renderer: {
+ value: 'canvas',
+ kind: OptionKind.VIEWER
+ },
+ renderInteractiveForms: {
+ value: false,
+ kind: OptionKind.VIEWER
+ },
+ showPreviousViewOnLoad: {
+ value: true,
+ kind: OptionKind.VIEWER
+ },
+ sidebarViewOnLoad: {
+ value: 0,
+ kind: OptionKind.VIEWER
+ },
+ textLayerMode: {
+ value: 1,
+ kind: OptionKind.VIEWER
+ },
+ useOnlyCssZoom: {
+ value: false,
+ kind: OptionKind.VIEWER
+ },
+ cMapPacked: {
+ value: true,
+ kind: OptionKind.API
+ },
+ cMapUrl: {
+ value: '../web/cmaps/',
+ kind: OptionKind.API
+ },
+ disableAutoFetch: {
+ value: false,
+ kind: OptionKind.API
+ },
+ disableCreateObjectURL: {
+ value: _pdfjsLib.apiCompatibilityParams.disableCreateObjectURL || false,
+ kind: OptionKind.API
+ },
+ disableFontFace: {
+ value: false,
+ kind: OptionKind.API
+ },
+ disableRange: {
+ value: _pdfjsLib.apiCompatibilityParams.disableRange || false,
+ kind: OptionKind.API
+ },
+ disableStream: {
+ value: _pdfjsLib.apiCompatibilityParams.disableStream || false,
+ kind: OptionKind.API
+ },
+ isEvalSupported: {
+ value: true,
+ kind: OptionKind.API
+ },
+ maxImageSize: {
+ value: -1,
+ kind: OptionKind.API
+ },
+ pdfBug: {
+ value: false,
+ kind: OptionKind.API
+ },
+ postMessageTransfers: {
+ value: true,
+ kind: OptionKind.API
+ },
+ verbosity: {
+ value: 1,
+ kind: OptionKind.API
+ },
+ workerPort: {
+ value: null,
+ kind: OptionKind.WORKER
+ },
+ workerSrc: {
+ value: '../build/pdf.worker.js',
+ kind: OptionKind.WORKER
+ }
+};
+const userOptions = Object.create(null);
+class AppOptions {
+ constructor() {
+ throw new Error('Cannot initialize AppOptions.');
+ }
+ static get(name) {
+ let defaultOption = defaultOptions[name],
+ userOption = userOptions[name];
+ if (userOption !== undefined) {
+ return userOption;
+ }
+ return defaultOption !== undefined ? defaultOption.value : undefined;
+ }
+ static getAll(kind = null) {
+ let options = Object.create(null);
+ for (let name in defaultOptions) {
+ let defaultOption = defaultOptions[name],
+ userOption = userOptions[name];
+ if (kind && defaultOption.kind !== kind) {
+ continue;
+ }
+ options[name] = userOption !== undefined ? userOption : defaultOption.value;
+ }
+ return options;
+ }
+ static set(name, value) {
+ userOptions[name] = value;
+ }
+ static remove(name) {
+ delete userOptions[name];
+ }
+}
+exports.AppOptions = AppOptions;
+exports.OptionKind = OptionKind;
+
+/***/ }),
+/* 8 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+let compatibilityParams = Object.create(null);
+;
+const viewerCompatibilityParams = Object.freeze(compatibilityParams);
+exports.viewerCompatibilityParams = viewerCompatibilityParams;
+
+/***/ }),
+/* 9 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
exports.PDFFindController = exports.FindState = undefined;
var _pdfjsLib = __webpack_require__(1);
var _ui_utils = __webpack_require__(0);
const FindState = {
FOUND: 0,
@@ -3235,46 +3436,31 @@ class PDFFindController {
this.onUpdateState(state, previous, this.matchCount);
}
}
}
exports.FindState = FindState;
exports.PDFFindController = PDFFindController;
/***/ }),
-/* 8 */
+/* 10 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
-Object.defineProperty(exports, "__esModule", {
- value: true
-});
-let compatibilityParams = Object.create(null);
;
-const viewerCompatibilityParams = Object.freeze(compatibilityParams);
-exports.viewerCompatibilityParams = viewerCompatibilityParams;
-
-/***/ }),
-/* 9 */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
-
-let DEFAULT_URL = 'compressed.tracemonkey-pldi-09.pdf';
-;
-let pdfjsWebApp;
+let pdfjsWebApp, pdfjsWebAppOptions;
{
pdfjsWebApp = __webpack_require__(4);
+ pdfjsWebAppOptions = __webpack_require__(7);
}
{
- __webpack_require__(31);
- __webpack_require__(34);
+ __webpack_require__(32);
+ __webpack_require__(35);
}
;
;
;
function getViewerConfiguration() {
return {
appContainer: document.body,
mainContainer: document.getElementById('viewerContainer'),
@@ -3367,46 +3553,48 @@ function getViewerConfiguration() {
'author': document.getElementById('authorField'),
'subject': document.getElementById('subjectField'),
'keywords': document.getElementById('keywordsField'),
'creationDate': document.getElementById('creationDateField'),
'modificationDate': document.getElementById('modificationDateField'),
'creator': document.getElementById('creatorField'),
'producer': document.getElementById('producerField'),
'version': document.getElementById('versionField'),
- 'pageCount': document.getElementById('pageCountField')
+ 'pageCount': document.getElementById('pageCountField'),
+ 'pageSizeInch': document.getElementById('pageSizeFieldInch'),
+ 'pageSizeMM': document.getElementById('pageSizeFieldMM')
}
},
errorWrapper: {
container: document.getElementById('errorWrapper'),
errorMessage: document.getElementById('errorMessage'),
closeButton: document.getElementById('errorClose'),
errorMoreInfo: document.getElementById('errorMoreInfo'),
moreInfoButton: document.getElementById('errorShowMore'),
lessInfoButton: document.getElementById('errorShowLess')
},
printContainer: document.getElementById('printContainer'),
openFileInputName: 'fileInput',
- debuggerScriptPath: './debugger.js',
- defaultUrl: DEFAULT_URL
+ debuggerScriptPath: './debugger.js'
};
}
function webViewerLoad() {
let config = getViewerConfiguration();
window.PDFViewerApplication = pdfjsWebApp.PDFViewerApplication;
+ window.PDFViewerApplicationOptions = pdfjsWebAppOptions.AppOptions;
pdfjsWebApp.PDFViewerApplication.run(config);
}
if (document.readyState === 'interactive' || document.readyState === 'complete') {
webViewerLoad();
} else {
document.addEventListener('DOMContentLoaded', webViewerLoad, true);
}
/***/ }),
-/* 10 */
+/* 11 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
@@ -3537,17 +3725,17 @@ function isLeftMouseReleased(event) {
}
if (isChrome15OrOpera15plus || isSafari6plus) {
return event.which === 0;
}
}
exports.GrabToPan = GrabToPan;
/***/ }),
-/* 11 */
+/* 12 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
@@ -3838,17 +4026,17 @@ class PDFSidebar {
}
});
}
}
exports.SidebarView = SidebarView;
exports.PDFSidebar = PDFSidebar;
/***/ }),
-/* 12 */
+/* 13 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
@@ -3938,17 +4126,17 @@ class OverlayManager {
if (this._active) {
this.close(this._active);
}
}
}
exports.OverlayManager = OverlayManager;
/***/ }),
-/* 13 */
+/* 14 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
@@ -4008,17 +4196,17 @@ class PasswordPrompt {
setUpdateCallback(updateCallback, reason) {
this.updateCallback = updateCallback;
this.reason = reason;
}
}
exports.PasswordPrompt = PasswordPrompt;
/***/ }),
-/* 14 */
+/* 15 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
@@ -4044,18 +4232,18 @@ class PDFAttachmentViewer {
_dispatchEvent(attachmentsCount) {
this._renderedCapability.resolve();
this.eventBus.dispatch('attachmentsloaded', {
source: this,
attachmentsCount
});
}
_bindPdfLink(button, content, filename) {
- if (_pdfjsLib.PDFJS.disableCreateObjectURL) {
- throw new Error('bindPdfLink: ' + 'Unsupported "PDFJS.disableCreateObjectURL" value.');
+ if (this.downloadManager.disableCreateObjectURL) {
+ throw new Error('bindPdfLink: Unsupported "disableCreateObjectURL" value.');
}
let blobUrl;
button.onclick = function () {
if (!blobUrl) {
blobUrl = (0, _pdfjsLib.createObjectURL)(content, 'application/pdf');
}
let viewerUrl;
viewerUrl = blobUrl + '?' + encodeURIComponent(filename);
@@ -4085,17 +4273,17 @@ class PDFAttachmentViewer {
attachmentsCount = names.length;
for (let i = 0; i < attachmentsCount; i++) {
let item = attachments[names[i]];
let filename = (0, _pdfjsLib.removeNullCharacters)((0, _pdfjsLib.getFilenameFromUrl)(item.filename));
let div = document.createElement('div');
div.className = 'attachmentsItem';
let button = document.createElement('button');
button.textContent = filename;
- if (/\.pdf$/i.test(filename) && !_pdfjsLib.PDFJS.disableCreateObjectURL) {
+ if (/\.pdf$/i.test(filename) && !this.downloadManager.disableCreateObjectURL) {
this._bindPdfLink(button, item.content, filename);
} else {
this._bindLink(button, item.content, filename);
}
div.appendChild(button);
this.container.appendChild(div);
}
this._dispatchEvent(attachmentsCount);
@@ -4121,81 +4309,96 @@ class PDFAttachmentViewer {
keepRenderedCapability: true
});
});
}
}
exports.PDFAttachmentViewer = PDFAttachmentViewer;
/***/ }),
-/* 15 */
+/* 16 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.PDFDocumentProperties = undefined;
var _ui_utils = __webpack_require__(0);
var _pdfjsLib = __webpack_require__(1);
const DEFAULT_FIELD_CONTENT = '-';
class PDFDocumentProperties {
- constructor({ overlayName, fields, container, closeButton }, overlayManager, l10n = _ui_utils.NullL10n) {
+ constructor({ overlayName, fields, container, closeButton }, overlayManager, eventBus, l10n = _ui_utils.NullL10n) {
this.overlayName = overlayName;
this.fields = fields;
this.container = container;
this.overlayManager = overlayManager;
this.l10n = l10n;
this._reset();
if (closeButton) {
closeButton.addEventListener('click', this.close.bind(this));
}
this.overlayManager.register(this.overlayName, this.container, this.close.bind(this));
+ if (eventBus) {
+ eventBus.on('pagechanging', evt => {
+ this._currentPageNumber = evt.pageNumber;
+ });
+ }
}
open() {
let freezeFieldData = data => {
Object.defineProperty(this, 'fieldData', {
value: Object.freeze(data),
writable: false,
enumerable: true,
configurable: true
});
};
Promise.all([this.overlayManager.open(this.overlayName), this._dataAvailableCapability.promise]).then(() => {
- if (this.fieldData) {
+ const currentPageNumber = this._currentPageNumber;
+ if (this.fieldData && currentPageNumber === this.fieldData['_currentPageNumber']) {
this._updateUI();
return;
}
this.pdfDocument.getMetadata().then(({ info, metadata, contentDispositionFilename }) => {
- return Promise.all([info, metadata, contentDispositionFilename || (0, _ui_utils.getPDFFileNameFromURL)(this.url), this._parseFileSize(this.maybeFileSize), this._parseDate(info.CreationDate), this._parseDate(info.ModDate)]);
- }).then(([info, metadata, fileName, fileSize, creationDate, modDate]) => {
+ return Promise.all([info, metadata, contentDispositionFilename || (0, _ui_utils.getPDFFileNameFromURL)(this.url), this._parseFileSize(this.maybeFileSize), this._parseDate(info.CreationDate), this._parseDate(info.ModDate), this.pdfDocument.getPage(currentPageNumber).then(pdfPage => {
+ return this._parsePageSize(pdfPage.pageSizeInches);
+ })]);
+ }).then(([info, metadata, fileName, fileSize, creationDate, modDate, pageSizes]) => {
freezeFieldData({
'fileName': fileName,
'fileSize': fileSize,
'title': info.Title,
'author': info.Author,
'subject': info.Subject,
'keywords': info.Keywords,
'creationDate': creationDate,
'modificationDate': modDate,
'creator': info.Creator,
'producer': info.Producer,
'version': info.PDFFormatVersion,
- 'pageCount': this.pdfDocument.numPages
+ 'pageCount': this.pdfDocument.numPages,
+ 'pageSizeInch': pageSizes.inch,
+ 'pageSizeMM': pageSizes.mm,
+ '_currentPageNumber': currentPageNumber
});
this._updateUI();
return this.pdfDocument.getDownloadInfo();
}).then(({ length }) => {
+ this.maybeFileSize = length;
return this._parseFileSize(length);
}).then(fileSize => {
+ if (fileSize === this.fieldData['fileSize']) {
+ return;
+ }
let data = (0, _ui_utils.cloneObj)(this.fieldData);
data['fileSize'] = fileSize;
freezeFieldData(data);
this._updateUI();
});
});
}
close() {
@@ -4209,26 +4412,27 @@ class PDFDocumentProperties {
if (!pdfDocument) {
return;
}
this.pdfDocument = pdfDocument;
this.url = url;
this._dataAvailableCapability.resolve();
}
setFileSize(fileSize) {
- if (typeof fileSize === 'number' && fileSize > 0) {
+ if (Number.isInteger(fileSize) && fileSize > 0) {
this.maybeFileSize = fileSize;
}
}
_reset() {
this.pdfDocument = null;
this.url = null;
this.maybeFileSize = 0;
delete this.fieldData;
this._dataAvailableCapability = (0, _pdfjsLib.createPromiseCapability)();
+ this._currentPageNumber = 1;
}
_updateUI(reset = false) {
if (reset || !this.fieldData) {
for (let id in this.fields) {
this.fields[id].textContent = DEFAULT_FIELD_CONTENT;
}
return;
}
@@ -4250,16 +4454,37 @@ class PDFDocumentProperties {
size_b: fileSize.toLocaleString()
}, '{{size_kb}} KB ({{size_b}} bytes)');
}
return this.l10n.get('document_properties_mb', {
size_mb: (+(kb / 1024).toPrecision(3)).toLocaleString(),
size_b: fileSize.toLocaleString()
}, '{{size_mb}} MB ({{size_b}} bytes)');
}
+ _parsePageSize(pageSizeInches) {
+ if (!pageSizeInches) {
+ return Promise.resolve({
+ inch: undefined,
+ mm: undefined
+ });
+ }
+ const { width, height } = pageSizeInches;
+ return Promise.all([this.l10n.get('document_properties_page_size_in_2', {
+ width: (Math.round(width * 100) / 100).toLocaleString(),
+ height: (Math.round(height * 100) / 100).toLocaleString()
+ }, '{{width}} × {{height}} in'), this.l10n.get('document_properties_page_size_mm_2', {
+ width: (Math.round(width * 25.4 * 10) / 10).toLocaleString(),
+ height: (Math.round(height * 25.4 * 10) / 10).toLocaleString()
+ }, '{{width}} × {{height}} mm')]).then(sizes => {
+ return {
+ inch: sizes[0],
+ mm: sizes[1]
+ };
+ });
+ }
_parseDate(inputDate) {
if (!inputDate) {
return;
}
let dateToParse = inputDate;
if (dateToParse.substring(0, 2) === 'D:') {
dateToParse = dateToParse.substring(2);
}
@@ -4286,28 +4511,28 @@ class PDFDocumentProperties {
date: dateString,
time: timeString
}, '{{date}}, {{time}}');
}
}
exports.PDFDocumentProperties = PDFDocumentProperties;
/***/ }),
-/* 16 */
+/* 17 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.PDFFindBar = undefined;
-var _pdf_find_controller = __webpack_require__(7);
+var _pdf_find_controller = __webpack_require__(9);
var _ui_utils = __webpack_require__(0);
class PDFFindBar {
constructor(options, l10n = _ui_utils.NullL10n) {
this.opened = false;
this.bar = options.bar || null;
this.toggleButton = options.toggleButton || null;
@@ -4454,17 +4679,17 @@ class PDFFindBar {
if (findbarHeight > inputContainerHeight) {
this.bar.classList.add('wrapContainers');
}
}
}
exports.PDFFindBar = PDFFindBar;
/***/ }),
-/* 17 */
+/* 18 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
@@ -4831,17 +5056,17 @@ function isDestArraysEqual(firstDest, se
}
return true;
}
exports.PDFHistory = PDFHistory;
exports.isDestHashesEqual = isDestHashesEqual;
exports.isDestArraysEqual = isDestArraysEqual;
/***/ }),
-/* 18 */
+/* 19 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
@@ -4874,20 +5099,20 @@ class PDFOutlineViewer {
if (url) {
(0, _pdfjsLib.addLinkAttributes)(element, {
url,
target: newWindow ? _pdfjsLib.LinkTarget.BLANK : linkService.externalLinkTarget,
rel: linkService.externalLinkRel
});
return;
}
- element.href = this.linkService.getDestinationHash(dest);
+ element.href = linkService.getDestinationHash(dest);
element.onclick = () => {
if (dest) {
- this.linkService.navigateTo(dest);
+ linkService.navigateTo(dest);
}
return false;
};
}
_setStyles(element, { bold, italic }) {
let styleStr = '';
if (bold) {
styleStr += 'font-weight: bold;';
@@ -4972,17 +5197,17 @@ class PDFOutlineViewer {
}
this.container.appendChild(fragment);
this._dispatchEvent(outlineCount);
}
}
exports.PDFOutlineViewer = PDFOutlineViewer;
/***/ }),
-/* 19 */
+/* 20 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
@@ -5289,17 +5514,17 @@ class PDFPresentationMode {
window.removeEventListener('fullscreenchange', this.fullscreenChangeBind);
window.removeEventListener('mozfullscreenchange', this.fullscreenChangeBind);
delete this.fullscreenChangeBind;
}
}
exports.PDFPresentationMode = PDFPresentationMode;
/***/ }),
-/* 20 */
+/* 21 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
@@ -5409,30 +5634,30 @@ class PDFSidebarResizer {
}
}
});
}
}
exports.PDFSidebarResizer = PDFSidebarResizer;
/***/ }),
-/* 21 */
+/* 22 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.PDFThumbnailViewer = undefined;
var _ui_utils = __webpack_require__(0);
-var _pdf_thumbnail_view = __webpack_require__(22);
+var _pdf_thumbnail_view = __webpack_require__(23);
const THUMBNAIL_SCROLL_MARGIN = -19;
const THUMBNAIL_SELECTED_CLASS = 'selected';
class PDFThumbnailViewer {
constructor({ container, linkService, renderingQueue, l10n = _ui_utils.NullL10n }) {
this.container = container;
this.linkService = linkService;
this.renderingQueue = renderingQueue;
@@ -5598,17 +5823,17 @@ class PDFThumbnailViewer {
return true;
}
return false;
}
}
exports.PDFThumbnailViewer = PDFThumbnailViewer;
/***/ }),
-/* 22 */
+/* 23 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
@@ -5906,30 +6131,30 @@ class PDFThumbnailView {
}
static cleanup() {
TempImageFactory.destroyCanvas();
}
}
exports.PDFThumbnailView = PDFThumbnailView;
/***/ }),
-/* 23 */
+/* 24 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.PDFViewer = undefined;
var _ui_utils = __webpack_require__(0);
-var _base_viewer = __webpack_require__(24);
+var _base_viewer = __webpack_require__(25);
var _pdfjsLib = __webpack_require__(1);
class PDFViewer extends _base_viewer.BaseViewer {
get _setDocumentViewerElement() {
return (0, _pdfjsLib.shadow)(this, '_setDocumentViewerElement', this.viewer);
}
_scrollIntoView({ pageDiv, pageSpot = null }) {
@@ -5982,42 +6207,42 @@ class PDFViewer extends _base_viewer.Bas
source: this,
location: this._location
});
}
}
exports.PDFViewer = PDFViewer;
/***/ }),
-/* 24 */
+/* 25 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.BaseViewer = undefined;
-var _pdfjsLib = __webpack_require__(1);
-
var _ui_utils = __webpack_require__(0);
var _pdf_rendering_queue = __webpack_require__(3);
-var _annotation_layer_builder = __webpack_require__(25);
+var _annotation_layer_builder = __webpack_require__(26);
+
+var _pdfjsLib = __webpack_require__(1);
var _dom_events = __webpack_require__(2);
-var _pdf_page_view = __webpack_require__(26);
+var _pdf_page_view = __webpack_require__(27);
var _pdf_link_service = __webpack_require__(5);
-var _text_layer_builder = __webpack_require__(27);
+var _text_layer_builder = __webpack_require__(28);
const DEFAULT_CACHE_SIZE = 10;
function PDFPageViewBuffer(size) {
let data = [];
this.push = function (view) {
let i = data.indexOf(view);
if (i >= 0) {
data.splice(i, 1);
@@ -6254,17 +6479,17 @@ class BaseViewer {
useOnlyCssZoom: this.useOnlyCssZoom,
maxCanvasPixels: this.maxCanvasPixels,
l10n: this.l10n
});
bindOnAfterAndBeforeDraw(pageView);
this._pages.push(pageView);
}
onePageRenderedCapability.promise.then(() => {
- if (_pdfjsLib.PDFJS.disableAutoFetch) {
+ if (pdfDocument.loadingParams['disableAutoFetch']) {
pagesCapability.resolve();
return;
}
let getPagesLeft = pagesCount;
for (let pageNum = 1; pageNum <= pagesCount; ++pageNum) {
pdfDocument.getPage(pageNum).then(pdfPage => {
let pageView = this._pages[pageNum - 1];
if (!pageView.pdfPage) {
@@ -6669,17 +6894,17 @@ class BaseViewer {
rotation: (size.rotation + 90) % 360
};
});
}
}
exports.BaseViewer = BaseViewer;
/***/ }),
-/* 25 */
+/* 26 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
@@ -6754,17 +6979,17 @@ class DefaultAnnotationLayerFactory {
l10n
});
}
}
exports.AnnotationLayerBuilder = AnnotationLayerBuilder;
exports.DefaultAnnotationLayerFactory = DefaultAnnotationLayerFactory;
/***/ }),
-/* 26 */
+/* 27 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
@@ -7211,17 +7436,17 @@ class PDFPageView {
} else {
this.div.removeAttribute('data-page-label');
}
}
}
exports.PDFPageView = PDFPageView;
/***/ }),
-/* 27 */
+/* 28 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
@@ -7480,17 +7705,17 @@ class DefaultTextLayerFactory {
enhanceTextSelection
});
}
}
exports.TextLayerBuilder = TextLayerBuilder;
exports.DefaultTextLayerFactory = DefaultTextLayerFactory;
/***/ }),
-/* 28 */
+/* 29 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
@@ -7660,17 +7885,17 @@ class SecondaryToolbar {
}
this.toolbarButtonContainer.setAttribute('style', 'max-height: ' + (this.containerHeight - _ui_utils.SCROLLBAR_PADDING) + 'px;');
this.previousContainerHeight = this.containerHeight;
}
}
exports.SecondaryToolbar = SecondaryToolbar;
/***/ }),
-/* 29 */
+/* 30 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
@@ -7845,17 +8070,17 @@ class Toolbar {
container.setAttribute('style', 'min-width: ' + width + 'px; ' + 'max-width: ' + width + 'px;');
}
});
}
}
exports.Toolbar = Toolbar;
/***/ }),
-/* 30 */
+/* 31 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
@@ -7928,32 +8153,32 @@ class ViewHistory {
}
return values;
});
}
}
exports.ViewHistory = ViewHistory;
/***/ }),
-/* 31 */
+/* 32 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.FirefoxCom = exports.DownloadManager = undefined;
-__webpack_require__(32);
+__webpack_require__(33);
var _pdfjsLib = __webpack_require__(1);
-var _preferences = __webpack_require__(33);
+var _preferences = __webpack_require__(34);
var _app = __webpack_require__(4);
;
let FirefoxCom = function FirefoxComClosure() {
return {
requestSync(action, data) {
let request = document.createTextNode('');
@@ -7988,24 +8213,27 @@ let FirefoxCom = function FirefoxComClos
sync: false,
responseExpected: !!callback
});
return request.dispatchEvent(sender);
}
};
}();
class DownloadManager {
+ constructor(options) {
+ this.disableCreateObjectURL = false;
+ }
downloadUrl(url, filename) {
FirefoxCom.request('download', {
originalUrl: url,
filename
});
}
downloadData(data, filename, contentType) {
- let blobUrl = (0, _pdfjsLib.createObjectURL)(data, contentType, false);
+ let blobUrl = (0, _pdfjsLib.createObjectURL)(data, contentType);
FirefoxCom.request('download', {
blobUrl,
originalUrl: blobUrl,
filename,
isAttachment: true
});
}
download(blob, url, filename) {
@@ -8130,18 +8358,18 @@ FirefoxComDataRangeTransport.prototype.a
FirefoxCom.requestSync('initPassiveLoading', null);
},
fallback(data, callback) {
FirefoxCom.request('fallback', data, callback);
},
reportTelemetry(data) {
FirefoxCom.request('reportTelemetry', JSON.stringify(data));
},
- createDownloadManager() {
- return new DownloadManager();
+ createDownloadManager(options) {
+ return new DownloadManager(options);
},
createPreferences() {
return new FirefoxPreferences();
},
createL10n(options) {
let mozL10n = document.mozL10n;
return new MozL10n(mozL10n);
},
@@ -8169,17 +8397,17 @@ document.mozL10n.setExternalLocalizerSer
getStrings(key) {
return FirefoxCom.requestSync('getStrings', key);
}
});
exports.DownloadManager = DownloadManager;
exports.FirefoxCom = FirefoxCom;
/***/ }),
-/* 32 */
+/* 33 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
(function (window) {
var gLanguage = "";
var gExternalLocalizerServices = null;
@@ -8267,17 +8495,17 @@ exports.FirefoxCom = FirefoxCom;
gLanguage = gExternalLocalizerServices.getLocale();
gReadyState = "complete";
},
translate: translateFragment
};
})(undefined);
/***/ }),
-/* 33 */
+/* 34 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
@@ -8390,17 +8618,17 @@ class BasePreferences {
}
return defaultValue;
});
}
}
exports.BasePreferences = BasePreferences;
/***/ }),
-/* 34 */
+/* 35 */
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});