pdfjs-dist 2.1.266 → 2.5.207
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of pdfjs-dist might be problematic. Click here for more details.
- package/CODE_OF_CONDUCT.md +15 -0
- package/README.md +4 -0
- package/bower.json +1 -1
- package/build/pdf.js +8382 -18492
- package/build/pdf.js.map +1 -1
- package/build/pdf.min.js +22 -1
- package/build/pdf.worker.entry.js +5 -3
- package/build/pdf.worker.js +20417 -29816
- package/build/pdf.worker.js.map +1 -1
- package/build/pdf.worker.min.js +22 -1
- package/es5/build/pdf.js +25688 -0
- package/es5/build/pdf.js.map +1 -0
- package/{lib/shared/global_scope.js → es5/build/pdf.worker.entry.js} +5 -10
- package/es5/build/pdf.worker.js +58239 -0
- package/es5/build/pdf.worker.js.map +1 -0
- package/es5/web/images/annotation-check.svg +11 -0
- package/es5/web/images/annotation-comment.svg +16 -0
- package/es5/web/images/annotation-help.svg +26 -0
- package/es5/web/images/annotation-insert.svg +10 -0
- package/es5/web/images/annotation-key.svg +11 -0
- package/es5/web/images/annotation-newparagraph.svg +11 -0
- package/es5/web/images/annotation-noicon.svg +7 -0
- package/es5/web/images/annotation-note.svg +42 -0
- package/es5/web/images/annotation-paragraph.svg +16 -0
- package/es5/web/images/loading-icon.gif +0 -0
- package/es5/web/images/shadow.png +0 -0
- package/es5/web/images/texture.png +0 -0
- package/es5/web/pdf_viewer.css +403 -0
- package/es5/web/pdf_viewer.js +7742 -0
- package/es5/web/pdf_viewer.js.map +1 -0
- package/image_decoders/pdf.image_decoders.js +1475 -4897
- package/image_decoders/pdf.image_decoders.js.map +1 -1
- package/image_decoders/pdf.image_decoders.min.js +22 -1
- package/lib/README.md +7 -0
- package/lib/core/annotation.js +750 -899
- package/lib/core/arithmetic_decoder.js +81 -97
- package/lib/core/bidi.js +54 -46
- package/lib/core/ccitt.js +88 -81
- package/lib/core/ccitt_stream.js +15 -14
- package/lib/core/cff_parser.js +235 -183
- package/lib/core/charsets.js +4 -4
- package/lib/core/chunked_stream.js +447 -542
- package/lib/core/cmap.js +222 -264
- package/lib/core/colorspace.js +699 -863
- package/lib/core/core_utils.js +152 -0
- package/lib/core/crypto.js +379 -437
- package/lib/core/document.js +573 -660
- package/lib/core/encodings.js +15 -15
- package/lib/core/evaluator.js +1103 -868
- package/lib/core/font_renderer.js +135 -178
- package/lib/core/fonts.js +570 -491
- package/lib/core/function.js +291 -288
- package/lib/core/glyphlist.js +4527 -4526
- package/lib/core/image.js +145 -149
- package/lib/core/image_utils.js +170 -0
- package/lib/core/jbig2.js +325 -316
- package/lib/core/jbig2_stream.js +18 -17
- package/lib/core/jpeg_stream.js +21 -26
- package/lib/core/jpg.js +284 -232
- package/lib/core/jpx.js +161 -143
- package/lib/core/jpx_stream.js +28 -28
- package/lib/core/metrics.js +2929 -2929
- package/lib/core/murmurhash3.js +90 -101
- package/lib/core/obj.js +1183 -1157
- package/lib/core/operator_list.js +99 -67
- package/lib/core/parser.js +972 -911
- package/lib/core/pattern.js +87 -70
- package/lib/core/pdf_manager.js +150 -315
- package/lib/core/primitives.js +83 -56
- package/lib/core/ps_parser.js +175 -214
- package/lib/core/standard_fonts.js +237 -236
- package/lib/core/stream.js +94 -74
- package/lib/core/type1_parser.js +87 -69
- package/lib/core/unicode.js +1654 -1654
- package/lib/core/worker.js +193 -390
- package/lib/core/worker_stream.js +168 -0
- package/lib/display/annotation_layer.js +741 -972
- package/lib/display/api.js +1500 -1791
- package/lib/display/api_compatibility.js +12 -17
- package/lib/display/canvas.js +165 -165
- package/lib/display/content_disposition.js +40 -59
- package/lib/display/display_utils.js +515 -0
- package/lib/display/fetch_stream.js +183 -298
- package/lib/display/font_loader.js +273 -413
- package/lib/display/metadata.js +86 -98
- package/lib/display/network.js +266 -359
- package/lib/display/network_utils.js +25 -18
- package/lib/display/node_stream.js +285 -458
- package/lib/display/pattern_helper.js +113 -65
- package/lib/display/svg.js +1166 -901
- package/lib/display/text_layer.js +156 -132
- package/lib/display/transport_stream.js +262 -278
- package/lib/display/webgl.js +70 -83
- package/lib/display/worker_options.js +3 -3
- package/lib/display/xml_parser.js +303 -392
- package/lib/examples/node/domstubs.js +40 -37
- package/lib/pdf.js +226 -59
- package/lib/pdf.worker.js +14 -6
- package/lib/shared/compatibility.js +3 -246
- package/lib/shared/is_node.js +7 -6
- package/lib/shared/message_handler.js +327 -332
- package/lib/shared/util.js +266 -416
- package/lib/test/unit/annotation_spec.js +1555 -701
- package/lib/test/unit/api_spec.js +802 -604
- package/lib/test/unit/bidi_spec.js +7 -7
- package/lib/test/unit/cff_parser_spec.js +84 -69
- package/lib/test/unit/clitests_helper.js +7 -9
- package/lib/test/unit/cmap_spec.js +74 -76
- package/lib/test/unit/colorspace_spec.js +166 -161
- package/lib/test/unit/core_utils_spec.js +211 -0
- package/lib/test/unit/crypto_spec.js +181 -181
- package/lib/test/unit/custom_spec.js +20 -22
- package/lib/test/unit/display_svg_spec.js +34 -39
- package/lib/test/unit/display_utils_spec.js +263 -0
- package/lib/test/unit/document_spec.js +16 -21
- package/lib/test/unit/encodings_spec.js +12 -34
- package/lib/test/unit/evaluator_spec.js +83 -83
- package/lib/test/unit/fetch_stream_spec.js +111 -0
- package/lib/test/unit/function_spec.js +206 -204
- package/lib/test/unit/jasmine-boot.js +46 -30
- package/lib/test/unit/message_handler_spec.js +173 -159
- package/lib/test/unit/metadata_spec.js +69 -69
- package/lib/test/unit/murmurhash3_spec.js +12 -12
- package/lib/test/unit/network_spec.js +13 -61
- package/lib/test/unit/network_utils_spec.js +183 -119
- package/lib/test/unit/node_stream_spec.js +78 -92
- package/lib/test/unit/parser_spec.js +172 -114
- package/lib/test/unit/pdf_find_controller_spec.js +55 -86
- package/lib/test/unit/pdf_find_utils_spec.js +32 -32
- package/lib/test/unit/pdf_history_spec.js +32 -32
- package/lib/test/unit/primitives_spec.js +140 -125
- package/lib/test/unit/stream_spec.js +16 -14
- package/lib/test/unit/test_utils.js +131 -143
- package/lib/test/unit/testreporter.js +19 -19
- package/lib/test/unit/type1_parser_spec.js +42 -42
- package/lib/test/unit/ui_utils_spec.js +297 -459
- package/lib/test/unit/unicode_spec.js +38 -38
- package/lib/test/unit/util_spec.js +121 -305
- package/lib/web/annotation_layer_builder.js +66 -103
- package/lib/web/app.js +1328 -1214
- package/lib/web/app_options.js +105 -107
- package/lib/web/base_viewer.js +824 -838
- package/lib/web/chromecom.js +165 -252
- package/lib/web/debugger.js +149 -205
- package/lib/web/download_manager.js +39 -55
- package/lib/web/firefox_print_service.js +37 -27
- package/lib/web/firefoxcom.js +212 -363
- package/lib/web/genericcom.js +26 -108
- package/lib/web/genericl10n.js +24 -153
- package/lib/web/grab_to_pan.js +32 -30
- package/lib/web/interfaces.js +80 -254
- package/lib/web/overlay_manager.js +70 -246
- package/lib/web/password_prompt.js +38 -64
- package/lib/web/pdf_attachment_viewer.js +113 -131
- package/lib/web/pdf_cursor_tools.js +75 -102
- package/lib/web/pdf_document_properties.js +221 -306
- package/lib/web/pdf_find_bar.js +136 -170
- package/lib/web/pdf_find_controller.js +491 -548
- package/lib/web/pdf_find_utils.js +13 -13
- package/lib/web/pdf_history.js +397 -406
- package/lib/web/pdf_link_service.js +304 -348
- package/lib/web/pdf_outline_viewer.js +140 -175
- package/lib/web/pdf_page_view.js +452 -523
- package/lib/web/pdf_presentation_mode.js +308 -357
- package/lib/web/pdf_print_service.js +90 -104
- package/lib/web/pdf_rendering_queue.js +84 -108
- package/lib/web/pdf_sidebar.js +276 -306
- package/lib/web/pdf_sidebar_resizer.js +92 -119
- package/lib/web/pdf_single_page_viewer.js +77 -126
- package/lib/web/pdf_thumbnail_view.js +276 -297
- package/lib/web/pdf_thumbnail_viewer.js +186 -206
- package/lib/web/pdf_viewer.component.js +20 -21
- package/lib/web/pdf_viewer.js +55 -115
- package/lib/web/preferences.js +82 -286
- package/lib/web/secondary_toolbar.js +164 -196
- package/lib/web/text_layer_builder.js +282 -339
- package/lib/web/toolbar.js +217 -210
- package/lib/web/ui_utils.js +267 -420
- package/lib/web/view_history.js +52 -226
- package/lib/web/viewer_compatibility.js +21 -6
- package/package.json +2 -9
- package/web/pdf_viewer.css +35 -25
- package/web/pdf_viewer.js +3489 -4855
- package/web/pdf_viewer.js.map +1 -1
- package/webpack.js +14 -5
- package/external/streams/streams-lib.js +0 -3962
- package/external/url/url-lib.js +0 -627
- package/lib/display/dom_utils.js +0 -494
- package/lib/shared/streams_polyfill.js +0 -43
- package/lib/shared/url_polyfill.js +0 -56
- package/lib/test/unit/dom_utils_spec.js +0 -89
package/lib/display/api.js
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
* @licstart The following is the entire license notice for the
|
3
3
|
* Javascript code in this page
|
4
4
|
*
|
5
|
-
* Copyright
|
5
|
+
* Copyright 2020 Mozilla Foundation
|
6
6
|
*
|
7
7
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
8
8
|
* you may not use this file except in compliance with the License.
|
@@ -28,127 +28,41 @@ exports.getDocument = getDocument;
|
|
28
28
|
exports.setPDFNetworkStreamFactory = setPDFNetworkStreamFactory;
|
29
29
|
exports.build = exports.version = exports.PDFPageProxy = exports.PDFDocumentProxy = exports.PDFWorker = exports.PDFDataRangeTransport = exports.LoopbackPort = void 0;
|
30
30
|
|
31
|
-
var
|
31
|
+
var _util = require("../shared/util.js");
|
32
32
|
|
33
|
-
var
|
33
|
+
var _display_utils = require("./display_utils.js");
|
34
34
|
|
35
|
-
var
|
35
|
+
var _font_loader = require("./font_loader.js");
|
36
36
|
|
37
|
-
var
|
37
|
+
var _api_compatibility = require("./api_compatibility.js");
|
38
38
|
|
39
|
-
var
|
39
|
+
var _canvas = require("./canvas.js");
|
40
40
|
|
41
|
-
var
|
41
|
+
var _worker_options = require("./worker_options.js");
|
42
42
|
|
43
|
-
var
|
43
|
+
var _is_node = require("../shared/is_node.js");
|
44
44
|
|
45
|
-
var
|
45
|
+
var _message_handler = require("../shared/message_handler.js");
|
46
46
|
|
47
|
-
var
|
47
|
+
var _metadata = require("./metadata.js");
|
48
48
|
|
49
|
-
var
|
49
|
+
var _transport_stream = require("./transport_stream.js");
|
50
50
|
|
51
|
-
var
|
51
|
+
var _webgl = require("./webgl.js");
|
52
52
|
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
|
58
|
-
|
59
|
-
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
|
60
|
-
|
61
|
-
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }
|
62
|
-
|
63
|
-
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); }
|
64
|
-
|
65
|
-
function _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
|
66
|
-
|
67
|
-
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
68
|
-
|
69
|
-
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }
|
70
|
-
|
71
|
-
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); }
|
72
|
-
|
73
|
-
function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); }
|
74
|
-
|
75
|
-
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }
|
76
|
-
|
77
|
-
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
78
|
-
|
79
|
-
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
|
80
|
-
|
81
|
-
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
|
82
|
-
|
83
|
-
function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
|
84
|
-
|
85
|
-
var DEFAULT_RANGE_CHUNK_SIZE = 65536;
|
86
|
-
var isWorkerDisabled = false;
|
87
|
-
var fallbackWorkerSrc;
|
88
|
-
var fakeWorkerFilesLoader = null;
|
89
|
-
{
|
90
|
-
var useRequireEnsure = false;
|
91
|
-
|
92
|
-
if (typeof window === 'undefined') {
|
93
|
-
isWorkerDisabled = true;
|
94
|
-
|
95
|
-
if (typeof require.ensure === 'undefined') {
|
96
|
-
require.ensure = require('node-ensure');
|
97
|
-
}
|
98
|
-
|
99
|
-
useRequireEnsure = true;
|
100
|
-
} else if (typeof require !== 'undefined' && typeof require.ensure === 'function') {
|
101
|
-
useRequireEnsure = true;
|
102
|
-
}
|
103
|
-
|
104
|
-
if (typeof requirejs !== 'undefined' && requirejs.toUrl) {
|
105
|
-
fallbackWorkerSrc = requirejs.toUrl('pdfjs-dist/build/pdf.worker.js');
|
106
|
-
}
|
107
|
-
|
108
|
-
var dynamicLoaderSupported = typeof requirejs !== 'undefined' && requirejs.load;
|
109
|
-
fakeWorkerFilesLoader = useRequireEnsure ? function () {
|
110
|
-
return new Promise(function (resolve, reject) {
|
111
|
-
require.ensure([], function () {
|
112
|
-
try {
|
113
|
-
var worker;
|
114
|
-
worker = require('../pdf.worker.js');
|
115
|
-
resolve(worker.WorkerMessageHandler);
|
116
|
-
} catch (ex) {
|
117
|
-
reject(ex);
|
118
|
-
}
|
119
|
-
}, reject, 'pdfjsWorker');
|
120
|
-
});
|
121
|
-
} : dynamicLoaderSupported ? function () {
|
122
|
-
return new Promise(function (resolve, reject) {
|
123
|
-
requirejs(['pdfjs-dist/build/pdf.worker'], function (worker) {
|
124
|
-
try {
|
125
|
-
resolve(worker.WorkerMessageHandler);
|
126
|
-
} catch (ex) {
|
127
|
-
reject(ex);
|
128
|
-
}
|
129
|
-
}, reject);
|
130
|
-
});
|
131
|
-
} : null;
|
132
|
-
|
133
|
-
if (!fallbackWorkerSrc && (typeof document === "undefined" ? "undefined" : _typeof(document)) === 'object' && 'currentScript' in document) {
|
134
|
-
var pdfjsFilePath = document.currentScript && document.currentScript.src;
|
135
|
-
|
136
|
-
if (pdfjsFilePath) {
|
137
|
-
fallbackWorkerSrc = pdfjsFilePath.replace(/(\.(?:min\.)?js)(\?.*)?$/i, '.worker$1$2');
|
138
|
-
}
|
139
|
-
}
|
140
|
-
}
|
141
|
-
var createPDFNetworkStream;
|
53
|
+
const DEFAULT_RANGE_CHUNK_SIZE = 65536;
|
54
|
+
const RENDERING_CANCELLED_TIMEOUT = 100;
|
55
|
+
let createPDFNetworkStream;
|
142
56
|
|
143
57
|
function setPDFNetworkStreamFactory(pdfNetworkStreamFactory) {
|
144
58
|
createPDFNetworkStream = pdfNetworkStreamFactory;
|
145
59
|
}
|
146
60
|
|
147
61
|
function getDocument(src) {
|
148
|
-
|
149
|
-
|
62
|
+
const task = new PDFDocumentLoadingTask();
|
63
|
+
let source;
|
150
64
|
|
151
|
-
if (typeof src ===
|
65
|
+
if (typeof src === "string") {
|
152
66
|
source = {
|
153
67
|
url: src
|
154
68
|
};
|
@@ -161,42 +75,42 @@ function getDocument(src) {
|
|
161
75
|
range: src
|
162
76
|
};
|
163
77
|
} else {
|
164
|
-
if (
|
165
|
-
throw new Error(
|
78
|
+
if (typeof src !== "object") {
|
79
|
+
throw new Error("Invalid parameter in getDocument, " + "need either Uint8Array, string or a parameter object");
|
166
80
|
}
|
167
81
|
|
168
82
|
if (!src.url && !src.data && !src.range) {
|
169
|
-
throw new Error(
|
83
|
+
throw new Error("Invalid parameter object: need either .data, .range or .url");
|
170
84
|
}
|
171
85
|
|
172
86
|
source = src;
|
173
87
|
}
|
174
88
|
|
175
|
-
|
176
|
-
|
89
|
+
const params = Object.create(null);
|
90
|
+
let rangeTransport = null,
|
177
91
|
worker = null;
|
178
92
|
|
179
|
-
for (
|
180
|
-
if (key ===
|
181
|
-
params[key] = new
|
93
|
+
for (const key in source) {
|
94
|
+
if (key === "url" && typeof window !== "undefined") {
|
95
|
+
params[key] = new URL(source[key], window.location).href;
|
182
96
|
continue;
|
183
|
-
} else if (key ===
|
97
|
+
} else if (key === "range") {
|
184
98
|
rangeTransport = source[key];
|
185
99
|
continue;
|
186
|
-
} else if (key ===
|
100
|
+
} else if (key === "worker") {
|
187
101
|
worker = source[key];
|
188
102
|
continue;
|
189
|
-
} else if (key ===
|
190
|
-
|
103
|
+
} else if (key === "data" && !(source[key] instanceof Uint8Array)) {
|
104
|
+
const pdfBytes = source[key];
|
191
105
|
|
192
|
-
if (typeof pdfBytes ===
|
106
|
+
if (typeof pdfBytes === "string") {
|
193
107
|
params[key] = (0, _util.stringToBytes)(pdfBytes);
|
194
|
-
} else if (
|
108
|
+
} else if (typeof pdfBytes === "object" && pdfBytes !== null && !isNaN(pdfBytes.length)) {
|
195
109
|
params[key] = new Uint8Array(pdfBytes);
|
196
110
|
} else if ((0, _util.isArrayBuffer)(pdfBytes)) {
|
197
111
|
params[key] = new Uint8Array(pdfBytes);
|
198
112
|
} else {
|
199
|
-
throw new Error(
|
113
|
+
throw new Error("Invalid PDF binary data: either typed array, " + "string or array-like object is expected in the " + "data property.");
|
200
114
|
}
|
201
115
|
|
202
116
|
continue;
|
@@ -206,48 +120,39 @@ function getDocument(src) {
|
|
206
120
|
}
|
207
121
|
|
208
122
|
params.rangeChunkSize = params.rangeChunkSize || DEFAULT_RANGE_CHUNK_SIZE;
|
209
|
-
params.CMapReaderFactory = params.CMapReaderFactory ||
|
123
|
+
params.CMapReaderFactory = params.CMapReaderFactory || _display_utils.DOMCMapReaderFactory;
|
210
124
|
params.ignoreErrors = params.stopAtErrors !== true;
|
125
|
+
params.fontExtraProperties = params.fontExtraProperties === true;
|
211
126
|
params.pdfBug = params.pdfBug === true;
|
212
|
-
var NativeImageDecoderValues = Object.values(_util.NativeImageDecoding);
|
213
|
-
|
214
|
-
if (params.nativeImageDecoderSupport === undefined || !NativeImageDecoderValues.includes(params.nativeImageDecoderSupport)) {
|
215
|
-
params.nativeImageDecoderSupport = _api_compatibility.apiCompatibilityParams.nativeImageDecoderSupport || _util.NativeImageDecoding.DECODE;
|
216
|
-
}
|
217
127
|
|
218
128
|
if (!Number.isInteger(params.maxImageSize)) {
|
219
129
|
params.maxImageSize = -1;
|
220
130
|
}
|
221
131
|
|
222
|
-
if (typeof params.isEvalSupported !==
|
132
|
+
if (typeof params.isEvalSupported !== "boolean") {
|
223
133
|
params.isEvalSupported = true;
|
224
134
|
}
|
225
135
|
|
226
|
-
if (typeof params.disableFontFace !==
|
136
|
+
if (typeof params.disableFontFace !== "boolean") {
|
227
137
|
params.disableFontFace = _api_compatibility.apiCompatibilityParams.disableFontFace || false;
|
228
138
|
}
|
229
139
|
|
230
|
-
if (typeof params.disableRange !==
|
140
|
+
if (typeof params.disableRange !== "boolean") {
|
231
141
|
params.disableRange = false;
|
232
142
|
}
|
233
143
|
|
234
|
-
if (typeof params.disableStream !==
|
144
|
+
if (typeof params.disableStream !== "boolean") {
|
235
145
|
params.disableStream = false;
|
236
146
|
}
|
237
147
|
|
238
|
-
if (typeof params.disableAutoFetch !==
|
148
|
+
if (typeof params.disableAutoFetch !== "boolean") {
|
239
149
|
params.disableAutoFetch = false;
|
240
150
|
}
|
241
151
|
|
242
|
-
if (typeof params.disableCreateObjectURL !== 'boolean') {
|
243
|
-
params.disableCreateObjectURL = _api_compatibility.apiCompatibilityParams.disableCreateObjectURL || false;
|
244
|
-
}
|
245
|
-
|
246
152
|
(0, _util.setVerbosityLevel)(params.verbosity);
|
247
153
|
|
248
154
|
if (!worker) {
|
249
|
-
|
250
|
-
postMessageTransfers: params.postMessageTransfers,
|
155
|
+
const workerParams = {
|
251
156
|
verbosity: params.verbosity,
|
252
157
|
port: _worker_options.GlobalWorkerOptions.workerPort
|
253
158
|
};
|
@@ -255,23 +160,22 @@ function getDocument(src) {
|
|
255
160
|
task._worker = worker;
|
256
161
|
}
|
257
162
|
|
258
|
-
|
163
|
+
const docId = task.docId;
|
259
164
|
worker.promise.then(function () {
|
260
165
|
if (task.destroyed) {
|
261
|
-
throw new Error(
|
166
|
+
throw new Error("Loading aborted");
|
262
167
|
}
|
263
168
|
|
264
|
-
|
265
|
-
if (task.destroyed) {
|
266
|
-
throw new Error('Loading aborted');
|
267
|
-
}
|
169
|
+
const workerIdPromise = _fetchDocument(worker, params, rangeTransport, docId);
|
268
170
|
|
269
|
-
|
171
|
+
const networkStreamPromise = new Promise(function (resolve) {
|
172
|
+
let networkStream;
|
270
173
|
|
271
174
|
if (rangeTransport) {
|
272
175
|
networkStream = new _transport_stream.PDFDataTransportStream({
|
273
176
|
length: params.length,
|
274
177
|
initialData: params.initialData,
|
178
|
+
progressiveDone: params.progressiveDone,
|
275
179
|
disableRange: params.disableRange,
|
276
180
|
disableStream: params.disableStream
|
277
181
|
}, rangeTransport);
|
@@ -287,11 +191,18 @@ function getDocument(src) {
|
|
287
191
|
});
|
288
192
|
}
|
289
193
|
|
290
|
-
|
194
|
+
resolve(networkStream);
|
195
|
+
});
|
196
|
+
return Promise.all([workerIdPromise, networkStreamPromise]).then(function ([workerId, networkStream]) {
|
197
|
+
if (task.destroyed) {
|
198
|
+
throw new Error("Loading aborted");
|
199
|
+
}
|
200
|
+
|
201
|
+
const messageHandler = new _message_handler.MessageHandler(docId, workerId, worker.port);
|
291
202
|
messageHandler.postMessageTransfers = worker.postMessageTransfers;
|
292
|
-
|
203
|
+
const transport = new WorkerTransport(messageHandler, task, networkStream, params);
|
293
204
|
task._transport = transport;
|
294
|
-
messageHandler.send(
|
205
|
+
messageHandler.send("Ready", null);
|
295
206
|
});
|
296
207
|
}).catch(task._capability.reject);
|
297
208
|
return task;
|
@@ -299,17 +210,18 @@ function getDocument(src) {
|
|
299
210
|
|
300
211
|
function _fetchDocument(worker, source, pdfDataRangeTransport, docId) {
|
301
212
|
if (worker.destroyed) {
|
302
|
-
return Promise.reject(new Error(
|
213
|
+
return Promise.reject(new Error("Worker was destroyed"));
|
303
214
|
}
|
304
215
|
|
305
216
|
if (pdfDataRangeTransport) {
|
306
217
|
source.length = pdfDataRangeTransport.length;
|
307
218
|
source.initialData = pdfDataRangeTransport.initialData;
|
219
|
+
source.progressiveDone = pdfDataRangeTransport.progressiveDone;
|
308
220
|
}
|
309
221
|
|
310
|
-
return worker.messageHandler.sendWithPromise(
|
311
|
-
docId
|
312
|
-
apiVersion: '2.
|
222
|
+
return worker.messageHandler.sendWithPromise("GetDocRequest", {
|
223
|
+
docId,
|
224
|
+
apiVersion: '2.5.207',
|
313
225
|
source: {
|
314
226
|
data: source.data,
|
315
227
|
url: source.url,
|
@@ -320,849 +232,850 @@ function _fetchDocument(worker, source, pdfDataRangeTransport, docId) {
|
|
320
232
|
},
|
321
233
|
maxImageSize: source.maxImageSize,
|
322
234
|
disableFontFace: source.disableFontFace,
|
323
|
-
disableCreateObjectURL: source.disableCreateObjectURL,
|
324
235
|
postMessageTransfers: worker.postMessageTransfers,
|
325
236
|
docBaseUrl: source.docBaseUrl,
|
326
|
-
nativeImageDecoderSupport: source.nativeImageDecoderSupport,
|
327
237
|
ignoreErrors: source.ignoreErrors,
|
328
|
-
isEvalSupported: source.isEvalSupported
|
238
|
+
isEvalSupported: source.isEvalSupported,
|
239
|
+
fontExtraProperties: source.fontExtraProperties
|
329
240
|
}).then(function (workerId) {
|
330
241
|
if (worker.destroyed) {
|
331
|
-
throw new Error(
|
242
|
+
throw new Error("Worker was destroyed");
|
332
243
|
}
|
333
244
|
|
334
245
|
return workerId;
|
335
246
|
});
|
336
247
|
}
|
337
248
|
|
338
|
-
|
339
|
-
|
340
|
-
|
341
|
-
var PDFDocumentLoadingTask =
|
342
|
-
/*#__PURE__*/
|
343
|
-
function () {
|
344
|
-
function PDFDocumentLoadingTask() {
|
345
|
-
_classCallCheck(this, PDFDocumentLoadingTask);
|
249
|
+
const PDFDocumentLoadingTask = function PDFDocumentLoadingTaskClosure() {
|
250
|
+
let nextDocumentId = 0;
|
346
251
|
|
252
|
+
class PDFDocumentLoadingTask {
|
253
|
+
constructor() {
|
347
254
|
this._capability = (0, _util.createPromiseCapability)();
|
348
255
|
this._transport = null;
|
349
256
|
this._worker = null;
|
350
|
-
this.docId =
|
257
|
+
this.docId = "d" + nextDocumentId++;
|
351
258
|
this.destroyed = false;
|
352
259
|
this.onPassword = null;
|
353
260
|
this.onProgress = null;
|
354
261
|
this.onUnsupportedFeature = null;
|
355
262
|
}
|
356
263
|
|
357
|
-
|
358
|
-
|
359
|
-
|
360
|
-
var _this = this;
|
264
|
+
get promise() {
|
265
|
+
return this._capability.promise;
|
266
|
+
}
|
361
267
|
|
362
|
-
|
363
|
-
|
364
|
-
|
365
|
-
|
268
|
+
destroy() {
|
269
|
+
this.destroyed = true;
|
270
|
+
const transportDestroyed = !this._transport ? Promise.resolve() : this._transport.destroy();
|
271
|
+
return transportDestroyed.then(() => {
|
272
|
+
this._transport = null;
|
366
273
|
|
367
|
-
|
368
|
-
|
274
|
+
if (this._worker) {
|
275
|
+
this._worker.destroy();
|
369
276
|
|
370
|
-
|
371
|
-
|
372
|
-
|
373
|
-
|
374
|
-
}, {
|
375
|
-
key: "then",
|
376
|
-
value: function then(onFulfilled, onRejected) {
|
377
|
-
(0, _util.deprecated)('PDFDocumentLoadingTask.then method, ' + 'use the `promise` getter instead.');
|
378
|
-
return this.promise.then.apply(this.promise, arguments);
|
379
|
-
}
|
380
|
-
}, {
|
381
|
-
key: "promise",
|
382
|
-
get: function get() {
|
383
|
-
return this._capability.promise;
|
384
|
-
}
|
385
|
-
}]);
|
277
|
+
this._worker = null;
|
278
|
+
}
|
279
|
+
});
|
280
|
+
}
|
386
281
|
|
387
|
-
|
388
|
-
}();
|
282
|
+
}
|
389
283
|
|
390
284
|
return PDFDocumentLoadingTask;
|
391
285
|
}();
|
392
286
|
|
393
|
-
|
394
|
-
|
395
|
-
function () {
|
396
|
-
function PDFDataRangeTransport(length, initialData) {
|
397
|
-
_classCallCheck(this, PDFDataRangeTransport);
|
398
|
-
|
287
|
+
class PDFDataRangeTransport {
|
288
|
+
constructor(length, initialData, progressiveDone = false) {
|
399
289
|
this.length = length;
|
400
290
|
this.initialData = initialData;
|
291
|
+
this.progressiveDone = progressiveDone;
|
401
292
|
this._rangeListeners = [];
|
402
293
|
this._progressListeners = [];
|
403
294
|
this._progressiveReadListeners = [];
|
295
|
+
this._progressiveDoneListeners = [];
|
404
296
|
this._readyCapability = (0, _util.createPromiseCapability)();
|
405
297
|
}
|
406
298
|
|
407
|
-
|
408
|
-
|
409
|
-
|
410
|
-
|
411
|
-
|
412
|
-
|
413
|
-
|
414
|
-
|
415
|
-
|
416
|
-
|
417
|
-
}
|
418
|
-
|
419
|
-
|
420
|
-
|
299
|
+
addRangeListener(listener) {
|
300
|
+
this._rangeListeners.push(listener);
|
301
|
+
}
|
302
|
+
|
303
|
+
addProgressListener(listener) {
|
304
|
+
this._progressListeners.push(listener);
|
305
|
+
}
|
306
|
+
|
307
|
+
addProgressiveReadListener(listener) {
|
308
|
+
this._progressiveReadListeners.push(listener);
|
309
|
+
}
|
310
|
+
|
311
|
+
addProgressiveDoneListener(listener) {
|
312
|
+
this._progressiveDoneListeners.push(listener);
|
313
|
+
}
|
314
|
+
|
315
|
+
onDataRange(begin, chunk) {
|
316
|
+
for (const listener of this._rangeListeners) {
|
317
|
+
listener(begin, chunk);
|
421
318
|
}
|
422
|
-
}
|
423
|
-
|
424
|
-
|
425
|
-
|
426
|
-
|
427
|
-
|
428
|
-
|
429
|
-
try {
|
430
|
-
for (var _iterator = this._rangeListeners[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
431
|
-
var listener = _step.value;
|
432
|
-
listener(begin, chunk);
|
433
|
-
}
|
434
|
-
} catch (err) {
|
435
|
-
_didIteratorError = true;
|
436
|
-
_iteratorError = err;
|
437
|
-
} finally {
|
438
|
-
try {
|
439
|
-
if (!_iteratorNormalCompletion && _iterator.return != null) {
|
440
|
-
_iterator.return();
|
441
|
-
}
|
442
|
-
} finally {
|
443
|
-
if (_didIteratorError) {
|
444
|
-
throw _iteratorError;
|
445
|
-
}
|
446
|
-
}
|
319
|
+
}
|
320
|
+
|
321
|
+
onDataProgress(loaded, total) {
|
322
|
+
this._readyCapability.promise.then(() => {
|
323
|
+
for (const listener of this._progressListeners) {
|
324
|
+
listener(loaded, total);
|
447
325
|
}
|
448
|
-
}
|
449
|
-
}
|
450
|
-
key: "onDataProgress",
|
451
|
-
value: function onDataProgress(loaded) {
|
452
|
-
var _this2 = this;
|
326
|
+
});
|
327
|
+
}
|
453
328
|
|
454
|
-
|
455
|
-
|
456
|
-
|
457
|
-
|
329
|
+
onDataProgressiveRead(chunk) {
|
330
|
+
this._readyCapability.promise.then(() => {
|
331
|
+
for (const listener of this._progressiveReadListeners) {
|
332
|
+
listener(chunk);
|
333
|
+
}
|
334
|
+
});
|
335
|
+
}
|
458
336
|
|
459
|
-
|
460
|
-
|
461
|
-
|
462
|
-
|
463
|
-
|
464
|
-
|
465
|
-
|
466
|
-
_iteratorError2 = err;
|
467
|
-
} finally {
|
468
|
-
try {
|
469
|
-
if (!_iteratorNormalCompletion2 && _iterator2.return != null) {
|
470
|
-
_iterator2.return();
|
471
|
-
}
|
472
|
-
} finally {
|
473
|
-
if (_didIteratorError2) {
|
474
|
-
throw _iteratorError2;
|
475
|
-
}
|
476
|
-
}
|
477
|
-
}
|
478
|
-
});
|
479
|
-
}
|
480
|
-
}, {
|
481
|
-
key: "onDataProgressiveRead",
|
482
|
-
value: function onDataProgressiveRead(chunk) {
|
483
|
-
var _this3 = this;
|
337
|
+
onDataProgressiveDone() {
|
338
|
+
this._readyCapability.promise.then(() => {
|
339
|
+
for (const listener of this._progressiveDoneListeners) {
|
340
|
+
listener();
|
341
|
+
}
|
342
|
+
});
|
343
|
+
}
|
484
344
|
|
485
|
-
|
486
|
-
|
487
|
-
|
488
|
-
var _iteratorError3 = undefined;
|
345
|
+
transportReady() {
|
346
|
+
this._readyCapability.resolve();
|
347
|
+
}
|
489
348
|
|
490
|
-
|
491
|
-
|
492
|
-
|
493
|
-
listener(chunk);
|
494
|
-
}
|
495
|
-
} catch (err) {
|
496
|
-
_didIteratorError3 = true;
|
497
|
-
_iteratorError3 = err;
|
498
|
-
} finally {
|
499
|
-
try {
|
500
|
-
if (!_iteratorNormalCompletion3 && _iterator3.return != null) {
|
501
|
-
_iterator3.return();
|
502
|
-
}
|
503
|
-
} finally {
|
504
|
-
if (_didIteratorError3) {
|
505
|
-
throw _iteratorError3;
|
506
|
-
}
|
507
|
-
}
|
508
|
-
}
|
509
|
-
});
|
510
|
-
}
|
511
|
-
}, {
|
512
|
-
key: "transportReady",
|
513
|
-
value: function transportReady() {
|
514
|
-
this._readyCapability.resolve();
|
515
|
-
}
|
516
|
-
}, {
|
517
|
-
key: "requestDataRange",
|
518
|
-
value: function requestDataRange(begin, end) {
|
519
|
-
(0, _util.unreachable)('Abstract method PDFDataRangeTransport.requestDataRange');
|
520
|
-
}
|
521
|
-
}, {
|
522
|
-
key: "abort",
|
523
|
-
value: function abort() {}
|
524
|
-
}]);
|
349
|
+
requestDataRange(begin, end) {
|
350
|
+
(0, _util.unreachable)("Abstract method PDFDataRangeTransport.requestDataRange");
|
351
|
+
}
|
525
352
|
|
526
|
-
|
527
|
-
}();
|
353
|
+
abort() {}
|
528
354
|
|
529
|
-
|
355
|
+
}
|
530
356
|
|
531
|
-
|
532
|
-
/*#__PURE__*/
|
533
|
-
function () {
|
534
|
-
function PDFDocumentProxy(pdfInfo, transport, loadingTask) {
|
535
|
-
_classCallCheck(this, PDFDocumentProxy);
|
357
|
+
exports.PDFDataRangeTransport = PDFDataRangeTransport;
|
536
358
|
|
537
|
-
|
359
|
+
class PDFDocumentProxy {
|
360
|
+
constructor(pdfInfo, transport) {
|
538
361
|
this._pdfInfo = pdfInfo;
|
539
362
|
this._transport = transport;
|
540
363
|
}
|
541
364
|
|
542
|
-
|
543
|
-
|
544
|
-
|
545
|
-
return this._transport.getPage(pageNumber);
|
546
|
-
}
|
547
|
-
}, {
|
548
|
-
key: "getPageIndex",
|
549
|
-
value: function getPageIndex(ref) {
|
550
|
-
return this._transport.getPageIndex(ref);
|
551
|
-
}
|
552
|
-
}, {
|
553
|
-
key: "getDestinations",
|
554
|
-
value: function getDestinations() {
|
555
|
-
return this._transport.getDestinations();
|
556
|
-
}
|
557
|
-
}, {
|
558
|
-
key: "getDestination",
|
559
|
-
value: function getDestination(id) {
|
560
|
-
return this._transport.getDestination(id);
|
561
|
-
}
|
562
|
-
}, {
|
563
|
-
key: "getPageLabels",
|
564
|
-
value: function getPageLabels() {
|
565
|
-
return this._transport.getPageLabels();
|
566
|
-
}
|
567
|
-
}, {
|
568
|
-
key: "getPageMode",
|
569
|
-
value: function getPageMode() {
|
570
|
-
return this._transport.getPageMode();
|
571
|
-
}
|
572
|
-
}, {
|
573
|
-
key: "getOpenActionDestination",
|
574
|
-
value: function getOpenActionDestination() {
|
575
|
-
return this._transport.getOpenActionDestination();
|
576
|
-
}
|
577
|
-
}, {
|
578
|
-
key: "getAttachments",
|
579
|
-
value: function getAttachments() {
|
580
|
-
return this._transport.getAttachments();
|
581
|
-
}
|
582
|
-
}, {
|
583
|
-
key: "getJavaScript",
|
584
|
-
value: function getJavaScript() {
|
585
|
-
return this._transport.getJavaScript();
|
586
|
-
}
|
587
|
-
}, {
|
588
|
-
key: "getOutline",
|
589
|
-
value: function getOutline() {
|
590
|
-
return this._transport.getOutline();
|
591
|
-
}
|
592
|
-
}, {
|
593
|
-
key: "getPermissions",
|
594
|
-
value: function getPermissions() {
|
595
|
-
return this._transport.getPermissions();
|
596
|
-
}
|
597
|
-
}, {
|
598
|
-
key: "getMetadata",
|
599
|
-
value: function getMetadata() {
|
600
|
-
return this._transport.getMetadata();
|
601
|
-
}
|
602
|
-
}, {
|
603
|
-
key: "getData",
|
604
|
-
value: function getData() {
|
605
|
-
return this._transport.getData();
|
606
|
-
}
|
607
|
-
}, {
|
608
|
-
key: "getDownloadInfo",
|
609
|
-
value: function getDownloadInfo() {
|
610
|
-
return this._transport.downloadInfoCapability.promise;
|
611
|
-
}
|
612
|
-
}, {
|
613
|
-
key: "getStats",
|
614
|
-
value: function getStats() {
|
615
|
-
return this._transport.getStats();
|
616
|
-
}
|
617
|
-
}, {
|
618
|
-
key: "cleanup",
|
619
|
-
value: function cleanup() {
|
620
|
-
this._transport.startCleanup();
|
621
|
-
}
|
622
|
-
}, {
|
623
|
-
key: "destroy",
|
624
|
-
value: function destroy() {
|
625
|
-
return this.loadingTask.destroy();
|
626
|
-
}
|
627
|
-
}, {
|
628
|
-
key: "numPages",
|
629
|
-
get: function get() {
|
630
|
-
return this._pdfInfo.numPages;
|
631
|
-
}
|
632
|
-
}, {
|
633
|
-
key: "fingerprint",
|
634
|
-
get: function get() {
|
635
|
-
return this._pdfInfo.fingerprint;
|
636
|
-
}
|
637
|
-
}, {
|
638
|
-
key: "loadingParams",
|
639
|
-
get: function get() {
|
640
|
-
return this._transport.loadingParams;
|
641
|
-
}
|
642
|
-
}]);
|
365
|
+
get numPages() {
|
366
|
+
return this._pdfInfo.numPages;
|
367
|
+
}
|
643
368
|
|
644
|
-
|
645
|
-
|
369
|
+
get fingerprint() {
|
370
|
+
return this._pdfInfo.fingerprint;
|
371
|
+
}
|
646
372
|
|
647
|
-
|
373
|
+
getPage(pageNumber) {
|
374
|
+
return this._transport.getPage(pageNumber);
|
375
|
+
}
|
648
376
|
|
649
|
-
|
650
|
-
|
651
|
-
|
652
|
-
function PDFPageProxy(pageIndex, pageInfo, transport) {
|
653
|
-
var pdfBug = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
|
377
|
+
getPageIndex(ref) {
|
378
|
+
return this._transport.getPageIndex(ref);
|
379
|
+
}
|
654
380
|
|
655
|
-
|
381
|
+
getDestinations() {
|
382
|
+
return this._transport.getDestinations();
|
383
|
+
}
|
656
384
|
|
657
|
-
|
658
|
-
this.
|
659
|
-
this._transport = transport;
|
660
|
-
this._stats = pdfBug ? new _dom_utils.StatTimer() : _dom_utils.DummyStatTimer;
|
661
|
-
this._pdfBug = pdfBug;
|
662
|
-
this.commonObjs = transport.commonObjs;
|
663
|
-
this.objs = new PDFObjects();
|
664
|
-
this.cleanupAfterRender = false;
|
665
|
-
this.pendingCleanup = false;
|
666
|
-
this.intentStates = Object.create(null);
|
667
|
-
this.destroyed = false;
|
385
|
+
getDestination(id) {
|
386
|
+
return this._transport.getDestination(id);
|
668
387
|
}
|
669
388
|
|
670
|
-
|
671
|
-
|
672
|
-
|
673
|
-
var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
|
674
|
-
scale = _ref.scale,
|
675
|
-
_ref$rotation = _ref.rotation,
|
676
|
-
rotation = _ref$rotation === void 0 ? this.rotate : _ref$rotation,
|
677
|
-
_ref$dontFlip = _ref.dontFlip,
|
678
|
-
dontFlip = _ref$dontFlip === void 0 ? false : _ref$dontFlip;
|
679
|
-
|
680
|
-
if (arguments.length > 1 || typeof arguments[0] === 'number') {
|
681
|
-
(0, _util.deprecated)('getViewport is called with obsolete arguments.');
|
682
|
-
scale = arguments[0];
|
683
|
-
rotation = typeof arguments[1] === 'number' ? arguments[1] : this.rotate;
|
684
|
-
dontFlip = typeof arguments[2] === 'boolean' ? arguments[2] : false;
|
685
|
-
}
|
686
|
-
|
687
|
-
return new _dom_utils.PageViewport({
|
688
|
-
viewBox: this.view,
|
689
|
-
scale: scale,
|
690
|
-
rotation: rotation,
|
691
|
-
dontFlip: dontFlip
|
692
|
-
});
|
693
|
-
}
|
694
|
-
}, {
|
695
|
-
key: "getAnnotations",
|
696
|
-
value: function getAnnotations() {
|
697
|
-
var _ref2 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
|
698
|
-
_ref2$intent = _ref2.intent,
|
699
|
-
intent = _ref2$intent === void 0 ? null : _ref2$intent;
|
389
|
+
getPageLabels() {
|
390
|
+
return this._transport.getPageLabels();
|
391
|
+
}
|
700
392
|
|
701
|
-
|
702
|
-
|
703
|
-
|
704
|
-
}
|
393
|
+
getPageLayout() {
|
394
|
+
return this._transport.getPageLayout();
|
395
|
+
}
|
705
396
|
|
706
|
-
|
707
|
-
|
708
|
-
}
|
709
|
-
key: "render",
|
710
|
-
value: function render(_ref3) {
|
711
|
-
var _this4 = this;
|
712
|
-
|
713
|
-
var canvasContext = _ref3.canvasContext,
|
714
|
-
viewport = _ref3.viewport,
|
715
|
-
_ref3$intent = _ref3.intent,
|
716
|
-
intent = _ref3$intent === void 0 ? 'display' : _ref3$intent,
|
717
|
-
_ref3$enableWebGL = _ref3.enableWebGL,
|
718
|
-
enableWebGL = _ref3$enableWebGL === void 0 ? false : _ref3$enableWebGL,
|
719
|
-
_ref3$renderInteracti = _ref3.renderInteractiveForms,
|
720
|
-
renderInteractiveForms = _ref3$renderInteracti === void 0 ? false : _ref3$renderInteracti,
|
721
|
-
_ref3$transform = _ref3.transform,
|
722
|
-
transform = _ref3$transform === void 0 ? null : _ref3$transform,
|
723
|
-
_ref3$imageLayer = _ref3.imageLayer,
|
724
|
-
imageLayer = _ref3$imageLayer === void 0 ? null : _ref3$imageLayer,
|
725
|
-
_ref3$canvasFactory = _ref3.canvasFactory,
|
726
|
-
canvasFactory = _ref3$canvasFactory === void 0 ? null : _ref3$canvasFactory,
|
727
|
-
_ref3$background = _ref3.background,
|
728
|
-
background = _ref3$background === void 0 ? null : _ref3$background;
|
729
|
-
var stats = this._stats;
|
730
|
-
stats.time('Overall');
|
731
|
-
this.pendingCleanup = false;
|
732
|
-
var renderingIntent = intent === 'print' ? 'print' : 'display';
|
733
|
-
var canvasFactoryInstance = canvasFactory || new _dom_utils.DOMCanvasFactory();
|
734
|
-
var webGLContext = new _webgl.WebGLContext({
|
735
|
-
enable: enableWebGL
|
736
|
-
});
|
397
|
+
getPageMode() {
|
398
|
+
return this._transport.getPageMode();
|
399
|
+
}
|
737
400
|
|
738
|
-
|
739
|
-
|
740
|
-
|
401
|
+
getViewerPreferences() {
|
402
|
+
return this._transport.getViewerPreferences();
|
403
|
+
}
|
741
404
|
|
742
|
-
|
405
|
+
getOpenAction() {
|
406
|
+
return this._transport.getOpenAction();
|
407
|
+
}
|
743
408
|
|
744
|
-
|
745
|
-
|
746
|
-
|
747
|
-
|
748
|
-
|
749
|
-
|
750
|
-
lastChunk: false
|
751
|
-
};
|
752
|
-
stats.time('Page Request');
|
409
|
+
getOpenActionDestination() {
|
410
|
+
(0, _display_utils.deprecated)("getOpenActionDestination, use getOpenAction instead.");
|
411
|
+
return this.getOpenAction().then(function (openAction) {
|
412
|
+
return openAction && openAction.dest ? openAction.dest : null;
|
413
|
+
});
|
414
|
+
}
|
753
415
|
|
754
|
-
|
755
|
-
|
756
|
-
|
757
|
-
renderInteractiveForms: renderInteractiveForms === true
|
758
|
-
});
|
759
|
-
}
|
416
|
+
getAttachments() {
|
417
|
+
return this._transport.getAttachments();
|
418
|
+
}
|
760
419
|
|
761
|
-
|
762
|
-
|
420
|
+
getJavaScript() {
|
421
|
+
return this._transport.getJavaScript();
|
422
|
+
}
|
763
423
|
|
764
|
-
|
765
|
-
|
766
|
-
|
424
|
+
getOutline() {
|
425
|
+
return this._transport.getOutline();
|
426
|
+
}
|
767
427
|
|
768
|
-
|
769
|
-
|
770
|
-
|
428
|
+
getPermissions() {
|
429
|
+
return this._transport.getPermissions();
|
430
|
+
}
|
771
431
|
|
772
|
-
|
432
|
+
getMetadata() {
|
433
|
+
return this._transport.getMetadata();
|
434
|
+
}
|
773
435
|
|
774
|
-
|
775
|
-
|
776
|
-
|
777
|
-
internalRenderTask.capability.resolve();
|
778
|
-
}
|
436
|
+
getData() {
|
437
|
+
return this._transport.getData();
|
438
|
+
}
|
779
439
|
|
780
|
-
|
781
|
-
|
782
|
-
|
440
|
+
getDownloadInfo() {
|
441
|
+
return this._transport.downloadInfoCapability.promise;
|
442
|
+
}
|
783
443
|
|
784
|
-
|
785
|
-
|
786
|
-
|
787
|
-
canvasContext: canvasContext,
|
788
|
-
viewport: viewport,
|
789
|
-
transform: transform,
|
790
|
-
imageLayer: imageLayer,
|
791
|
-
background: background
|
792
|
-
},
|
793
|
-
objs: this.objs,
|
794
|
-
commonObjs: this.commonObjs,
|
795
|
-
operatorList: intentState.operatorList,
|
796
|
-
pageNumber: this.pageNumber,
|
797
|
-
canvasFactory: canvasFactoryInstance,
|
798
|
-
webGLContext: webGLContext,
|
799
|
-
useRequestAnimationFrame: renderingIntent !== 'print',
|
800
|
-
pdfBug: this._pdfBug
|
801
|
-
});
|
444
|
+
getStats() {
|
445
|
+
return this._transport.getStats();
|
446
|
+
}
|
802
447
|
|
803
|
-
|
804
|
-
|
805
|
-
|
448
|
+
cleanup() {
|
449
|
+
return this._transport.startCleanup();
|
450
|
+
}
|
806
451
|
|
807
|
-
|
808
|
-
|
809
|
-
|
810
|
-
if (_this4.pendingCleanup) {
|
811
|
-
complete();
|
812
|
-
return;
|
813
|
-
}
|
452
|
+
destroy() {
|
453
|
+
return this.loadingTask.destroy();
|
454
|
+
}
|
814
455
|
|
815
|
-
|
816
|
-
|
817
|
-
|
818
|
-
}).catch(complete);
|
819
|
-
return renderTask;
|
820
|
-
}
|
821
|
-
}, {
|
822
|
-
key: "getOperatorList",
|
823
|
-
value: function getOperatorList() {
|
824
|
-
function operatorListChanged() {
|
825
|
-
if (intentState.operatorList.lastChunk) {
|
826
|
-
intentState.opListReadCapability.resolve(intentState.operatorList);
|
827
|
-
var i = intentState.renderTasks.indexOf(opListTask);
|
828
|
-
|
829
|
-
if (i >= 0) {
|
830
|
-
intentState.renderTasks.splice(i, 1);
|
831
|
-
}
|
832
|
-
}
|
833
|
-
}
|
456
|
+
get loadingParams() {
|
457
|
+
return this._transport.loadingParams;
|
458
|
+
}
|
834
459
|
|
835
|
-
|
460
|
+
get loadingTask() {
|
461
|
+
return this._transport.loadingTask;
|
462
|
+
}
|
836
463
|
|
837
|
-
|
838
|
-
this.intentStates[renderingIntent] = Object.create(null);
|
839
|
-
}
|
464
|
+
}
|
840
465
|
|
841
|
-
|
842
|
-
var opListTask;
|
466
|
+
exports.PDFDocumentProxy = PDFDocumentProxy;
|
843
467
|
|
844
|
-
|
845
|
-
|
846
|
-
|
847
|
-
|
848
|
-
|
849
|
-
|
850
|
-
|
851
|
-
|
852
|
-
|
853
|
-
|
854
|
-
|
855
|
-
|
468
|
+
class PDFPageProxy {
|
469
|
+
constructor(pageIndex, pageInfo, transport, pdfBug = false) {
|
470
|
+
this._pageIndex = pageIndex;
|
471
|
+
this._pageInfo = pageInfo;
|
472
|
+
this._transport = transport;
|
473
|
+
this._stats = pdfBug ? new _display_utils.StatTimer() : null;
|
474
|
+
this._pdfBug = pdfBug;
|
475
|
+
this.commonObjs = transport.commonObjs;
|
476
|
+
this.objs = new PDFObjects();
|
477
|
+
this.cleanupAfterRender = false;
|
478
|
+
this.pendingCleanup = false;
|
479
|
+
this.intentStates = Object.create(null);
|
480
|
+
this.destroyed = false;
|
481
|
+
}
|
856
482
|
|
857
|
-
|
483
|
+
get pageNumber() {
|
484
|
+
return this._pageIndex + 1;
|
485
|
+
}
|
858
486
|
|
859
|
-
|
860
|
-
|
861
|
-
|
862
|
-
});
|
863
|
-
}
|
487
|
+
get rotate() {
|
488
|
+
return this._pageInfo.rotate;
|
489
|
+
}
|
864
490
|
|
865
|
-
|
866
|
-
|
867
|
-
}
|
868
|
-
key: "streamTextContent",
|
869
|
-
value: function streamTextContent() {
|
870
|
-
var _ref4 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
|
871
|
-
_ref4$normalizeWhites = _ref4.normalizeWhitespace,
|
872
|
-
normalizeWhitespace = _ref4$normalizeWhites === void 0 ? false : _ref4$normalizeWhites,
|
873
|
-
_ref4$disableCombineT = _ref4.disableCombineTextItems,
|
874
|
-
disableCombineTextItems = _ref4$disableCombineT === void 0 ? false : _ref4$disableCombineT;
|
875
|
-
|
876
|
-
var TEXT_CONTENT_CHUNK_SIZE = 100;
|
877
|
-
return this._transport.messageHandler.sendWithStream('GetTextContent', {
|
878
|
-
pageIndex: this.pageNumber - 1,
|
879
|
-
normalizeWhitespace: normalizeWhitespace === true,
|
880
|
-
combineTextItems: disableCombineTextItems !== true
|
881
|
-
}, {
|
882
|
-
highWaterMark: TEXT_CONTENT_CHUNK_SIZE,
|
883
|
-
size: function size(textContent) {
|
884
|
-
return textContent.items.length;
|
885
|
-
}
|
886
|
-
});
|
887
|
-
}
|
888
|
-
}, {
|
889
|
-
key: "getTextContent",
|
890
|
-
value: function getTextContent() {
|
891
|
-
var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
892
|
-
var readableStream = this.streamTextContent(params);
|
893
|
-
return new Promise(function (resolve, reject) {
|
894
|
-
function pump() {
|
895
|
-
reader.read().then(function (_ref5) {
|
896
|
-
var _textContent$items;
|
897
|
-
|
898
|
-
var value = _ref5.value,
|
899
|
-
done = _ref5.done;
|
900
|
-
|
901
|
-
if (done) {
|
902
|
-
resolve(textContent);
|
903
|
-
return;
|
904
|
-
}
|
491
|
+
get ref() {
|
492
|
+
return this._pageInfo.ref;
|
493
|
+
}
|
905
494
|
|
906
|
-
|
495
|
+
get userUnit() {
|
496
|
+
return this._pageInfo.userUnit;
|
497
|
+
}
|
907
498
|
|
908
|
-
|
499
|
+
get view() {
|
500
|
+
return this._pageInfo.view;
|
501
|
+
}
|
909
502
|
|
910
|
-
|
911
|
-
|
912
|
-
|
503
|
+
getViewport({
|
504
|
+
scale,
|
505
|
+
rotation = this.rotate,
|
506
|
+
offsetX = 0,
|
507
|
+
offsetY = 0,
|
508
|
+
dontFlip = false
|
509
|
+
} = {}) {
|
510
|
+
return new _display_utils.PageViewport({
|
511
|
+
viewBox: this.view,
|
512
|
+
scale,
|
513
|
+
rotation,
|
514
|
+
offsetX,
|
515
|
+
offsetY,
|
516
|
+
dontFlip
|
517
|
+
});
|
518
|
+
}
|
913
519
|
|
914
|
-
|
915
|
-
|
916
|
-
|
917
|
-
|
918
|
-
|
919
|
-
|
920
|
-
});
|
520
|
+
getAnnotations({
|
521
|
+
intent = null
|
522
|
+
} = {}) {
|
523
|
+
if (!this.annotationsPromise || this.annotationsIntent !== intent) {
|
524
|
+
this.annotationsPromise = this._transport.getAnnotations(this._pageIndex, intent);
|
525
|
+
this.annotationsIntent = intent;
|
921
526
|
}
|
922
|
-
}, {
|
923
|
-
key: "_destroy",
|
924
|
-
value: function _destroy() {
|
925
|
-
this.destroyed = true;
|
926
|
-
this._transport.pageCache[this.pageIndex] = null;
|
927
|
-
var waitOn = [];
|
928
|
-
Object.keys(this.intentStates).forEach(function (intent) {
|
929
|
-
if (intent === 'oplist') {
|
930
|
-
return;
|
931
|
-
}
|
932
527
|
|
933
|
-
|
934
|
-
|
935
|
-
|
936
|
-
|
937
|
-
|
938
|
-
|
939
|
-
|
940
|
-
|
941
|
-
|
942
|
-
|
943
|
-
|
528
|
+
return this.annotationsPromise;
|
529
|
+
}
|
530
|
+
|
531
|
+
render({
|
532
|
+
canvasContext,
|
533
|
+
viewport,
|
534
|
+
intent = "display",
|
535
|
+
enableWebGL = false,
|
536
|
+
renderInteractiveForms = false,
|
537
|
+
transform = null,
|
538
|
+
imageLayer = null,
|
539
|
+
canvasFactory = null,
|
540
|
+
background = null
|
541
|
+
}) {
|
542
|
+
if (this._stats) {
|
543
|
+
this._stats.time("Overall");
|
544
|
+
}
|
545
|
+
|
546
|
+
const renderingIntent = intent === "print" ? "print" : "display";
|
547
|
+
this.pendingCleanup = false;
|
548
|
+
|
549
|
+
if (!this.intentStates[renderingIntent]) {
|
550
|
+
this.intentStates[renderingIntent] = Object.create(null);
|
944
551
|
}
|
945
|
-
}, {
|
946
|
-
key: "cleanup",
|
947
|
-
value: function cleanup() {
|
948
|
-
var resetStats = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
|
949
|
-
this.pendingCleanup = true;
|
950
552
|
|
951
|
-
|
553
|
+
const intentState = this.intentStates[renderingIntent];
|
554
|
+
|
555
|
+
if (intentState.streamReaderCancelTimeout) {
|
556
|
+
clearTimeout(intentState.streamReaderCancelTimeout);
|
557
|
+
intentState.streamReaderCancelTimeout = null;
|
952
558
|
}
|
953
|
-
}, {
|
954
|
-
key: "_tryCleanup",
|
955
|
-
value: function _tryCleanup() {
|
956
|
-
var resetStats = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
|
957
|
-
|
958
|
-
if (!this.pendingCleanup || Object.keys(this.intentStates).some(function (intent) {
|
959
|
-
var intentState = this.intentStates[intent];
|
960
|
-
return intentState.renderTasks.length !== 0 || intentState.receivingOperatorList;
|
961
|
-
}, this)) {
|
962
|
-
return;
|
963
|
-
}
|
964
559
|
|
965
|
-
|
966
|
-
|
967
|
-
|
968
|
-
|
969
|
-
|
560
|
+
const canvasFactoryInstance = canvasFactory || new _display_utils.DOMCanvasFactory();
|
561
|
+
const webGLContext = new _webgl.WebGLContext({
|
562
|
+
enable: enableWebGL
|
563
|
+
});
|
564
|
+
|
565
|
+
if (!intentState.displayReadyCapability) {
|
566
|
+
intentState.displayReadyCapability = (0, _util.createPromiseCapability)();
|
567
|
+
intentState.operatorList = {
|
568
|
+
fnArray: [],
|
569
|
+
argsArray: [],
|
570
|
+
lastChunk: false
|
571
|
+
};
|
970
572
|
|
971
|
-
if (
|
972
|
-
this._stats
|
573
|
+
if (this._stats) {
|
574
|
+
this._stats.time("Page Request");
|
973
575
|
}
|
974
576
|
|
975
|
-
this.
|
577
|
+
this._pumpOperatorList({
|
578
|
+
pageIndex: this._pageIndex,
|
579
|
+
intent: renderingIntent,
|
580
|
+
renderInteractiveForms: renderInteractiveForms === true
|
581
|
+
});
|
976
582
|
}
|
977
|
-
}, {
|
978
|
-
key: "_startRenderPage",
|
979
|
-
value: function _startRenderPage(transparency, intent) {
|
980
|
-
var intentState = this.intentStates[intent];
|
981
583
|
|
982
|
-
|
983
|
-
|
584
|
+
const complete = error => {
|
585
|
+
const i = intentState.renderTasks.indexOf(internalRenderTask);
|
586
|
+
|
587
|
+
if (i >= 0) {
|
588
|
+
intentState.renderTasks.splice(i, 1);
|
984
589
|
}
|
985
|
-
}
|
986
|
-
}, {
|
987
|
-
key: "_renderPageChunk",
|
988
|
-
value: function _renderPageChunk(operatorListChunk, intent) {
|
989
|
-
var intentState = this.intentStates[intent];
|
990
590
|
|
991
|
-
|
992
|
-
|
993
|
-
intentState.operatorList.argsArray.push(operatorListChunk.argsArray[i]);
|
591
|
+
if (this.cleanupAfterRender || renderingIntent === "print") {
|
592
|
+
this.pendingCleanup = true;
|
994
593
|
}
|
995
594
|
|
996
|
-
|
595
|
+
this._tryCleanup();
|
997
596
|
|
998
|
-
|
999
|
-
|
597
|
+
if (error) {
|
598
|
+
internalRenderTask.capability.reject(error);
|
599
|
+
|
600
|
+
this._abortOperatorList({
|
601
|
+
intentState,
|
602
|
+
reason: error
|
603
|
+
});
|
604
|
+
} else {
|
605
|
+
internalRenderTask.capability.resolve();
|
1000
606
|
}
|
1001
607
|
|
1002
|
-
if (
|
1003
|
-
|
608
|
+
if (this._stats) {
|
609
|
+
this._stats.timeEnd("Rendering");
|
1004
610
|
|
1005
|
-
this.
|
611
|
+
this._stats.timeEnd("Overall");
|
1006
612
|
}
|
613
|
+
};
|
614
|
+
|
615
|
+
const internalRenderTask = new InternalRenderTask({
|
616
|
+
callback: complete,
|
617
|
+
params: {
|
618
|
+
canvasContext,
|
619
|
+
viewport,
|
620
|
+
transform,
|
621
|
+
imageLayer,
|
622
|
+
background
|
623
|
+
},
|
624
|
+
objs: this.objs,
|
625
|
+
commonObjs: this.commonObjs,
|
626
|
+
operatorList: intentState.operatorList,
|
627
|
+
pageIndex: this._pageIndex,
|
628
|
+
canvasFactory: canvasFactoryInstance,
|
629
|
+
webGLContext,
|
630
|
+
useRequestAnimationFrame: renderingIntent !== "print",
|
631
|
+
pdfBug: this._pdfBug
|
632
|
+
});
|
633
|
+
|
634
|
+
if (!intentState.renderTasks) {
|
635
|
+
intentState.renderTasks = [];
|
1007
636
|
}
|
1008
|
-
|
1009
|
-
|
1010
|
-
|
1011
|
-
|
1012
|
-
|
1013
|
-
|
1014
|
-
|
1015
|
-
|
1016
|
-
|
637
|
+
|
638
|
+
intentState.renderTasks.push(internalRenderTask);
|
639
|
+
const renderTask = internalRenderTask.task;
|
640
|
+
intentState.displayReadyCapability.promise.then(transparency => {
|
641
|
+
if (this.pendingCleanup) {
|
642
|
+
complete();
|
643
|
+
return;
|
644
|
+
}
|
645
|
+
|
646
|
+
if (this._stats) {
|
647
|
+
this._stats.time("Rendering");
|
648
|
+
}
|
649
|
+
|
650
|
+
internalRenderTask.initializeGraphics(transparency);
|
651
|
+
internalRenderTask.operatorListChanged();
|
652
|
+
}).catch(complete);
|
653
|
+
return renderTask;
|
654
|
+
}
|
655
|
+
|
656
|
+
getOperatorList() {
|
657
|
+
function operatorListChanged() {
|
658
|
+
if (intentState.operatorList.lastChunk) {
|
659
|
+
intentState.opListReadCapability.resolve(intentState.operatorList);
|
660
|
+
const i = intentState.renderTasks.indexOf(opListTask);
|
661
|
+
|
662
|
+
if (i >= 0) {
|
663
|
+
intentState.renderTasks.splice(i, 1);
|
664
|
+
}
|
665
|
+
}
|
1017
666
|
}
|
1018
|
-
|
1019
|
-
|
1020
|
-
|
1021
|
-
|
667
|
+
|
668
|
+
const renderingIntent = "oplist";
|
669
|
+
|
670
|
+
if (!this.intentStates[renderingIntent]) {
|
671
|
+
this.intentStates[renderingIntent] = Object.create(null);
|
1022
672
|
}
|
1023
|
-
|
1024
|
-
|
1025
|
-
|
1026
|
-
|
673
|
+
|
674
|
+
const intentState = this.intentStates[renderingIntent];
|
675
|
+
let opListTask;
|
676
|
+
|
677
|
+
if (!intentState.opListReadCapability) {
|
678
|
+
opListTask = {};
|
679
|
+
opListTask.operatorListChanged = operatorListChanged;
|
680
|
+
intentState.opListReadCapability = (0, _util.createPromiseCapability)();
|
681
|
+
intentState.renderTasks = [];
|
682
|
+
intentState.renderTasks.push(opListTask);
|
683
|
+
intentState.operatorList = {
|
684
|
+
fnArray: [],
|
685
|
+
argsArray: [],
|
686
|
+
lastChunk: false
|
687
|
+
};
|
688
|
+
|
689
|
+
if (this._stats) {
|
690
|
+
this._stats.time("Page Request");
|
691
|
+
}
|
692
|
+
|
693
|
+
this._pumpOperatorList({
|
694
|
+
pageIndex: this._pageIndex,
|
695
|
+
intent: renderingIntent
|
696
|
+
});
|
1027
697
|
}
|
1028
|
-
|
1029
|
-
|
1030
|
-
|
1031
|
-
|
698
|
+
|
699
|
+
return intentState.opListReadCapability.promise;
|
700
|
+
}
|
701
|
+
|
702
|
+
streamTextContent({
|
703
|
+
normalizeWhitespace = false,
|
704
|
+
disableCombineTextItems = false
|
705
|
+
} = {}) {
|
706
|
+
const TEXT_CONTENT_CHUNK_SIZE = 100;
|
707
|
+
return this._transport.messageHandler.sendWithStream("GetTextContent", {
|
708
|
+
pageIndex: this._pageIndex,
|
709
|
+
normalizeWhitespace: normalizeWhitespace === true,
|
710
|
+
combineTextItems: disableCombineTextItems !== true
|
711
|
+
}, {
|
712
|
+
highWaterMark: TEXT_CONTENT_CHUNK_SIZE,
|
713
|
+
|
714
|
+
size(textContent) {
|
715
|
+
return textContent.items.length;
|
716
|
+
}
|
717
|
+
|
718
|
+
});
|
719
|
+
}
|
720
|
+
|
721
|
+
getTextContent(params = {}) {
|
722
|
+
const readableStream = this.streamTextContent(params);
|
723
|
+
return new Promise(function (resolve, reject) {
|
724
|
+
function pump() {
|
725
|
+
reader.read().then(function ({
|
726
|
+
value,
|
727
|
+
done
|
728
|
+
}) {
|
729
|
+
if (done) {
|
730
|
+
resolve(textContent);
|
731
|
+
return;
|
732
|
+
}
|
733
|
+
|
734
|
+
Object.assign(textContent.styles, value.styles);
|
735
|
+
textContent.items.push(...value.items);
|
736
|
+
pump();
|
737
|
+
}, reject);
|
738
|
+
}
|
739
|
+
|
740
|
+
const reader = readableStream.getReader();
|
741
|
+
const textContent = {
|
742
|
+
items: [],
|
743
|
+
styles: Object.create(null)
|
744
|
+
};
|
745
|
+
pump();
|
746
|
+
});
|
747
|
+
}
|
748
|
+
|
749
|
+
_destroy() {
|
750
|
+
this.destroyed = true;
|
751
|
+
this._transport.pageCache[this._pageIndex] = null;
|
752
|
+
const waitOn = [];
|
753
|
+
Object.keys(this.intentStates).forEach(intent => {
|
754
|
+
const intentState = this.intentStates[intent];
|
755
|
+
|
756
|
+
this._abortOperatorList({
|
757
|
+
intentState,
|
758
|
+
reason: new Error("Page was destroyed."),
|
759
|
+
force: true
|
760
|
+
});
|
761
|
+
|
762
|
+
if (intent === "oplist") {
|
763
|
+
return;
|
764
|
+
}
|
765
|
+
|
766
|
+
intentState.renderTasks.forEach(function (renderTask) {
|
767
|
+
const renderCompleted = renderTask.capability.promise.catch(function () {});
|
768
|
+
waitOn.push(renderCompleted);
|
769
|
+
renderTask.cancel();
|
770
|
+
});
|
771
|
+
});
|
772
|
+
this.objs.clear();
|
773
|
+
this.annotationsPromise = null;
|
774
|
+
this.pendingCleanup = false;
|
775
|
+
return Promise.all(waitOn);
|
776
|
+
}
|
777
|
+
|
778
|
+
cleanup(resetStats = false) {
|
779
|
+
this.pendingCleanup = true;
|
780
|
+
return this._tryCleanup(resetStats);
|
781
|
+
}
|
782
|
+
|
783
|
+
_tryCleanup(resetStats = false) {
|
784
|
+
if (!this.pendingCleanup || Object.keys(this.intentStates).some(intent => {
|
785
|
+
const intentState = this.intentStates[intent];
|
786
|
+
return intentState.renderTasks.length !== 0 || !intentState.operatorList.lastChunk;
|
787
|
+
})) {
|
788
|
+
return false;
|
1032
789
|
}
|
1033
|
-
|
1034
|
-
|
1035
|
-
|
1036
|
-
|
790
|
+
|
791
|
+
Object.keys(this.intentStates).forEach(intent => {
|
792
|
+
delete this.intentStates[intent];
|
793
|
+
});
|
794
|
+
this.objs.clear();
|
795
|
+
this.annotationsPromise = null;
|
796
|
+
|
797
|
+
if (resetStats && this._stats) {
|
798
|
+
this._stats = new _display_utils.StatTimer();
|
1037
799
|
}
|
1038
|
-
}]);
|
1039
800
|
|
1040
|
-
|
1041
|
-
|
801
|
+
this.pendingCleanup = false;
|
802
|
+
return true;
|
803
|
+
}
|
1042
804
|
|
1043
|
-
|
805
|
+
_startRenderPage(transparency, intent) {
|
806
|
+
const intentState = this.intentStates[intent];
|
1044
807
|
|
1045
|
-
|
1046
|
-
|
1047
|
-
|
1048
|
-
function LoopbackPort() {
|
1049
|
-
var defer = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
|
808
|
+
if (!intentState) {
|
809
|
+
return;
|
810
|
+
}
|
1050
811
|
|
1051
|
-
|
812
|
+
if (this._stats) {
|
813
|
+
this._stats.timeEnd("Page Request");
|
814
|
+
}
|
1052
815
|
|
1053
|
-
|
1054
|
-
|
1055
|
-
|
816
|
+
if (intentState.displayReadyCapability) {
|
817
|
+
intentState.displayReadyCapability.resolve(transparency);
|
818
|
+
}
|
1056
819
|
}
|
1057
820
|
|
1058
|
-
|
1059
|
-
|
1060
|
-
|
1061
|
-
|
821
|
+
_renderPageChunk(operatorListChunk, intentState) {
|
822
|
+
for (let i = 0, ii = operatorListChunk.length; i < ii; i++) {
|
823
|
+
intentState.operatorList.fnArray.push(operatorListChunk.fnArray[i]);
|
824
|
+
intentState.operatorList.argsArray.push(operatorListChunk.argsArray[i]);
|
825
|
+
}
|
826
|
+
|
827
|
+
intentState.operatorList.lastChunk = operatorListChunk.lastChunk;
|
1062
828
|
|
1063
|
-
|
1064
|
-
|
1065
|
-
|
1066
|
-
}
|
829
|
+
for (let i = 0; i < intentState.renderTasks.length; i++) {
|
830
|
+
intentState.renderTasks[i].operatorListChanged();
|
831
|
+
}
|
1067
832
|
|
1068
|
-
|
1069
|
-
|
1070
|
-
|
833
|
+
if (operatorListChunk.lastChunk) {
|
834
|
+
this._tryCleanup();
|
835
|
+
}
|
836
|
+
}
|
1071
837
|
|
1072
|
-
|
838
|
+
_pumpOperatorList(args) {
|
839
|
+
(0, _util.assert)(args.intent, 'PDFPageProxy._pumpOperatorList: Expected "intent" argument.');
|
1073
840
|
|
1074
|
-
|
1075
|
-
var transferable = transfers && transfers.includes(buffer);
|
841
|
+
const readableStream = this._transport.messageHandler.sendWithStream("GetOperatorList", args);
|
1076
842
|
|
1077
|
-
|
1078
|
-
|
1079
|
-
|
1080
|
-
result = new value.constructor(buffer, value.byteOffset, value.byteLength);
|
1081
|
-
} else {
|
1082
|
-
result = new value.constructor(value);
|
1083
|
-
}
|
843
|
+
const reader = readableStream.getReader();
|
844
|
+
const intentState = this.intentStates[args.intent];
|
845
|
+
intentState.streamReader = reader;
|
1084
846
|
|
1085
|
-
|
1086
|
-
|
847
|
+
const pump = () => {
|
848
|
+
reader.read().then(({
|
849
|
+
value,
|
850
|
+
done
|
851
|
+
}) => {
|
852
|
+
if (done) {
|
853
|
+
intentState.streamReader = null;
|
854
|
+
return;
|
1087
855
|
}
|
1088
856
|
|
1089
|
-
|
1090
|
-
|
857
|
+
if (this._transport.destroyed) {
|
858
|
+
return;
|
859
|
+
}
|
1091
860
|
|
1092
|
-
|
1093
|
-
var desc = void 0,
|
1094
|
-
p = value;
|
861
|
+
this._renderPageChunk(value, intentState);
|
1095
862
|
|
1096
|
-
|
1097
|
-
|
1098
|
-
|
863
|
+
pump();
|
864
|
+
}, reason => {
|
865
|
+
intentState.streamReader = null;
|
866
|
+
|
867
|
+
if (this._transport.destroyed) {
|
868
|
+
return;
|
869
|
+
}
|
1099
870
|
|
1100
|
-
|
1101
|
-
|
871
|
+
if (intentState.operatorList) {
|
872
|
+
intentState.operatorList.lastChunk = true;
|
873
|
+
|
874
|
+
for (let i = 0; i < intentState.renderTasks.length; i++) {
|
875
|
+
intentState.renderTasks[i].operatorListChanged();
|
1102
876
|
}
|
1103
877
|
|
1104
|
-
|
878
|
+
this._tryCleanup();
|
1105
879
|
}
|
1106
880
|
|
1107
|
-
|
881
|
+
if (intentState.displayReadyCapability) {
|
882
|
+
intentState.displayReadyCapability.reject(reason);
|
883
|
+
} else if (intentState.opListReadCapability) {
|
884
|
+
intentState.opListReadCapability.reject(reason);
|
885
|
+
} else {
|
886
|
+
throw reason;
|
887
|
+
}
|
888
|
+
});
|
889
|
+
};
|
890
|
+
|
891
|
+
pump();
|
892
|
+
}
|
893
|
+
|
894
|
+
_abortOperatorList({
|
895
|
+
intentState,
|
896
|
+
reason,
|
897
|
+
force = false
|
898
|
+
}) {
|
899
|
+
(0, _util.assert)(reason instanceof Error || typeof reason === "object" && reason !== null, 'PDFPageProxy._abortOperatorList: Expected "reason" argument.');
|
900
|
+
|
901
|
+
if (!intentState.streamReader) {
|
902
|
+
return;
|
903
|
+
}
|
904
|
+
|
905
|
+
if (!force) {
|
906
|
+
if (intentState.renderTasks.length !== 0) {
|
907
|
+
return;
|
1108
908
|
}
|
1109
909
|
|
1110
|
-
if (
|
1111
|
-
|
1112
|
-
|
1113
|
-
|
910
|
+
if (reason instanceof _display_utils.RenderingCancelledException) {
|
911
|
+
intentState.streamReaderCancelTimeout = setTimeout(() => {
|
912
|
+
this._abortOperatorList({
|
913
|
+
intentState,
|
914
|
+
reason,
|
915
|
+
force: true
|
1114
916
|
});
|
1115
|
-
}, this);
|
1116
917
|
|
918
|
+
intentState.streamReaderCancelTimeout = null;
|
919
|
+
}, RENDERING_CANCELLED_TIMEOUT);
|
1117
920
|
return;
|
1118
921
|
}
|
922
|
+
}
|
1119
923
|
|
1120
|
-
|
1121
|
-
|
1122
|
-
data: cloneValue(obj)
|
1123
|
-
};
|
924
|
+
intentState.streamReader.cancel(new _util.AbortException(reason && reason.message));
|
925
|
+
intentState.streamReader = null;
|
1124
926
|
|
1125
|
-
|
1126
|
-
|
1127
|
-
listener.call(this, e);
|
1128
|
-
}, _this5);
|
1129
|
-
});
|
927
|
+
if (this._transport.destroyed) {
|
928
|
+
return;
|
1130
929
|
}
|
1131
|
-
}, {
|
1132
|
-
key: "addEventListener",
|
1133
|
-
value: function addEventListener(name, listener) {
|
1134
|
-
this._listeners.push(listener);
|
1135
|
-
}
|
1136
|
-
}, {
|
1137
|
-
key: "removeEventListener",
|
1138
|
-
value: function removeEventListener(name, listener) {
|
1139
|
-
var i = this._listeners.indexOf(listener);
|
1140
930
|
|
1141
|
-
|
931
|
+
Object.keys(this.intentStates).some(intent => {
|
932
|
+
if (this.intentStates[intent] === intentState) {
|
933
|
+
delete this.intentStates[intent];
|
934
|
+
return true;
|
935
|
+
}
|
936
|
+
|
937
|
+
return false;
|
938
|
+
});
|
939
|
+
this.cleanup();
|
940
|
+
}
|
941
|
+
|
942
|
+
get stats() {
|
943
|
+
return this._stats;
|
944
|
+
}
|
945
|
+
|
946
|
+
}
|
947
|
+
|
948
|
+
exports.PDFPageProxy = PDFPageProxy;
|
949
|
+
|
950
|
+
class LoopbackPort {
|
951
|
+
constructor(defer = true) {
|
952
|
+
this._listeners = [];
|
953
|
+
this._defer = defer;
|
954
|
+
this._deferred = Promise.resolve(undefined);
|
955
|
+
}
|
956
|
+
|
957
|
+
postMessage(obj, transfers) {
|
958
|
+
function cloneValue(value) {
|
959
|
+
if (typeof value !== "object" || value === null) {
|
960
|
+
return value;
|
961
|
+
}
|
962
|
+
|
963
|
+
if (cloned.has(value)) {
|
964
|
+
return cloned.get(value);
|
965
|
+
}
|
966
|
+
|
967
|
+
let buffer, result;
|
968
|
+
|
969
|
+
if ((buffer = value.buffer) && (0, _util.isArrayBuffer)(buffer)) {
|
970
|
+
const transferable = transfers && transfers.includes(buffer);
|
971
|
+
|
972
|
+
if (transferable) {
|
973
|
+
result = new value.constructor(buffer, value.byteOffset, value.byteLength);
|
974
|
+
} else {
|
975
|
+
result = new value.constructor(value);
|
976
|
+
}
|
977
|
+
|
978
|
+
cloned.set(value, result);
|
979
|
+
return result;
|
980
|
+
}
|
981
|
+
|
982
|
+
result = Array.isArray(value) ? [] : {};
|
983
|
+
cloned.set(value, result);
|
984
|
+
|
985
|
+
for (const i in value) {
|
986
|
+
let desc,
|
987
|
+
p = value;
|
988
|
+
|
989
|
+
while (!(desc = Object.getOwnPropertyDescriptor(p, i))) {
|
990
|
+
p = Object.getPrototypeOf(p);
|
991
|
+
}
|
992
|
+
|
993
|
+
if (typeof desc.value === "undefined") {
|
994
|
+
continue;
|
995
|
+
}
|
996
|
+
|
997
|
+
if (typeof desc.value === "function") {
|
998
|
+
if (value.hasOwnProperty && value.hasOwnProperty(i)) {
|
999
|
+
throw new Error(`LoopbackPort.postMessage - cannot clone: ${value[i]}`);
|
1000
|
+
}
|
1001
|
+
|
1002
|
+
continue;
|
1003
|
+
}
|
1004
|
+
|
1005
|
+
result[i] = cloneValue(desc.value);
|
1006
|
+
}
|
1007
|
+
|
1008
|
+
return result;
|
1142
1009
|
}
|
1143
|
-
|
1144
|
-
|
1145
|
-
|
1146
|
-
|
1010
|
+
|
1011
|
+
if (!this._defer) {
|
1012
|
+
this._listeners.forEach(listener => {
|
1013
|
+
listener.call(this, {
|
1014
|
+
data: obj
|
1015
|
+
});
|
1016
|
+
});
|
1017
|
+
|
1018
|
+
return;
|
1147
1019
|
}
|
1148
|
-
}]);
|
1149
1020
|
|
1150
|
-
|
1151
|
-
|
1021
|
+
const cloned = new WeakMap();
|
1022
|
+
const e = {
|
1023
|
+
data: cloneValue(obj)
|
1024
|
+
};
|
1025
|
+
|
1026
|
+
this._deferred.then(() => {
|
1027
|
+
this._listeners.forEach(listener => {
|
1028
|
+
listener.call(this, e);
|
1029
|
+
});
|
1030
|
+
});
|
1031
|
+
}
|
1032
|
+
|
1033
|
+
addEventListener(name, listener) {
|
1034
|
+
this._listeners.push(listener);
|
1035
|
+
}
|
1036
|
+
|
1037
|
+
removeEventListener(name, listener) {
|
1038
|
+
const i = this._listeners.indexOf(listener);
|
1039
|
+
|
1040
|
+
this._listeners.splice(i, 1);
|
1041
|
+
}
|
1042
|
+
|
1043
|
+
terminate() {
|
1044
|
+
this._listeners.length = 0;
|
1045
|
+
}
|
1046
|
+
|
1047
|
+
}
|
1152
1048
|
|
1153
1049
|
exports.LoopbackPort = LoopbackPort;
|
1154
1050
|
|
1155
|
-
|
1156
|
-
|
1157
|
-
|
1158
|
-
|
1051
|
+
const PDFWorker = function PDFWorkerClosure() {
|
1052
|
+
const pdfWorkerPorts = new WeakMap();
|
1053
|
+
let isWorkerDisabled = false;
|
1054
|
+
let fallbackWorkerSrc;
|
1055
|
+
let nextFakeWorkerId = 0;
|
1056
|
+
let fakeWorkerCapability;
|
1057
|
+
|
1058
|
+
if (_is_node.isNodeJS && typeof require === "function") {
|
1059
|
+
isWorkerDisabled = true;
|
1060
|
+
fallbackWorkerSrc = "../pdf.worker.js";
|
1061
|
+
} else if (typeof document === "object" && "currentScript" in document) {
|
1062
|
+
const pdfjsFilePath = document.currentScript && document.currentScript.src;
|
1063
|
+
|
1064
|
+
if (pdfjsFilePath) {
|
1065
|
+
fallbackWorkerSrc = pdfjsFilePath.replace(/(\.(?:min\.)?js)(\?.*)?$/i, ".worker$1$2");
|
1066
|
+
}
|
1067
|
+
}
|
1159
1068
|
|
1160
|
-
function
|
1069
|
+
function getWorkerSrc() {
|
1161
1070
|
if (_worker_options.GlobalWorkerOptions.workerSrc) {
|
1162
1071
|
return _worker_options.GlobalWorkerOptions.workerSrc;
|
1163
1072
|
}
|
1164
1073
|
|
1165
|
-
if (typeof fallbackWorkerSrc !==
|
1074
|
+
if (typeof fallbackWorkerSrc !== "undefined") {
|
1075
|
+
if (!_is_node.isNodeJS) {
|
1076
|
+
(0, _display_utils.deprecated)('No "GlobalWorkerOptions.workerSrc" specified.');
|
1077
|
+
}
|
1078
|
+
|
1166
1079
|
return fallbackWorkerSrc;
|
1167
1080
|
}
|
1168
1081
|
|
@@ -1170,66 +1083,60 @@ var PDFWorker = function PDFWorkerClosure() {
|
|
1170
1083
|
}
|
1171
1084
|
|
1172
1085
|
function getMainThreadWorkerMessageHandler() {
|
1086
|
+
let mainWorkerMessageHandler;
|
1087
|
+
|
1173
1088
|
try {
|
1174
|
-
|
1175
|
-
return window.pdfjsWorker && window.pdfjsWorker.WorkerMessageHandler;
|
1176
|
-
}
|
1089
|
+
mainWorkerMessageHandler = globalThis.pdfjsWorker && globalThis.pdfjsWorker.WorkerMessageHandler;
|
1177
1090
|
} catch (ex) {}
|
1178
1091
|
|
1179
|
-
return null;
|
1092
|
+
return mainWorkerMessageHandler || null;
|
1180
1093
|
}
|
1181
1094
|
|
1182
1095
|
function setupFakeWorkerGlobal() {
|
1183
|
-
if (
|
1184
|
-
return
|
1096
|
+
if (fakeWorkerCapability) {
|
1097
|
+
return fakeWorkerCapability.promise;
|
1185
1098
|
}
|
1186
1099
|
|
1187
|
-
|
1188
|
-
var mainWorkerMessageHandler = getMainThreadWorkerMessageHandler();
|
1100
|
+
fakeWorkerCapability = (0, _util.createPromiseCapability)();
|
1189
1101
|
|
1190
|
-
|
1191
|
-
|
1192
|
-
return fakeWorkerFilesLoadedCapability.promise;
|
1193
|
-
}
|
1102
|
+
const loader = async function () {
|
1103
|
+
const mainWorkerMessageHandler = getMainThreadWorkerMessageHandler();
|
1194
1104
|
|
1195
|
-
|
1196
|
-
|
1197
|
-
|
1198
|
-
|
1105
|
+
if (mainWorkerMessageHandler) {
|
1106
|
+
return mainWorkerMessageHandler;
|
1107
|
+
}
|
1108
|
+
|
1109
|
+
if (_is_node.isNodeJS && typeof require === "function") {
|
1110
|
+
const worker = eval("require")(getWorkerSrc());
|
1111
|
+
return worker.WorkerMessageHandler;
|
1112
|
+
}
|
1113
|
+
|
1114
|
+
await (0, _display_utils.loadScript)(getWorkerSrc());
|
1115
|
+
return window.pdfjsWorker.WorkerMessageHandler;
|
1199
1116
|
};
|
1200
1117
|
|
1201
|
-
loader().then(
|
1202
|
-
return
|
1118
|
+
loader().then(fakeWorkerCapability.resolve, fakeWorkerCapability.reject);
|
1119
|
+
return fakeWorkerCapability.promise;
|
1203
1120
|
}
|
1204
1121
|
|
1205
1122
|
function createCDNWrapper(url) {
|
1206
|
-
|
1207
|
-
return
|
1208
|
-
}
|
1209
|
-
|
1210
|
-
var PDFWorker =
|
1211
|
-
/*#__PURE__*/
|
1212
|
-
function () {
|
1213
|
-
function PDFWorker() {
|
1214
|
-
var _ref6 = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},
|
1215
|
-
_ref6$name = _ref6.name,
|
1216
|
-
name = _ref6$name === void 0 ? null : _ref6$name,
|
1217
|
-
_ref6$port = _ref6.port,
|
1218
|
-
port = _ref6$port === void 0 ? null : _ref6$port,
|
1219
|
-
_ref6$postMessageTran = _ref6.postMessageTransfers,
|
1220
|
-
postMessageTransfers = _ref6$postMessageTran === void 0 ? true : _ref6$postMessageTran,
|
1221
|
-
_ref6$verbosity = _ref6.verbosity,
|
1222
|
-
verbosity = _ref6$verbosity === void 0 ? (0, _util.getVerbosityLevel)() : _ref6$verbosity;
|
1223
|
-
|
1224
|
-
_classCallCheck(this, PDFWorker);
|
1123
|
+
const wrapper = "importScripts('" + url + "');";
|
1124
|
+
return URL.createObjectURL(new Blob([wrapper]));
|
1125
|
+
}
|
1225
1126
|
|
1127
|
+
class PDFWorker {
|
1128
|
+
constructor({
|
1129
|
+
name = null,
|
1130
|
+
port = null,
|
1131
|
+
verbosity = (0, _util.getVerbosityLevel)()
|
1132
|
+
} = {}) {
|
1226
1133
|
if (port && pdfWorkerPorts.has(port)) {
|
1227
|
-
throw new Error(
|
1134
|
+
throw new Error("Cannot use more than one PDFWorker per port");
|
1228
1135
|
}
|
1229
1136
|
|
1230
1137
|
this.name = name;
|
1231
1138
|
this.destroyed = false;
|
1232
|
-
this.postMessageTransfers =
|
1139
|
+
this.postMessageTransfers = true;
|
1233
1140
|
this.verbosity = verbosity;
|
1234
1141
|
this._readyCapability = (0, _util.createPromiseCapability)();
|
1235
1142
|
this._port = null;
|
@@ -1247,215 +1154,199 @@ var PDFWorker = function PDFWorkerClosure() {
|
|
1247
1154
|
this._initialize();
|
1248
1155
|
}
|
1249
1156
|
|
1250
|
-
|
1251
|
-
|
1252
|
-
|
1253
|
-
this._port = port;
|
1254
|
-
this._messageHandler = new _message_handler.MessageHandler('main', 'worker', port);
|
1157
|
+
get promise() {
|
1158
|
+
return this._readyCapability.promise;
|
1159
|
+
}
|
1255
1160
|
|
1256
|
-
|
1161
|
+
get port() {
|
1162
|
+
return this._port;
|
1163
|
+
}
|
1257
1164
|
|
1258
|
-
|
1259
|
-
|
1260
|
-
}
|
1261
|
-
key: "_initialize",
|
1262
|
-
value: function _initialize() {
|
1263
|
-
var _this6 = this;
|
1165
|
+
get messageHandler() {
|
1166
|
+
return this._messageHandler;
|
1167
|
+
}
|
1264
1168
|
|
1265
|
-
|
1266
|
-
|
1169
|
+
_initializeFromPort(port) {
|
1170
|
+
this._port = port;
|
1171
|
+
this._messageHandler = new _message_handler.MessageHandler("main", "worker", port);
|
1267
1172
|
|
1268
|
-
|
1269
|
-
if (!(0, _util.isSameOrigin)(window.location.href, workerSrc)) {
|
1270
|
-
workerSrc = createCDNWrapper(new _util.URL(workerSrc, window.location).href);
|
1271
|
-
}
|
1173
|
+
this._messageHandler.on("ready", function () {});
|
1272
1174
|
|
1273
|
-
|
1274
|
-
|
1175
|
+
this._readyCapability.resolve();
|
1176
|
+
}
|
1275
1177
|
|
1276
|
-
|
1277
|
-
|
1278
|
-
|
1279
|
-
worker.terminate();
|
1178
|
+
_initialize() {
|
1179
|
+
if (typeof Worker !== "undefined" && !isWorkerDisabled && !getMainThreadWorkerMessageHandler()) {
|
1180
|
+
let workerSrc = getWorkerSrc();
|
1280
1181
|
|
1281
|
-
|
1282
|
-
|
1283
|
-
|
1284
|
-
|
1285
|
-
}
|
1286
|
-
};
|
1182
|
+
try {
|
1183
|
+
if (!(0, _util.isSameOrigin)(window.location.href, workerSrc)) {
|
1184
|
+
workerSrc = createCDNWrapper(new URL(workerSrc, window.location).href);
|
1185
|
+
}
|
1287
1186
|
|
1288
|
-
|
1289
|
-
|
1290
|
-
terminateEarly();
|
1291
|
-
}
|
1292
|
-
};
|
1187
|
+
const worker = new Worker(workerSrc);
|
1188
|
+
const messageHandler = new _message_handler.MessageHandler("main", "worker", worker);
|
1293
1189
|
|
1294
|
-
|
1295
|
-
|
1296
|
-
|
1190
|
+
const terminateEarly = () => {
|
1191
|
+
worker.removeEventListener("error", onWorkerError);
|
1192
|
+
messageHandler.destroy();
|
1193
|
+
worker.terminate();
|
1297
1194
|
|
1298
|
-
|
1299
|
-
|
1300
|
-
|
1301
|
-
|
1195
|
+
if (this.destroyed) {
|
1196
|
+
this._readyCapability.reject(new Error("Worker was destroyed"));
|
1197
|
+
} else {
|
1198
|
+
this._setupFakeWorker();
|
1199
|
+
}
|
1200
|
+
};
|
1302
1201
|
|
1303
|
-
|
1304
|
-
|
1305
|
-
|
1306
|
-
|
1202
|
+
const onWorkerError = () => {
|
1203
|
+
if (!this._webWorker) {
|
1204
|
+
terminateEarly();
|
1205
|
+
}
|
1206
|
+
};
|
1307
1207
|
|
1308
|
-
|
1309
|
-
|
1310
|
-
|
1208
|
+
worker.addEventListener("error", onWorkerError);
|
1209
|
+
messageHandler.on("test", data => {
|
1210
|
+
worker.removeEventListener("error", onWorkerError);
|
1311
1211
|
|
1312
|
-
|
1212
|
+
if (this.destroyed) {
|
1213
|
+
terminateEarly();
|
1214
|
+
return;
|
1215
|
+
}
|
1313
1216
|
|
1314
|
-
|
1315
|
-
|
1316
|
-
|
1317
|
-
|
1318
|
-
_this6._setupFakeWorker();
|
1217
|
+
if (data) {
|
1218
|
+
this._messageHandler = messageHandler;
|
1219
|
+
this._port = worker;
|
1220
|
+
this._webWorker = worker;
|
1319
1221
|
|
1320
|
-
|
1321
|
-
|
1222
|
+
if (!data.supportTransfers) {
|
1223
|
+
this.postMessageTransfers = false;
|
1322
1224
|
}
|
1323
|
-
});
|
1324
|
-
messageHandler.on('ready', function (data) {
|
1325
|
-
worker.removeEventListener('error', onWorkerError);
|
1326
1225
|
|
1327
|
-
|
1328
|
-
terminateEarly();
|
1329
|
-
return;
|
1330
|
-
}
|
1226
|
+
this._readyCapability.resolve();
|
1331
1227
|
|
1332
|
-
|
1333
|
-
|
1334
|
-
}
|
1335
|
-
|
1336
|
-
|
1337
|
-
});
|
1228
|
+
messageHandler.send("configure", {
|
1229
|
+
verbosity: this.verbosity
|
1230
|
+
});
|
1231
|
+
} else {
|
1232
|
+
this._setupFakeWorker();
|
1338
1233
|
|
1339
|
-
|
1340
|
-
|
1234
|
+
messageHandler.destroy();
|
1235
|
+
worker.terminate();
|
1236
|
+
}
|
1237
|
+
});
|
1238
|
+
messageHandler.on("ready", data => {
|
1239
|
+
worker.removeEventListener("error", onWorkerError);
|
1341
1240
|
|
1342
|
-
|
1343
|
-
|
1344
|
-
|
1345
|
-
|
1346
|
-
testObj[0] = 0;
|
1347
|
-
messageHandler.send('test', testObj);
|
1348
|
-
}
|
1349
|
-
};
|
1241
|
+
if (this.destroyed) {
|
1242
|
+
terminateEarly();
|
1243
|
+
return;
|
1244
|
+
}
|
1350
1245
|
|
1351
|
-
|
1352
|
-
|
1353
|
-
|
1354
|
-
|
1355
|
-
|
1246
|
+
try {
|
1247
|
+
sendTest();
|
1248
|
+
} catch (e) {
|
1249
|
+
this._setupFakeWorker();
|
1250
|
+
}
|
1251
|
+
});
|
1252
|
+
|
1253
|
+
const sendTest = () => {
|
1254
|
+
const testObj = new Uint8Array([this.postMessageTransfers ? 255 : 0]);
|
1255
|
+
|
1256
|
+
try {
|
1257
|
+
messageHandler.send("test", testObj, [testObj.buffer]);
|
1258
|
+
} catch (ex) {
|
1259
|
+
(0, _util.warn)("Cannot use postMessage transfers.");
|
1260
|
+
testObj[0] = 0;
|
1261
|
+
messageHandler.send("test", testObj);
|
1262
|
+
}
|
1263
|
+
};
|
1264
|
+
|
1265
|
+
sendTest();
|
1266
|
+
return;
|
1267
|
+
} catch (e) {
|
1268
|
+
(0, _util.info)("The worker has been disabled.");
|
1356
1269
|
}
|
1270
|
+
}
|
1357
1271
|
|
1358
|
-
|
1272
|
+
this._setupFakeWorker();
|
1273
|
+
}
|
1274
|
+
|
1275
|
+
_setupFakeWorker() {
|
1276
|
+
if (!isWorkerDisabled) {
|
1277
|
+
(0, _util.warn)("Setting up fake worker.");
|
1278
|
+
isWorkerDisabled = true;
|
1359
1279
|
}
|
1360
|
-
}, {
|
1361
|
-
key: "_setupFakeWorker",
|
1362
|
-
value: function _setupFakeWorker() {
|
1363
|
-
var _this7 = this;
|
1364
1280
|
|
1365
|
-
|
1366
|
-
|
1367
|
-
|
1368
|
-
}
|
1281
|
+
setupFakeWorkerGlobal().then(WorkerMessageHandler => {
|
1282
|
+
if (this.destroyed) {
|
1283
|
+
this._readyCapability.reject(new Error("Worker was destroyed"));
|
1369
1284
|
|
1370
|
-
|
1371
|
-
|
1372
|
-
_this7._readyCapability.reject(new Error('Worker was destroyed'));
|
1285
|
+
return;
|
1286
|
+
}
|
1373
1287
|
|
1374
|
-
|
1375
|
-
|
1288
|
+
const port = new LoopbackPort();
|
1289
|
+
this._port = port;
|
1290
|
+
const id = "fake" + nextFakeWorkerId++;
|
1291
|
+
const workerHandler = new _message_handler.MessageHandler(id + "_worker", id, port);
|
1292
|
+
WorkerMessageHandler.setup(workerHandler, port);
|
1293
|
+
const messageHandler = new _message_handler.MessageHandler(id, id + "_worker", port);
|
1294
|
+
this._messageHandler = messageHandler;
|
1376
1295
|
|
1377
|
-
|
1378
|
-
_this7._port = port;
|
1379
|
-
var id = 'fake' + nextFakeWorkerId++;
|
1380
|
-
var workerHandler = new _message_handler.MessageHandler(id + '_worker', id, port);
|
1381
|
-
WorkerMessageHandler.setup(workerHandler, port);
|
1382
|
-
var messageHandler = new _message_handler.MessageHandler(id, id + '_worker', port);
|
1383
|
-
_this7._messageHandler = messageHandler;
|
1296
|
+
this._readyCapability.resolve();
|
1384
1297
|
|
1385
|
-
|
1386
|
-
|
1387
|
-
_this7._readyCapability.reject(new Error("Setting up fake worker failed: \"".concat(reason.message, "\".")));
|
1298
|
+
messageHandler.send("configure", {
|
1299
|
+
verbosity: this.verbosity
|
1388
1300
|
});
|
1389
|
-
}
|
1390
|
-
|
1391
|
-
|
1392
|
-
|
1393
|
-
this.destroyed = true;
|
1301
|
+
}).catch(reason => {
|
1302
|
+
this._readyCapability.reject(new Error(`Setting up fake worker failed: "${reason.message}".`));
|
1303
|
+
});
|
1304
|
+
}
|
1394
1305
|
|
1395
|
-
|
1396
|
-
|
1306
|
+
destroy() {
|
1307
|
+
this.destroyed = true;
|
1397
1308
|
|
1398
|
-
|
1399
|
-
|
1309
|
+
if (this._webWorker) {
|
1310
|
+
this._webWorker.terminate();
|
1311
|
+
|
1312
|
+
this._webWorker = null;
|
1313
|
+
}
|
1400
1314
|
|
1401
|
-
|
1402
|
-
|
1315
|
+
pdfWorkerPorts.delete(this._port);
|
1316
|
+
this._port = null;
|
1403
1317
|
|
1404
|
-
|
1405
|
-
|
1318
|
+
if (this._messageHandler) {
|
1319
|
+
this._messageHandler.destroy();
|
1406
1320
|
|
1407
|
-
|
1408
|
-
}
|
1409
|
-
}
|
1410
|
-
}, {
|
1411
|
-
key: "promise",
|
1412
|
-
get: function get() {
|
1413
|
-
return this._readyCapability.promise;
|
1321
|
+
this._messageHandler = null;
|
1414
1322
|
}
|
1415
|
-
}
|
1416
|
-
key: "port",
|
1417
|
-
get: function get() {
|
1418
|
-
return this._port;
|
1419
|
-
}
|
1420
|
-
}, {
|
1421
|
-
key: "messageHandler",
|
1422
|
-
get: function get() {
|
1423
|
-
return this._messageHandler;
|
1424
|
-
}
|
1425
|
-
}], [{
|
1426
|
-
key: "fromPort",
|
1427
|
-
value: function fromPort(params) {
|
1428
|
-
if (!params || !params.port) {
|
1429
|
-
throw new Error('PDFWorker.fromPort - invalid method signature.');
|
1430
|
-
}
|
1431
|
-
|
1432
|
-
if (pdfWorkerPorts.has(params.port)) {
|
1433
|
-
return pdfWorkerPorts.get(params.port);
|
1434
|
-
}
|
1323
|
+
}
|
1435
1324
|
|
1436
|
-
|
1325
|
+
static fromPort(params) {
|
1326
|
+
if (!params || !params.port) {
|
1327
|
+
throw new Error("PDFWorker.fromPort - invalid method signature.");
|
1437
1328
|
}
|
1438
|
-
|
1439
|
-
|
1440
|
-
|
1441
|
-
return _getWorkerSrc();
|
1329
|
+
|
1330
|
+
if (pdfWorkerPorts.has(params.port)) {
|
1331
|
+
return pdfWorkerPorts.get(params.port);
|
1442
1332
|
}
|
1443
|
-
}]);
|
1444
1333
|
|
1445
|
-
|
1446
|
-
|
1334
|
+
return new PDFWorker(params);
|
1335
|
+
}
|
1336
|
+
|
1337
|
+
static getWorkerSrc() {
|
1338
|
+
return getWorkerSrc();
|
1339
|
+
}
|
1340
|
+
|
1341
|
+
}
|
1447
1342
|
|
1448
1343
|
return PDFWorker;
|
1449
1344
|
}();
|
1450
1345
|
|
1451
1346
|
exports.PDFWorker = PDFWorker;
|
1452
1347
|
|
1453
|
-
|
1454
|
-
|
1455
|
-
function () {
|
1456
|
-
function WorkerTransport(messageHandler, loadingTask, networkStream, params) {
|
1457
|
-
_classCallCheck(this, WorkerTransport);
|
1458
|
-
|
1348
|
+
class WorkerTransport {
|
1349
|
+
constructor(messageHandler, loadingTask, networkStream, params) {
|
1459
1350
|
this.messageHandler = messageHandler;
|
1460
1351
|
this.loadingTask = loadingTask;
|
1461
1352
|
this.commonObjs = new PDFObjects();
|
@@ -1480,735 +1371,591 @@ function () {
|
|
1480
1371
|
this.setupMessageHandler();
|
1481
1372
|
}
|
1482
1373
|
|
1483
|
-
|
1484
|
-
|
1485
|
-
|
1486
|
-
|
1374
|
+
destroy() {
|
1375
|
+
if (this.destroyCapability) {
|
1376
|
+
return this.destroyCapability.promise;
|
1377
|
+
}
|
1487
1378
|
|
1488
|
-
|
1489
|
-
|
1490
|
-
}
|
1379
|
+
this.destroyed = true;
|
1380
|
+
this.destroyCapability = (0, _util.createPromiseCapability)();
|
1491
1381
|
|
1492
|
-
|
1493
|
-
this.
|
1382
|
+
if (this._passwordCapability) {
|
1383
|
+
this._passwordCapability.reject(new Error("Worker was destroyed during onPassword callback"));
|
1384
|
+
}
|
1494
1385
|
|
1495
|
-
|
1496
|
-
|
1386
|
+
const waitOn = [];
|
1387
|
+
this.pageCache.forEach(function (page) {
|
1388
|
+
if (page) {
|
1389
|
+
waitOn.push(page._destroy());
|
1390
|
+
}
|
1391
|
+
});
|
1392
|
+
this.pageCache.length = 0;
|
1393
|
+
this.pagePromises.length = 0;
|
1394
|
+
const terminated = this.messageHandler.sendWithPromise("Terminate", null);
|
1395
|
+
waitOn.push(terminated);
|
1396
|
+
Promise.all(waitOn).then(() => {
|
1397
|
+
this.fontLoader.clear();
|
1398
|
+
|
1399
|
+
if (this._networkStream) {
|
1400
|
+
this._networkStream.cancelAllRequests(new _util.AbortException("Worker was terminated."));
|
1497
1401
|
}
|
1498
1402
|
|
1499
|
-
|
1500
|
-
|
1501
|
-
|
1502
|
-
|
1503
|
-
}
|
1504
|
-
});
|
1505
|
-
this.pageCache = [];
|
1506
|
-
this.pagePromises = [];
|
1507
|
-
var terminated = this.messageHandler.sendWithPromise('Terminate', null);
|
1508
|
-
waitOn.push(terminated);
|
1509
|
-
Promise.all(waitOn).then(function () {
|
1510
|
-
_this8.fontLoader.clear();
|
1511
|
-
|
1512
|
-
if (_this8._networkStream) {
|
1513
|
-
_this8._networkStream.cancelAllRequests();
|
1514
|
-
}
|
1515
|
-
|
1516
|
-
if (_this8.messageHandler) {
|
1517
|
-
_this8.messageHandler.destroy();
|
1403
|
+
if (this.messageHandler) {
|
1404
|
+
this.messageHandler.destroy();
|
1405
|
+
this.messageHandler = null;
|
1406
|
+
}
|
1518
1407
|
|
1519
|
-
|
1520
|
-
|
1408
|
+
this.destroyCapability.resolve();
|
1409
|
+
}, this.destroyCapability.reject);
|
1410
|
+
return this.destroyCapability.promise;
|
1411
|
+
}
|
1521
1412
|
|
1522
|
-
|
1523
|
-
|
1524
|
-
|
1525
|
-
|
1526
|
-
|
1527
|
-
|
1528
|
-
|
1529
|
-
|
1530
|
-
|
1531
|
-
|
1532
|
-
|
1533
|
-
|
1534
|
-
|
1535
|
-
this._fullReader = this._networkStream.getFullReader();
|
1536
|
-
|
1537
|
-
this._fullReader.onProgress = function (evt) {
|
1538
|
-
_this9._lastProgress = {
|
1539
|
-
loaded: evt.loaded,
|
1540
|
-
total: evt.total
|
1541
|
-
};
|
1413
|
+
setupMessageHandler() {
|
1414
|
+
const {
|
1415
|
+
messageHandler,
|
1416
|
+
loadingTask
|
1417
|
+
} = this;
|
1418
|
+
messageHandler.on("GetReader", (data, sink) => {
|
1419
|
+
(0, _util.assert)(this._networkStream, "GetReader - no `IPDFStream` instance available.");
|
1420
|
+
this._fullReader = this._networkStream.getFullReader();
|
1421
|
+
|
1422
|
+
this._fullReader.onProgress = evt => {
|
1423
|
+
this._lastProgress = {
|
1424
|
+
loaded: evt.loaded,
|
1425
|
+
total: evt.total
|
1542
1426
|
};
|
1427
|
+
};
|
1543
1428
|
|
1544
|
-
|
1545
|
-
|
1546
|
-
|
1547
|
-
|
1429
|
+
sink.onPull = () => {
|
1430
|
+
this._fullReader.read().then(function ({
|
1431
|
+
value,
|
1432
|
+
done
|
1433
|
+
}) {
|
1434
|
+
if (done) {
|
1435
|
+
sink.close();
|
1436
|
+
return;
|
1437
|
+
}
|
1548
1438
|
|
1549
|
-
|
1550
|
-
|
1551
|
-
|
1552
|
-
|
1439
|
+
(0, _util.assert)((0, _util.isArrayBuffer)(value), "GetReader - expected an ArrayBuffer.");
|
1440
|
+
sink.enqueue(new Uint8Array(value), 1, [value]);
|
1441
|
+
}).catch(reason => {
|
1442
|
+
sink.error(reason);
|
1443
|
+
});
|
1444
|
+
};
|
1553
1445
|
|
1554
|
-
|
1555
|
-
|
1556
|
-
|
1557
|
-
|
1558
|
-
|
1559
|
-
|
1446
|
+
sink.onCancel = reason => {
|
1447
|
+
this._fullReader.cancel(reason);
|
1448
|
+
};
|
1449
|
+
});
|
1450
|
+
messageHandler.on("ReaderHeadersReady", data => {
|
1451
|
+
const headersCapability = (0, _util.createPromiseCapability)();
|
1452
|
+
const fullReader = this._fullReader;
|
1453
|
+
fullReader.headersReady.then(() => {
|
1454
|
+
if (!fullReader.isStreamingSupported || !fullReader.isRangeSupported) {
|
1455
|
+
if (this._lastProgress && loadingTask.onProgress) {
|
1456
|
+
loadingTask.onProgress(this._lastProgress);
|
1457
|
+
}
|
1560
1458
|
|
1561
|
-
|
1562
|
-
|
1563
|
-
|
1564
|
-
|
1565
|
-
|
1566
|
-
|
1567
|
-
|
1568
|
-
var headersCapability = (0, _util.createPromiseCapability)();
|
1569
|
-
var fullReader = this._fullReader;
|
1570
|
-
fullReader.headersReady.then(function () {
|
1571
|
-
if (!fullReader.isStreamingSupported || !fullReader.isRangeSupported) {
|
1572
|
-
if (_this10._lastProgress && loadingTask.onProgress) {
|
1573
|
-
loadingTask.onProgress(_this10._lastProgress);
|
1459
|
+
fullReader.onProgress = evt => {
|
1460
|
+
if (loadingTask.onProgress) {
|
1461
|
+
loadingTask.onProgress({
|
1462
|
+
loaded: evt.loaded,
|
1463
|
+
total: evt.total
|
1464
|
+
});
|
1574
1465
|
}
|
1466
|
+
};
|
1467
|
+
}
|
1575
1468
|
|
1576
|
-
|
1577
|
-
|
1578
|
-
|
1579
|
-
|
1580
|
-
|
1581
|
-
|
1582
|
-
|
1583
|
-
|
1584
|
-
|
1585
|
-
|
1586
|
-
headersCapability.resolve({
|
1587
|
-
isStreamingSupported: fullReader.isStreamingSupported,
|
1588
|
-
isRangeSupported: fullReader.isRangeSupported,
|
1589
|
-
contentLength: fullReader.contentLength
|
1590
|
-
});
|
1591
|
-
}, headersCapability.reject);
|
1592
|
-
return headersCapability.promise;
|
1593
|
-
}, this);
|
1594
|
-
messageHandler.on('GetRangeReader', function (data, sink) {
|
1595
|
-
(0, _util.assert)(this._networkStream);
|
1469
|
+
headersCapability.resolve({
|
1470
|
+
isStreamingSupported: fullReader.isStreamingSupported,
|
1471
|
+
isRangeSupported: fullReader.isRangeSupported,
|
1472
|
+
contentLength: fullReader.contentLength
|
1473
|
+
});
|
1474
|
+
}, headersCapability.reject);
|
1475
|
+
return headersCapability.promise;
|
1476
|
+
});
|
1477
|
+
messageHandler.on("GetRangeReader", (data, sink) => {
|
1478
|
+
(0, _util.assert)(this._networkStream, "GetRangeReader - no `IPDFStream` instance available.");
|
1596
1479
|
|
1597
|
-
|
1480
|
+
const rangeReader = this._networkStream.getRangeReader(data.begin, data.end);
|
1598
1481
|
|
1599
|
-
|
1600
|
-
|
1601
|
-
|
1602
|
-
|
1482
|
+
if (!rangeReader) {
|
1483
|
+
sink.close();
|
1484
|
+
return;
|
1485
|
+
}
|
1603
1486
|
|
1604
|
-
|
1605
|
-
|
1606
|
-
|
1607
|
-
|
1487
|
+
sink.onPull = () => {
|
1488
|
+
rangeReader.read().then(function ({
|
1489
|
+
value,
|
1490
|
+
done
|
1491
|
+
}) {
|
1492
|
+
if (done) {
|
1493
|
+
sink.close();
|
1494
|
+
return;
|
1495
|
+
}
|
1608
1496
|
|
1609
|
-
|
1610
|
-
|
1611
|
-
|
1612
|
-
|
1613
|
-
|
1614
|
-
|
1497
|
+
(0, _util.assert)((0, _util.isArrayBuffer)(value), "GetRangeReader - expected an ArrayBuffer.");
|
1498
|
+
sink.enqueue(new Uint8Array(value), 1, [value]);
|
1499
|
+
}).catch(reason => {
|
1500
|
+
sink.error(reason);
|
1501
|
+
});
|
1502
|
+
};
|
1615
1503
|
|
1616
|
-
|
1617
|
-
|
1618
|
-
|
1619
|
-
|
1620
|
-
|
1621
|
-
|
1622
|
-
|
1623
|
-
|
1624
|
-
|
1625
|
-
loadingTask._capability.resolve(this.pdfDocument);
|
1626
|
-
}, this);
|
1627
|
-
messageHandler.on('PasswordRequest', function (exception) {
|
1628
|
-
var _this11 = this;
|
1629
|
-
|
1630
|
-
this._passwordCapability = (0, _util.createPromiseCapability)();
|
1631
|
-
|
1632
|
-
if (loadingTask.onPassword) {
|
1633
|
-
var updatePassword = function updatePassword(password) {
|
1634
|
-
_this11._passwordCapability.resolve({
|
1635
|
-
password: password
|
1636
|
-
});
|
1637
|
-
};
|
1504
|
+
sink.onCancel = reason => {
|
1505
|
+
rangeReader.cancel(reason);
|
1506
|
+
};
|
1507
|
+
});
|
1508
|
+
messageHandler.on("GetDoc", ({
|
1509
|
+
pdfInfo
|
1510
|
+
}) => {
|
1511
|
+
this._numPages = pdfInfo.numPages;
|
1638
1512
|
|
1639
|
-
|
1640
|
-
|
1641
|
-
|
1642
|
-
|
1643
|
-
}
|
1644
|
-
} else {
|
1645
|
-
this._passwordCapability.reject(new _util.PasswordException(exception.message, exception.code));
|
1646
|
-
}
|
1513
|
+
loadingTask._capability.resolve(new PDFDocumentProxy(pdfInfo, this));
|
1514
|
+
});
|
1515
|
+
messageHandler.on("DocException", function (ex) {
|
1516
|
+
let reason;
|
1647
1517
|
|
1648
|
-
|
1649
|
-
|
1650
|
-
|
1651
|
-
|
1652
|
-
}, this);
|
1653
|
-
messageHandler.on('InvalidPDF', function (exception) {
|
1654
|
-
loadingTask._capability.reject(new _util.InvalidPDFException(exception.message));
|
1655
|
-
}, this);
|
1656
|
-
messageHandler.on('MissingPDF', function (exception) {
|
1657
|
-
loadingTask._capability.reject(new _util.MissingPDFException(exception.message));
|
1658
|
-
}, this);
|
1659
|
-
messageHandler.on('UnexpectedResponse', function (exception) {
|
1660
|
-
loadingTask._capability.reject(new _util.UnexpectedResponseException(exception.message, exception.status));
|
1661
|
-
}, this);
|
1662
|
-
messageHandler.on('UnknownError', function (exception) {
|
1663
|
-
loadingTask._capability.reject(new _util.UnknownErrorException(exception.message, exception.details));
|
1664
|
-
}, this);
|
1665
|
-
messageHandler.on('DataLoaded', function (data) {
|
1666
|
-
if (loadingTask.onProgress) {
|
1667
|
-
loadingTask.onProgress({
|
1668
|
-
loaded: data.length,
|
1669
|
-
total: data.length
|
1670
|
-
});
|
1671
|
-
}
|
1518
|
+
switch (ex.name) {
|
1519
|
+
case "PasswordException":
|
1520
|
+
reason = new _util.PasswordException(ex.message, ex.code);
|
1521
|
+
break;
|
1672
1522
|
|
1673
|
-
|
1674
|
-
|
1675
|
-
|
1676
|
-
if (this.destroyed) {
|
1677
|
-
return;
|
1678
|
-
}
|
1523
|
+
case "InvalidPDFException":
|
1524
|
+
reason = new _util.InvalidPDFException(ex.message);
|
1525
|
+
break;
|
1679
1526
|
|
1680
|
-
|
1527
|
+
case "MissingPDFException":
|
1528
|
+
reason = new _util.MissingPDFException(ex.message);
|
1529
|
+
break;
|
1681
1530
|
|
1682
|
-
|
1531
|
+
case "UnexpectedResponseException":
|
1532
|
+
reason = new _util.UnexpectedResponseException(ex.message, ex.status);
|
1533
|
+
break;
|
1683
1534
|
|
1684
|
-
|
1685
|
-
|
1686
|
-
|
1687
|
-
|
1688
|
-
return;
|
1689
|
-
}
|
1535
|
+
case "UnknownErrorException":
|
1536
|
+
reason = new _util.UnknownErrorException(ex.message, ex.details);
|
1537
|
+
break;
|
1538
|
+
}
|
1690
1539
|
|
1691
|
-
|
1540
|
+
loadingTask._capability.reject(reason);
|
1541
|
+
});
|
1542
|
+
messageHandler.on("PasswordRequest", exception => {
|
1543
|
+
this._passwordCapability = (0, _util.createPromiseCapability)();
|
1692
1544
|
|
1693
|
-
|
1694
|
-
|
1695
|
-
|
1696
|
-
|
1545
|
+
if (loadingTask.onPassword) {
|
1546
|
+
const updatePassword = password => {
|
1547
|
+
this._passwordCapability.resolve({
|
1548
|
+
password
|
1549
|
+
});
|
1550
|
+
};
|
1697
1551
|
|
1698
|
-
|
1699
|
-
|
1552
|
+
try {
|
1553
|
+
loadingTask.onPassword(updatePassword, exception.code);
|
1554
|
+
} catch (ex) {
|
1555
|
+
this._passwordCapability.reject(ex);
|
1700
1556
|
}
|
1557
|
+
} else {
|
1558
|
+
this._passwordCapability.reject(new _util.PasswordException(exception.message, exception.code));
|
1559
|
+
}
|
1701
1560
|
|
1702
|
-
|
1703
|
-
|
1704
|
-
|
1705
|
-
|
1561
|
+
return this._passwordCapability.promise;
|
1562
|
+
});
|
1563
|
+
messageHandler.on("DataLoaded", data => {
|
1564
|
+
if (loadingTask.onProgress) {
|
1565
|
+
loadingTask.onProgress({
|
1566
|
+
loaded: data.length,
|
1567
|
+
total: data.length
|
1568
|
+
});
|
1569
|
+
}
|
1706
1570
|
|
1707
|
-
|
1708
|
-
|
1709
|
-
|
1571
|
+
this.downloadInfoCapability.resolve(data);
|
1572
|
+
});
|
1573
|
+
messageHandler.on("StartRenderPage", data => {
|
1574
|
+
if (this.destroyed) {
|
1575
|
+
return;
|
1576
|
+
}
|
1710
1577
|
|
1711
|
-
|
1712
|
-
case 'Font':
|
1713
|
-
var params = this._params;
|
1578
|
+
const page = this.pageCache[data.pageIndex];
|
1714
1579
|
|
1715
|
-
|
1716
|
-
|
1717
|
-
|
1718
|
-
|
1719
|
-
|
1720
|
-
|
1580
|
+
page._startRenderPage(data.transparency, data.intent);
|
1581
|
+
});
|
1582
|
+
messageHandler.on("commonobj", data => {
|
1583
|
+
if (this.destroyed) {
|
1584
|
+
return;
|
1585
|
+
}
|
1721
1586
|
|
1722
|
-
|
1587
|
+
const [id, type, exportedData] = data;
|
1723
1588
|
|
1724
|
-
|
1725
|
-
|
1726
|
-
|
1727
|
-
_global_scope.default['FontInspector'].fontAdded(font, url);
|
1728
|
-
}
|
1729
|
-
};
|
1730
|
-
}
|
1589
|
+
if (this.commonObjs.has(id)) {
|
1590
|
+
return;
|
1591
|
+
}
|
1731
1592
|
|
1732
|
-
|
1733
|
-
|
1734
|
-
|
1735
|
-
ignoreErrors: params.ignoreErrors,
|
1736
|
-
onUnsupportedFeature: this._onUnsupportedFeature.bind(this),
|
1737
|
-
fontRegistry: fontRegistry
|
1738
|
-
});
|
1739
|
-
this.fontLoader.bind(font).then(function () {
|
1740
|
-
_this12.commonObjs.resolve(id, font);
|
1741
|
-
}, function (reason) {
|
1742
|
-
messageHandler.sendWithPromise('FontFallback', {
|
1743
|
-
id: id
|
1744
|
-
}).finally(function () {
|
1745
|
-
_this12.commonObjs.resolve(id, font);
|
1746
|
-
});
|
1747
|
-
});
|
1748
|
-
break;
|
1593
|
+
switch (type) {
|
1594
|
+
case "Font":
|
1595
|
+
const params = this._params;
|
1749
1596
|
|
1750
|
-
|
1751
|
-
|
1597
|
+
if ("error" in exportedData) {
|
1598
|
+
const exportedError = exportedData.error;
|
1599
|
+
(0, _util.warn)(`Error during font loading: ${exportedError}`);
|
1600
|
+
this.commonObjs.resolve(id, exportedError);
|
1752
1601
|
break;
|
1602
|
+
}
|
1753
1603
|
|
1754
|
-
|
1755
|
-
throw new Error("Got unknown common object type ".concat(type));
|
1756
|
-
}
|
1757
|
-
}, this);
|
1758
|
-
messageHandler.on('obj', function (data) {
|
1759
|
-
if (this.destroyed) {
|
1760
|
-
return;
|
1761
|
-
}
|
1762
|
-
|
1763
|
-
var _data2 = _slicedToArray(data, 4),
|
1764
|
-
id = _data2[0],
|
1765
|
-
pageIndex = _data2[1],
|
1766
|
-
type = _data2[2],
|
1767
|
-
imageData = _data2[3];
|
1768
|
-
|
1769
|
-
var pageProxy = this.pageCache[pageIndex];
|
1770
|
-
|
1771
|
-
if (pageProxy.objs.has(id)) {
|
1772
|
-
return;
|
1773
|
-
}
|
1774
|
-
|
1775
|
-
switch (type) {
|
1776
|
-
case 'JpegStream':
|
1777
|
-
return new Promise(function (resolve, reject) {
|
1778
|
-
var img = new Image();
|
1604
|
+
let fontRegistry = null;
|
1779
1605
|
|
1780
|
-
|
1781
|
-
|
1782
|
-
|
1606
|
+
if (params.pdfBug && globalThis.FontInspector && globalThis.FontInspector.enabled) {
|
1607
|
+
fontRegistry = {
|
1608
|
+
registerFont(font, url) {
|
1609
|
+
globalThis.FontInspector.fontAdded(font, url);
|
1610
|
+
}
|
1783
1611
|
|
1784
|
-
|
1785
|
-
|
1786
|
-
};
|
1612
|
+
};
|
1613
|
+
}
|
1787
1614
|
|
1788
|
-
|
1789
|
-
|
1790
|
-
|
1615
|
+
const font = new _font_loader.FontFaceObject(exportedData, {
|
1616
|
+
isEvalSupported: params.isEvalSupported,
|
1617
|
+
disableFontFace: params.disableFontFace,
|
1618
|
+
ignoreErrors: params.ignoreErrors,
|
1619
|
+
onUnsupportedFeature: this._onUnsupportedFeature.bind(this),
|
1620
|
+
fontRegistry
|
1621
|
+
});
|
1622
|
+
this.fontLoader.bind(font).catch(reason => {
|
1623
|
+
return messageHandler.sendWithPromise("FontFallback", {
|
1624
|
+
id
|
1791
1625
|
});
|
1792
|
-
|
1793
|
-
|
1794
|
-
|
1795
|
-
var MAX_IMAGE_SIZE_TO_STORE = 8000000;
|
1796
|
-
|
1797
|
-
if (imageData && 'data' in imageData && imageData.data.length > MAX_IMAGE_SIZE_TO_STORE) {
|
1798
|
-
pageProxy.cleanupAfterRender = true;
|
1626
|
+
}).finally(() => {
|
1627
|
+
if (!params.fontExtraProperties && font.data) {
|
1628
|
+
font.data = null;
|
1799
1629
|
}
|
1800
1630
|
|
1801
|
-
|
1631
|
+
this.commonObjs.resolve(id, font);
|
1632
|
+
});
|
1633
|
+
break;
|
1802
1634
|
|
1803
|
-
|
1804
|
-
|
1805
|
-
|
1806
|
-
|
1807
|
-
|
1808
|
-
if (this.destroyed) {
|
1809
|
-
return;
|
1810
|
-
}
|
1635
|
+
case "FontPath":
|
1636
|
+
case "FontType3Res":
|
1637
|
+
case "Image":
|
1638
|
+
this.commonObjs.resolve(id, exportedData);
|
1639
|
+
break;
|
1811
1640
|
|
1812
|
-
|
1813
|
-
|
1814
|
-
|
1815
|
-
|
1816
|
-
|
1817
|
-
|
1818
|
-
|
1819
|
-
|
1820
|
-
if (this.destroyed) {
|
1821
|
-
return;
|
1822
|
-
}
|
1641
|
+
default:
|
1642
|
+
throw new Error(`Got unknown common object type ${type}`);
|
1643
|
+
}
|
1644
|
+
});
|
1645
|
+
messageHandler.on("obj", data => {
|
1646
|
+
if (this.destroyed) {
|
1647
|
+
return undefined;
|
1648
|
+
}
|
1823
1649
|
|
1824
|
-
|
1825
|
-
|
1650
|
+
const [id, pageIndex, type, imageData] = data;
|
1651
|
+
const pageProxy = this.pageCache[pageIndex];
|
1826
1652
|
|
1827
|
-
|
1828
|
-
|
1829
|
-
|
1830
|
-
throw new Error(data.error);
|
1831
|
-
}
|
1653
|
+
if (pageProxy.objs.has(id)) {
|
1654
|
+
return undefined;
|
1655
|
+
}
|
1832
1656
|
|
1833
|
-
|
1834
|
-
|
1657
|
+
switch (type) {
|
1658
|
+
case "Image":
|
1659
|
+
pageProxy.objs.resolve(id, imageData);
|
1660
|
+
const MAX_IMAGE_SIZE_TO_STORE = 8000000;
|
1835
1661
|
|
1836
|
-
|
1837
|
-
|
1662
|
+
if (imageData && "data" in imageData && imageData.data.length > MAX_IMAGE_SIZE_TO_STORE) {
|
1663
|
+
pageProxy.cleanupAfterRender = true;
|
1838
1664
|
}
|
1839
|
-
}
|
1840
|
-
}, this);
|
1841
|
-
messageHandler.on('UnsupportedFeature', this._onUnsupportedFeature, this);
|
1842
|
-
messageHandler.on('JpegDecode', function (data) {
|
1843
|
-
if (this.destroyed) {
|
1844
|
-
return Promise.reject(new Error('Worker was destroyed'));
|
1845
|
-
}
|
1846
1665
|
|
1847
|
-
|
1848
|
-
return Promise.reject(new Error('"document" is not defined.'));
|
1849
|
-
}
|
1850
|
-
|
1851
|
-
var _data3 = _slicedToArray(data, 2),
|
1852
|
-
imageUrl = _data3[0],
|
1853
|
-
components = _data3[1];
|
1666
|
+
break;
|
1854
1667
|
|
1855
|
-
|
1856
|
-
|
1857
|
-
|
1668
|
+
default:
|
1669
|
+
throw new Error(`Got unknown object type ${type}`);
|
1670
|
+
}
|
1858
1671
|
|
1859
|
-
|
1860
|
-
|
1861
|
-
|
1862
|
-
|
1863
|
-
|
1864
|
-
|
1865
|
-
var size = width * height;
|
1866
|
-
var rgbaLength = size * 4;
|
1867
|
-
var buf = new Uint8ClampedArray(size * components);
|
1868
|
-
var tmpCanvas = document.createElement('canvas');
|
1869
|
-
tmpCanvas.width = width;
|
1870
|
-
tmpCanvas.height = height;
|
1871
|
-
var tmpCtx = tmpCanvas.getContext('2d');
|
1872
|
-
tmpCtx.drawImage(img, 0, 0);
|
1873
|
-
var data = tmpCtx.getImageData(0, 0, width, height).data;
|
1874
|
-
|
1875
|
-
if (components === 3) {
|
1876
|
-
for (var i = 0, j = 0; i < rgbaLength; i += 4, j += 3) {
|
1877
|
-
buf[j] = data[i];
|
1878
|
-
buf[j + 1] = data[i + 1];
|
1879
|
-
buf[j + 2] = data[i + 2];
|
1880
|
-
}
|
1881
|
-
} else if (components === 1) {
|
1882
|
-
for (var _i2 = 0, _j = 0; _i2 < rgbaLength; _i2 += 4, _j++) {
|
1883
|
-
buf[_j] = data[_i2];
|
1884
|
-
}
|
1885
|
-
}
|
1672
|
+
return undefined;
|
1673
|
+
});
|
1674
|
+
messageHandler.on("DocProgress", data => {
|
1675
|
+
if (this.destroyed) {
|
1676
|
+
return;
|
1677
|
+
}
|
1886
1678
|
|
1887
|
-
|
1888
|
-
|
1889
|
-
|
1890
|
-
|
1891
|
-
|
1892
|
-
|
1679
|
+
if (loadingTask.onProgress) {
|
1680
|
+
loadingTask.onProgress({
|
1681
|
+
loaded: data.loaded,
|
1682
|
+
total: data.total
|
1683
|
+
});
|
1684
|
+
}
|
1685
|
+
});
|
1686
|
+
messageHandler.on("UnsupportedFeature", this._onUnsupportedFeature.bind(this));
|
1687
|
+
messageHandler.on("FetchBuiltInCMap", (data, sink) => {
|
1688
|
+
if (this.destroyed) {
|
1689
|
+
sink.error(new Error("Worker was destroyed"));
|
1690
|
+
return;
|
1691
|
+
}
|
1893
1692
|
|
1894
|
-
|
1895
|
-
reject(new Error('JpegDecode failed to load image'));
|
1896
|
-
};
|
1693
|
+
let fetched = false;
|
1897
1694
|
|
1898
|
-
|
1899
|
-
|
1900
|
-
|
1901
|
-
|
1902
|
-
if (this.destroyed) {
|
1903
|
-
return Promise.reject(new Error('Worker was destroyed'));
|
1695
|
+
sink.onPull = () => {
|
1696
|
+
if (fetched) {
|
1697
|
+
sink.close();
|
1698
|
+
return;
|
1904
1699
|
}
|
1905
1700
|
|
1906
|
-
|
1907
|
-
|
1701
|
+
fetched = true;
|
1702
|
+
this.CMapReaderFactory.fetch(data).then(function (builtInCMap) {
|
1703
|
+
sink.enqueue(builtInCMap, 1, [builtInCMap.cMapData.buffer]);
|
1704
|
+
}).catch(function (reason) {
|
1705
|
+
sink.error(reason);
|
1908
1706
|
});
|
1909
|
-
}
|
1707
|
+
};
|
1708
|
+
});
|
1709
|
+
}
|
1710
|
+
|
1711
|
+
_onUnsupportedFeature({
|
1712
|
+
featureId
|
1713
|
+
}) {
|
1714
|
+
if (this.destroyed) {
|
1715
|
+
return;
|
1910
1716
|
}
|
1911
|
-
}, {
|
1912
|
-
key: "_onUnsupportedFeature",
|
1913
|
-
value: function _onUnsupportedFeature(_ref10) {
|
1914
|
-
var featureId = _ref10.featureId;
|
1915
1717
|
|
1916
|
-
|
1917
|
-
|
1918
|
-
|
1718
|
+
if (this.loadingTask.onUnsupportedFeature) {
|
1719
|
+
this.loadingTask.onUnsupportedFeature(featureId);
|
1720
|
+
}
|
1721
|
+
}
|
1919
1722
|
|
1920
|
-
|
1921
|
-
|
1922
|
-
|
1723
|
+
getData() {
|
1724
|
+
return this.messageHandler.sendWithPromise("GetData", null);
|
1725
|
+
}
|
1726
|
+
|
1727
|
+
getPage(pageNumber) {
|
1728
|
+
if (!Number.isInteger(pageNumber) || pageNumber <= 0 || pageNumber > this._numPages) {
|
1729
|
+
return Promise.reject(new Error("Invalid page request"));
|
1923
1730
|
}
|
1924
|
-
|
1925
|
-
|
1926
|
-
|
1927
|
-
|
1731
|
+
|
1732
|
+
const pageIndex = pageNumber - 1;
|
1733
|
+
|
1734
|
+
if (pageIndex in this.pagePromises) {
|
1735
|
+
return this.pagePromises[pageIndex];
|
1928
1736
|
}
|
1929
|
-
}, {
|
1930
|
-
key: "getPage",
|
1931
|
-
value: function getPage(pageNumber) {
|
1932
|
-
var _this13 = this;
|
1933
1737
|
|
1934
|
-
|
1935
|
-
|
1738
|
+
const promise = this.messageHandler.sendWithPromise("GetPage", {
|
1739
|
+
pageIndex
|
1740
|
+
}).then(pageInfo => {
|
1741
|
+
if (this.destroyed) {
|
1742
|
+
throw new Error("Transport destroyed");
|
1936
1743
|
}
|
1937
1744
|
|
1938
|
-
|
1745
|
+
const page = new PDFPageProxy(pageIndex, pageInfo, this, this._params.pdfBug);
|
1746
|
+
this.pageCache[pageIndex] = page;
|
1747
|
+
return page;
|
1748
|
+
});
|
1749
|
+
this.pagePromises[pageIndex] = promise;
|
1750
|
+
return promise;
|
1751
|
+
}
|
1939
1752
|
|
1940
|
-
|
1941
|
-
|
1942
|
-
|
1753
|
+
getPageIndex(ref) {
|
1754
|
+
return this.messageHandler.sendWithPromise("GetPageIndex", {
|
1755
|
+
ref
|
1756
|
+
}).catch(function (reason) {
|
1757
|
+
return Promise.reject(new Error(reason));
|
1758
|
+
});
|
1759
|
+
}
|
1943
1760
|
|
1944
|
-
|
1945
|
-
|
1946
|
-
|
1947
|
-
|
1948
|
-
|
1949
|
-
|
1761
|
+
getAnnotations(pageIndex, intent) {
|
1762
|
+
return this.messageHandler.sendWithPromise("GetAnnotations", {
|
1763
|
+
pageIndex,
|
1764
|
+
intent
|
1765
|
+
});
|
1766
|
+
}
|
1950
1767
|
|
1951
|
-
|
1952
|
-
|
1953
|
-
|
1954
|
-
});
|
1955
|
-
this.pagePromises[pageIndex] = promise;
|
1956
|
-
return promise;
|
1957
|
-
}
|
1958
|
-
}, {
|
1959
|
-
key: "getPageIndex",
|
1960
|
-
value: function getPageIndex(ref) {
|
1961
|
-
return this.messageHandler.sendWithPromise('GetPageIndex', {
|
1962
|
-
ref: ref
|
1963
|
-
}).catch(function (reason) {
|
1964
|
-
return Promise.reject(new Error(reason));
|
1965
|
-
});
|
1966
|
-
}
|
1967
|
-
}, {
|
1968
|
-
key: "getAnnotations",
|
1969
|
-
value: function getAnnotations(pageIndex, intent) {
|
1970
|
-
return this.messageHandler.sendWithPromise('GetAnnotations', {
|
1971
|
-
pageIndex: pageIndex,
|
1972
|
-
intent: intent
|
1973
|
-
});
|
1974
|
-
}
|
1975
|
-
}, {
|
1976
|
-
key: "getDestinations",
|
1977
|
-
value: function getDestinations() {
|
1978
|
-
return this.messageHandler.sendWithPromise('GetDestinations', null);
|
1979
|
-
}
|
1980
|
-
}, {
|
1981
|
-
key: "getDestination",
|
1982
|
-
value: function getDestination(id) {
|
1983
|
-
if (typeof id !== 'string') {
|
1984
|
-
return Promise.reject(new Error('Invalid destination request.'));
|
1985
|
-
}
|
1768
|
+
getDestinations() {
|
1769
|
+
return this.messageHandler.sendWithPromise("GetDestinations", null);
|
1770
|
+
}
|
1986
1771
|
|
1987
|
-
|
1988
|
-
|
1989
|
-
|
1990
|
-
}
|
1991
|
-
}, {
|
1992
|
-
key: "getPageLabels",
|
1993
|
-
value: function getPageLabels() {
|
1994
|
-
return this.messageHandler.sendWithPromise('GetPageLabels', null);
|
1995
|
-
}
|
1996
|
-
}, {
|
1997
|
-
key: "getPageMode",
|
1998
|
-
value: function getPageMode() {
|
1999
|
-
return this.messageHandler.sendWithPromise('GetPageMode', null);
|
2000
|
-
}
|
2001
|
-
}, {
|
2002
|
-
key: "getOpenActionDestination",
|
2003
|
-
value: function getOpenActionDestination() {
|
2004
|
-
return this.messageHandler.sendWithPromise('getOpenActionDestination', null);
|
2005
|
-
}
|
2006
|
-
}, {
|
2007
|
-
key: "getAttachments",
|
2008
|
-
value: function getAttachments() {
|
2009
|
-
return this.messageHandler.sendWithPromise('GetAttachments', null);
|
2010
|
-
}
|
2011
|
-
}, {
|
2012
|
-
key: "getJavaScript",
|
2013
|
-
value: function getJavaScript() {
|
2014
|
-
return this.messageHandler.sendWithPromise('GetJavaScript', null);
|
2015
|
-
}
|
2016
|
-
}, {
|
2017
|
-
key: "getOutline",
|
2018
|
-
value: function getOutline() {
|
2019
|
-
return this.messageHandler.sendWithPromise('GetOutline', null);
|
2020
|
-
}
|
2021
|
-
}, {
|
2022
|
-
key: "getPermissions",
|
2023
|
-
value: function getPermissions() {
|
2024
|
-
return this.messageHandler.sendWithPromise('GetPermissions', null);
|
2025
|
-
}
|
2026
|
-
}, {
|
2027
|
-
key: "getMetadata",
|
2028
|
-
value: function getMetadata() {
|
2029
|
-
var _this14 = this;
|
2030
|
-
|
2031
|
-
return this.messageHandler.sendWithPromise('GetMetadata', null).then(function (results) {
|
2032
|
-
return {
|
2033
|
-
info: results[0],
|
2034
|
-
metadata: results[1] ? new _metadata.Metadata(results[1]) : null,
|
2035
|
-
contentDispositionFilename: _this14._fullReader ? _this14._fullReader.filename : null
|
2036
|
-
};
|
2037
|
-
});
|
1772
|
+
getDestination(id) {
|
1773
|
+
if (typeof id !== "string") {
|
1774
|
+
return Promise.reject(new Error("Invalid destination request."));
|
2038
1775
|
}
|
2039
|
-
}, {
|
2040
|
-
key: "getStats",
|
2041
|
-
value: function getStats() {
|
2042
|
-
return this.messageHandler.sendWithPromise('GetStats', null);
|
2043
|
-
}
|
2044
|
-
}, {
|
2045
|
-
key: "startCleanup",
|
2046
|
-
value: function startCleanup() {
|
2047
|
-
var _this15 = this;
|
2048
1776
|
|
2049
|
-
|
2050
|
-
|
2051
|
-
|
1777
|
+
return this.messageHandler.sendWithPromise("GetDestination", {
|
1778
|
+
id
|
1779
|
+
});
|
1780
|
+
}
|
2052
1781
|
|
2053
|
-
|
2054
|
-
|
2055
|
-
|
2056
|
-
}
|
1782
|
+
getPageLabels() {
|
1783
|
+
return this.messageHandler.sendWithPromise("GetPageLabels", null);
|
1784
|
+
}
|
2057
1785
|
|
2058
|
-
|
1786
|
+
getPageLayout() {
|
1787
|
+
return this.messageHandler.sendWithPromise("GetPageLayout", null);
|
1788
|
+
}
|
2059
1789
|
|
2060
|
-
|
2061
|
-
|
2062
|
-
|
2063
|
-
}, {
|
2064
|
-
key: "loadingParams",
|
2065
|
-
get: function get() {
|
2066
|
-
var params = this._params;
|
2067
|
-
return (0, _util.shadow)(this, 'loadingParams', {
|
2068
|
-
disableAutoFetch: params.disableAutoFetch,
|
2069
|
-
disableCreateObjectURL: params.disableCreateObjectURL,
|
2070
|
-
disableFontFace: params.disableFontFace,
|
2071
|
-
nativeImageDecoderSupport: params.nativeImageDecoderSupport
|
2072
|
-
});
|
2073
|
-
}
|
2074
|
-
}]);
|
1790
|
+
getPageMode() {
|
1791
|
+
return this.messageHandler.sendWithPromise("GetPageMode", null);
|
1792
|
+
}
|
2075
1793
|
|
2076
|
-
|
2077
|
-
|
1794
|
+
getViewerPreferences() {
|
1795
|
+
return this.messageHandler.sendWithPromise("GetViewerPreferences", null);
|
1796
|
+
}
|
2078
1797
|
|
2079
|
-
|
2080
|
-
|
2081
|
-
|
2082
|
-
function PDFObjects() {
|
2083
|
-
_classCallCheck(this, PDFObjects);
|
1798
|
+
getOpenAction() {
|
1799
|
+
return this.messageHandler.sendWithPromise("GetOpenAction", null);
|
1800
|
+
}
|
2084
1801
|
|
2085
|
-
|
1802
|
+
getAttachments() {
|
1803
|
+
return this.messageHandler.sendWithPromise("GetAttachments", null);
|
2086
1804
|
}
|
2087
1805
|
|
2088
|
-
|
2089
|
-
|
2090
|
-
|
2091
|
-
|
2092
|
-
|
2093
|
-
|
1806
|
+
getJavaScript() {
|
1807
|
+
return this.messageHandler.sendWithPromise("GetJavaScript", null);
|
1808
|
+
}
|
1809
|
+
|
1810
|
+
getOutline() {
|
1811
|
+
return this.messageHandler.sendWithPromise("GetOutline", null);
|
1812
|
+
}
|
1813
|
+
|
1814
|
+
getPermissions() {
|
1815
|
+
return this.messageHandler.sendWithPromise("GetPermissions", null);
|
1816
|
+
}
|
2094
1817
|
|
2095
|
-
|
2096
|
-
|
2097
|
-
|
2098
|
-
|
1818
|
+
getMetadata() {
|
1819
|
+
return this.messageHandler.sendWithPromise("GetMetadata", null).then(results => {
|
1820
|
+
return {
|
1821
|
+
info: results[0],
|
1822
|
+
metadata: results[1] ? new _metadata.Metadata(results[1]) : null,
|
1823
|
+
contentDispositionFilename: this._fullReader ? this._fullReader.filename : null
|
2099
1824
|
};
|
2100
|
-
}
|
2101
|
-
}
|
2102
|
-
key: "get",
|
2103
|
-
value: function get(objId) {
|
2104
|
-
var callback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
|
1825
|
+
});
|
1826
|
+
}
|
2105
1827
|
|
2106
|
-
|
2107
|
-
|
1828
|
+
getStats() {
|
1829
|
+
return this.messageHandler.sendWithPromise("GetStats", null);
|
1830
|
+
}
|
2108
1831
|
|
2109
|
-
|
2110
|
-
|
1832
|
+
startCleanup() {
|
1833
|
+
return this.messageHandler.sendWithPromise("Cleanup", null).then(() => {
|
1834
|
+
for (let i = 0, ii = this.pageCache.length; i < ii; i++) {
|
1835
|
+
const page = this.pageCache[i];
|
2111
1836
|
|
2112
|
-
|
1837
|
+
if (page) {
|
1838
|
+
const cleanupSuccessful = page.cleanup();
|
2113
1839
|
|
2114
|
-
|
2115
|
-
|
1840
|
+
if (!cleanupSuccessful) {
|
1841
|
+
throw new Error(`startCleanup: Page ${i + 1} is currently rendering.`);
|
1842
|
+
}
|
1843
|
+
}
|
2116
1844
|
}
|
2117
1845
|
|
2118
|
-
|
2119
|
-
|
2120
|
-
|
2121
|
-
|
2122
|
-
|
2123
|
-
|
2124
|
-
|
1846
|
+
this.commonObjs.clear();
|
1847
|
+
this.fontLoader.clear();
|
1848
|
+
});
|
1849
|
+
}
|
1850
|
+
|
1851
|
+
get loadingParams() {
|
1852
|
+
const params = this._params;
|
1853
|
+
return (0, _util.shadow)(this, "loadingParams", {
|
1854
|
+
disableAutoFetch: params.disableAutoFetch,
|
1855
|
+
disableFontFace: params.disableFontFace
|
1856
|
+
});
|
1857
|
+
}
|
1858
|
+
|
1859
|
+
}
|
1860
|
+
|
1861
|
+
class PDFObjects {
|
1862
|
+
constructor() {
|
1863
|
+
this._objs = Object.create(null);
|
1864
|
+
}
|
1865
|
+
|
1866
|
+
_ensureObj(objId) {
|
1867
|
+
if (this._objs[objId]) {
|
1868
|
+
return this._objs[objId];
|
2125
1869
|
}
|
2126
|
-
|
2127
|
-
|
2128
|
-
|
2129
|
-
|
2130
|
-
|
2131
|
-
|
2132
|
-
|
2133
|
-
|
1870
|
+
|
1871
|
+
return this._objs[objId] = {
|
1872
|
+
capability: (0, _util.createPromiseCapability)(),
|
1873
|
+
data: null,
|
1874
|
+
resolved: false
|
1875
|
+
};
|
1876
|
+
}
|
1877
|
+
|
1878
|
+
get(objId, callback = null) {
|
1879
|
+
if (callback) {
|
1880
|
+
this._ensureObj(objId).capability.promise.then(callback);
|
1881
|
+
|
1882
|
+
return null;
|
2134
1883
|
}
|
2135
|
-
|
2136
|
-
|
2137
|
-
|
2138
|
-
|
1884
|
+
|
1885
|
+
const obj = this._objs[objId];
|
1886
|
+
|
1887
|
+
if (!obj || !obj.resolved) {
|
1888
|
+
throw new Error(`Requesting object that isn't resolved yet ${objId}.`);
|
2139
1889
|
}
|
2140
|
-
}]);
|
2141
1890
|
|
2142
|
-
|
2143
|
-
}
|
1891
|
+
return obj.data;
|
1892
|
+
}
|
1893
|
+
|
1894
|
+
has(objId) {
|
1895
|
+
const obj = this._objs[objId];
|
1896
|
+
return obj ? obj.resolved : false;
|
1897
|
+
}
|
2144
1898
|
|
2145
|
-
|
2146
|
-
|
2147
|
-
function () {
|
2148
|
-
function RenderTask(internalRenderTask) {
|
2149
|
-
_classCallCheck(this, RenderTask);
|
1899
|
+
resolve(objId, data) {
|
1900
|
+
const obj = this._ensureObj(objId);
|
2150
1901
|
|
1902
|
+
obj.resolved = true;
|
1903
|
+
obj.data = data;
|
1904
|
+
obj.capability.resolve(data);
|
1905
|
+
}
|
1906
|
+
|
1907
|
+
clear() {
|
1908
|
+
this._objs = Object.create(null);
|
1909
|
+
}
|
1910
|
+
|
1911
|
+
}
|
1912
|
+
|
1913
|
+
class RenderTask {
|
1914
|
+
constructor(internalRenderTask) {
|
2151
1915
|
this._internalRenderTask = internalRenderTask;
|
2152
1916
|
this.onContinue = null;
|
2153
1917
|
}
|
2154
1918
|
|
2155
|
-
|
2156
|
-
|
2157
|
-
|
2158
|
-
this._internalRenderTask.cancel();
|
2159
|
-
}
|
2160
|
-
}, {
|
2161
|
-
key: "then",
|
2162
|
-
value: function then(onFulfilled, onRejected) {
|
2163
|
-
(0, _util.deprecated)('RenderTask.then method, use the `promise` getter instead.');
|
2164
|
-
return this.promise.then.apply(this.promise, arguments);
|
2165
|
-
}
|
2166
|
-
}, {
|
2167
|
-
key: "promise",
|
2168
|
-
get: function get() {
|
2169
|
-
return this._internalRenderTask.capability.promise;
|
2170
|
-
}
|
2171
|
-
}]);
|
1919
|
+
get promise() {
|
1920
|
+
return this._internalRenderTask.capability.promise;
|
1921
|
+
}
|
2172
1922
|
|
2173
|
-
|
2174
|
-
|
1923
|
+
cancel() {
|
1924
|
+
this._internalRenderTask.cancel();
|
1925
|
+
}
|
2175
1926
|
|
2176
|
-
|
2177
|
-
var canvasInRendering = new WeakSet();
|
2178
|
-
|
2179
|
-
var InternalRenderTask =
|
2180
|
-
/*#__PURE__*/
|
2181
|
-
function () {
|
2182
|
-
function InternalRenderTask(_ref11) {
|
2183
|
-
var callback = _ref11.callback,
|
2184
|
-
params = _ref11.params,
|
2185
|
-
objs = _ref11.objs,
|
2186
|
-
commonObjs = _ref11.commonObjs,
|
2187
|
-
operatorList = _ref11.operatorList,
|
2188
|
-
pageNumber = _ref11.pageNumber,
|
2189
|
-
canvasFactory = _ref11.canvasFactory,
|
2190
|
-
webGLContext = _ref11.webGLContext,
|
2191
|
-
_ref11$useRequestAnim = _ref11.useRequestAnimationFrame,
|
2192
|
-
useRequestAnimationFrame = _ref11$useRequestAnim === void 0 ? false : _ref11$useRequestAnim,
|
2193
|
-
_ref11$pdfBug = _ref11.pdfBug,
|
2194
|
-
pdfBug = _ref11$pdfBug === void 0 ? false : _ref11$pdfBug;
|
2195
|
-
|
2196
|
-
_classCallCheck(this, InternalRenderTask);
|
1927
|
+
}
|
2197
1928
|
|
1929
|
+
const InternalRenderTask = function InternalRenderTaskClosure() {
|
1930
|
+
const canvasInRendering = new WeakSet();
|
1931
|
+
|
1932
|
+
class InternalRenderTask {
|
1933
|
+
constructor({
|
1934
|
+
callback,
|
1935
|
+
params,
|
1936
|
+
objs,
|
1937
|
+
commonObjs,
|
1938
|
+
operatorList,
|
1939
|
+
pageIndex,
|
1940
|
+
canvasFactory,
|
1941
|
+
webGLContext,
|
1942
|
+
useRequestAnimationFrame = false,
|
1943
|
+
pdfBug = false
|
1944
|
+
}) {
|
2198
1945
|
this.callback = callback;
|
2199
1946
|
this.params = params;
|
2200
1947
|
this.objs = objs;
|
2201
1948
|
this.commonObjs = commonObjs;
|
2202
1949
|
this.operatorListIdx = null;
|
2203
1950
|
this.operatorList = operatorList;
|
2204
|
-
this.
|
1951
|
+
this._pageIndex = pageIndex;
|
2205
1952
|
this.canvasFactory = canvasFactory;
|
2206
1953
|
this.webGLContext = webGLContext;
|
2207
1954
|
this._pdfBug = pdfBug;
|
2208
1955
|
this.running = false;
|
2209
1956
|
this.graphicsReadyCallback = null;
|
2210
1957
|
this.graphicsReady = false;
|
2211
|
-
this._useRequestAnimationFrame = useRequestAnimationFrame === true && typeof window !==
|
1958
|
+
this._useRequestAnimationFrame = useRequestAnimationFrame === true && typeof window !== "undefined";
|
2212
1959
|
this.cancelled = false;
|
2213
1960
|
this.capability = (0, _util.createPromiseCapability)();
|
2214
1961
|
this.task = new RenderTask(this);
|
@@ -2218,172 +1965,134 @@ var InternalRenderTask = function InternalRenderTaskClosure() {
|
|
2218
1965
|
this._canvas = params.canvasContext.canvas;
|
2219
1966
|
}
|
2220
1967
|
|
2221
|
-
|
2222
|
-
|
2223
|
-
|
2224
|
-
|
1968
|
+
initializeGraphics(transparency = false) {
|
1969
|
+
if (this.cancelled) {
|
1970
|
+
return;
|
1971
|
+
}
|
2225
1972
|
|
2226
|
-
|
2227
|
-
|
1973
|
+
if (this._canvas) {
|
1974
|
+
if (canvasInRendering.has(this._canvas)) {
|
1975
|
+
throw new Error("Cannot use the same canvas during multiple render() operations. " + "Use different canvas or ensure previous operations were " + "cancelled or completed.");
|
2228
1976
|
}
|
2229
1977
|
|
2230
|
-
|
2231
|
-
|
2232
|
-
throw new Error('Cannot use the same canvas during multiple render() operations. ' + 'Use different canvas or ensure previous operations were ' + 'cancelled or completed.');
|
2233
|
-
}
|
1978
|
+
canvasInRendering.add(this._canvas);
|
1979
|
+
}
|
2234
1980
|
|
2235
|
-
|
2236
|
-
|
1981
|
+
if (this._pdfBug && globalThis.StepperManager && globalThis.StepperManager.enabled) {
|
1982
|
+
this.stepper = globalThis.StepperManager.create(this._pageIndex);
|
1983
|
+
this.stepper.init(this.operatorList);
|
1984
|
+
this.stepper.nextBreakPoint = this.stepper.getNextBreakPoint();
|
1985
|
+
}
|
2237
1986
|
|
2238
|
-
|
2239
|
-
|
2240
|
-
|
2241
|
-
|
2242
|
-
|
1987
|
+
const {
|
1988
|
+
canvasContext,
|
1989
|
+
viewport,
|
1990
|
+
transform,
|
1991
|
+
imageLayer,
|
1992
|
+
background
|
1993
|
+
} = this.params;
|
1994
|
+
this.gfx = new _canvas.CanvasGraphics(canvasContext, this.commonObjs, this.objs, this.canvasFactory, this.webGLContext, imageLayer);
|
1995
|
+
this.gfx.beginDrawing({
|
1996
|
+
transform,
|
1997
|
+
viewport,
|
1998
|
+
transparency,
|
1999
|
+
background
|
2000
|
+
});
|
2001
|
+
this.operatorListIdx = 0;
|
2002
|
+
this.graphicsReady = true;
|
2243
2003
|
|
2244
|
-
|
2245
|
-
|
2246
|
-
|
2247
|
-
|
2248
|
-
imageLayer = _this$params.imageLayer,
|
2249
|
-
background = _this$params.background;
|
2250
|
-
this.gfx = new _canvas.CanvasGraphics(canvasContext, this.commonObjs, this.objs, this.canvasFactory, this.webGLContext, imageLayer);
|
2251
|
-
this.gfx.beginDrawing({
|
2252
|
-
transform: transform,
|
2253
|
-
viewport: viewport,
|
2254
|
-
transparency: transparency,
|
2255
|
-
background: background
|
2256
|
-
});
|
2257
|
-
this.operatorListIdx = 0;
|
2258
|
-
this.graphicsReady = true;
|
2004
|
+
if (this.graphicsReadyCallback) {
|
2005
|
+
this.graphicsReadyCallback();
|
2006
|
+
}
|
2007
|
+
}
|
2259
2008
|
|
2260
|
-
|
2261
|
-
|
2262
|
-
|
2009
|
+
cancel(error = null) {
|
2010
|
+
this.running = false;
|
2011
|
+
this.cancelled = true;
|
2012
|
+
|
2013
|
+
if (this.gfx) {
|
2014
|
+
this.gfx.endDrawing();
|
2263
2015
|
}
|
2264
|
-
}, {
|
2265
|
-
key: "cancel",
|
2266
|
-
value: function cancel() {
|
2267
|
-
var error = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
|
2268
|
-
this.running = false;
|
2269
|
-
this.cancelled = true;
|
2270
2016
|
|
2271
|
-
|
2272
|
-
|
2273
|
-
|
2017
|
+
if (this._canvas) {
|
2018
|
+
canvasInRendering.delete(this._canvas);
|
2019
|
+
}
|
2020
|
+
|
2021
|
+
this.callback(error || new _display_utils.RenderingCancelledException(`Rendering cancelled, page ${this._pageIndex + 1}`, "canvas"));
|
2022
|
+
}
|
2274
2023
|
|
2275
|
-
|
2276
|
-
|
2024
|
+
operatorListChanged() {
|
2025
|
+
if (!this.graphicsReady) {
|
2026
|
+
if (!this.graphicsReadyCallback) {
|
2027
|
+
this.graphicsReadyCallback = this._continueBound;
|
2277
2028
|
}
|
2278
2029
|
|
2279
|
-
|
2030
|
+
return;
|
2280
2031
|
}
|
2281
|
-
}, {
|
2282
|
-
key: "operatorListChanged",
|
2283
|
-
value: function operatorListChanged() {
|
2284
|
-
if (!this.graphicsReady) {
|
2285
|
-
if (!this.graphicsReadyCallback) {
|
2286
|
-
this.graphicsReadyCallback = this._continueBound;
|
2287
|
-
}
|
2288
2032
|
|
2289
|
-
|
2290
|
-
|
2033
|
+
if (this.stepper) {
|
2034
|
+
this.stepper.updateOperatorList(this.operatorList);
|
2035
|
+
}
|
2291
2036
|
|
2292
|
-
|
2293
|
-
|
2294
|
-
|
2037
|
+
if (this.running) {
|
2038
|
+
return;
|
2039
|
+
}
|
2295
2040
|
|
2296
|
-
|
2297
|
-
|
2298
|
-
|
2041
|
+
this._continue();
|
2042
|
+
}
|
2043
|
+
|
2044
|
+
_continue() {
|
2045
|
+
this.running = true;
|
2299
2046
|
|
2300
|
-
|
2047
|
+
if (this.cancelled) {
|
2048
|
+
return;
|
2301
2049
|
}
|
2302
|
-
}, {
|
2303
|
-
key: "_continue",
|
2304
|
-
value: function _continue() {
|
2305
|
-
this.running = true;
|
2306
2050
|
|
2307
|
-
|
2308
|
-
|
2309
|
-
|
2051
|
+
if (this.task.onContinue) {
|
2052
|
+
this.task.onContinue(this._scheduleNextBound);
|
2053
|
+
} else {
|
2054
|
+
this._scheduleNext();
|
2055
|
+
}
|
2056
|
+
}
|
2310
2057
|
|
2311
|
-
|
2312
|
-
|
2313
|
-
|
2314
|
-
this.
|
2315
|
-
}
|
2058
|
+
_scheduleNext() {
|
2059
|
+
if (this._useRequestAnimationFrame) {
|
2060
|
+
window.requestAnimationFrame(() => {
|
2061
|
+
this._nextBound().catch(this.cancel.bind(this));
|
2062
|
+
});
|
2063
|
+
} else {
|
2064
|
+
Promise.resolve().then(this._nextBound).catch(this.cancel.bind(this));
|
2316
2065
|
}
|
2317
|
-
}
|
2318
|
-
key: "_scheduleNext",
|
2319
|
-
value: function _scheduleNext() {
|
2320
|
-
var _this16 = this;
|
2066
|
+
}
|
2321
2067
|
|
2322
|
-
|
2323
|
-
|
2324
|
-
|
2325
|
-
});
|
2326
|
-
} else {
|
2327
|
-
Promise.resolve().then(this._nextBound).catch(this.cancel.bind(this));
|
2328
|
-
}
|
2068
|
+
async _next() {
|
2069
|
+
if (this.cancelled) {
|
2070
|
+
return;
|
2329
2071
|
}
|
2330
|
-
}, {
|
2331
|
-
key: "_next",
|
2332
|
-
value: function () {
|
2333
|
-
var _next2 = _asyncToGenerator(
|
2334
|
-
/*#__PURE__*/
|
2335
|
-
_regenerator.default.mark(function _callee() {
|
2336
|
-
return _regenerator.default.wrap(function _callee$(_context) {
|
2337
|
-
while (1) {
|
2338
|
-
switch (_context.prev = _context.next) {
|
2339
|
-
case 0:
|
2340
|
-
if (!this.cancelled) {
|
2341
|
-
_context.next = 2;
|
2342
|
-
break;
|
2343
|
-
}
|
2344
|
-
|
2345
|
-
return _context.abrupt("return");
|
2346
|
-
|
2347
|
-
case 2:
|
2348
|
-
this.operatorListIdx = this.gfx.executeOperatorList(this.operatorList, this.operatorListIdx, this._continueBound, this.stepper);
|
2349
|
-
|
2350
|
-
if (this.operatorListIdx === this.operatorList.argsArray.length) {
|
2351
|
-
this.running = false;
|
2352
|
-
|
2353
|
-
if (this.operatorList.lastChunk) {
|
2354
|
-
this.gfx.endDrawing();
|
2355
|
-
|
2356
|
-
if (this._canvas) {
|
2357
|
-
canvasInRendering.delete(this._canvas);
|
2358
|
-
}
|
2359
|
-
|
2360
|
-
this.callback();
|
2361
|
-
}
|
2362
|
-
}
|
2363
|
-
|
2364
|
-
case 4:
|
2365
|
-
case "end":
|
2366
|
-
return _context.stop();
|
2367
|
-
}
|
2368
|
-
}
|
2369
|
-
}, _callee, this);
|
2370
|
-
}));
|
2371
2072
|
|
2372
|
-
|
2373
|
-
|
2374
|
-
|
2073
|
+
this.operatorListIdx = this.gfx.executeOperatorList(this.operatorList, this.operatorListIdx, this._continueBound, this.stepper);
|
2074
|
+
|
2075
|
+
if (this.operatorListIdx === this.operatorList.argsArray.length) {
|
2076
|
+
this.running = false;
|
2375
2077
|
|
2376
|
-
|
2377
|
-
|
2378
|
-
|
2078
|
+
if (this.operatorList.lastChunk) {
|
2079
|
+
this.gfx.endDrawing();
|
2080
|
+
|
2081
|
+
if (this._canvas) {
|
2082
|
+
canvasInRendering.delete(this._canvas);
|
2083
|
+
}
|
2379
2084
|
|
2380
|
-
|
2381
|
-
|
2085
|
+
this.callback();
|
2086
|
+
}
|
2087
|
+
}
|
2088
|
+
}
|
2089
|
+
|
2090
|
+
}
|
2382
2091
|
|
2383
2092
|
return InternalRenderTask;
|
2384
2093
|
}();
|
2385
2094
|
|
2386
|
-
|
2095
|
+
const version = '2.5.207';
|
2387
2096
|
exports.version = version;
|
2388
|
-
|
2097
|
+
const build = '0974d605';
|
2389
2098
|
exports.build = build;
|