pdfjs-dist 2.0.943 → 2.4.456
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 +8286 -14230
- 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 +25500 -26628
- package/build/pdf.worker.js.map +1 -1
- package/build/pdf.worker.min.js +22 -1
- package/es5/build/pdf.js +25473 -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 +57878 -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 +407 -0
- package/es5/web/pdf_viewer.js +7757 -0
- package/es5/web/pdf_viewer.js.map +1 -0
- package/image_decoders/pdf.image_decoders.js +2887 -4094
- 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 +855 -778
- package/lib/core/arithmetic_decoder.js +325 -311
- package/lib/core/bidi.js +117 -50
- package/lib/core/ccitt.js +251 -89
- package/lib/core/ccitt_stream.js +26 -16
- package/lib/core/cff_parser.js +525 -197
- package/lib/core/charsets.js +6 -5
- package/lib/core/chunked_stream.js +541 -406
- package/lib/core/cmap.js +368 -253
- package/lib/core/colorspace.js +781 -800
- package/lib/core/core_utils.js +152 -0
- package/lib/core/crypto.js +609 -422
- package/lib/core/document.js +649 -481
- package/lib/core/encodings.js +33 -24
- package/lib/core/evaluator.js +1471 -736
- package/lib/core/font_renderer.js +289 -149
- package/lib/core/fonts.js +1067 -413
- package/lib/core/function.js +517 -287
- package/lib/core/glyphlist.js +4529 -4527
- package/lib/core/image.js +232 -114
- package/lib/core/image_utils.js +94 -0
- package/lib/core/jbig2.js +711 -342
- package/lib/core/jbig2_stream.js +31 -19
- package/lib/core/jpeg_stream.js +151 -26
- package/lib/core/jpg.js +433 -181
- package/lib/core/jpx.js +551 -143
- package/lib/core/jpx_stream.js +40 -28
- package/lib/core/metrics.js +2931 -2931
- package/lib/core/murmurhash3.js +104 -97
- package/lib/core/obj.js +1561 -1053
- package/lib/core/operator_list.js +192 -64
- package/lib/core/parser.js +1162 -864
- package/lib/core/pattern.js +224 -75
- package/lib/core/pdf_manager.js +154 -285
- package/lib/core/primitives.js +145 -69
- package/lib/core/ps_parser.js +212 -162
- package/lib/core/standard_fonts.js +245 -244
- package/lib/core/stream.js +353 -81
- package/lib/core/type1_parser.js +218 -68
- package/lib/core/unicode.js +1682 -1655
- package/lib/core/worker.js +233 -302
- package/lib/core/worker_stream.js +168 -0
- package/lib/display/annotation_layer.js +808 -862
- package/lib/display/api.js +1778 -1462
- package/lib/display/api_compatibility.js +14 -9
- package/lib/display/canvas.js +463 -140
- package/lib/display/content_disposition.js +86 -58
- package/lib/display/display_utils.js +524 -0
- package/lib/display/fetch_stream.js +202 -274
- package/lib/display/font_loader.js +311 -333
- package/lib/display/metadata.js +98 -88
- package/lib/display/network.js +343 -347
- package/lib/display/network_utils.js +46 -26
- package/lib/display/node_stream.js +326 -404
- package/lib/display/pattern_helper.js +168 -69
- package/lib/display/svg.js +1296 -885
- package/lib/display/text_layer.js +229 -103
- package/lib/display/transport_stream.js +290 -250
- package/lib/display/webgl.js +116 -83
- package/lib/display/worker_options.js +6 -5
- package/lib/display/xml_parser.js +358 -337
- package/lib/examples/node/domstubs.js +95 -39
- package/lib/pdf.js +49 -31
- package/lib/pdf.worker.js +7 -5
- package/lib/shared/compatibility.js +3 -145
- package/lib/shared/is_node.js +8 -7
- package/lib/shared/message_handler.js +367 -314
- package/lib/shared/util.js +421 -415
- package/lib/test/unit/annotation_spec.js +1570 -690
- package/lib/test/unit/api_spec.js +855 -493
- package/lib/test/unit/bidi_spec.js +12 -12
- package/lib/test/unit/cff_parser_spec.js +88 -61
- package/lib/test/unit/clitests_helper.js +9 -12
- package/lib/test/unit/cmap_spec.js +140 -88
- package/lib/test/unit/colorspace_spec.js +204 -152
- package/lib/test/unit/core_utils_spec.js +211 -0
- package/lib/test/unit/crypto_spec.js +194 -182
- package/lib/test/unit/custom_spec.js +50 -64
- package/lib/test/unit/display_svg_spec.js +53 -38
- package/lib/test/unit/display_utils_spec.js +263 -0
- package/lib/test/unit/document_spec.js +17 -22
- package/lib/test/unit/encodings_spec.js +15 -57
- package/lib/test/unit/evaluator_spec.js +90 -83
- package/lib/test/unit/fetch_stream_spec.js +111 -0
- package/lib/test/unit/function_spec.js +219 -205
- package/lib/test/unit/jasmine-boot.js +68 -39
- package/lib/test/unit/message_handler_spec.js +187 -160
- package/lib/test/unit/metadata_spec.js +87 -34
- package/lib/test/unit/murmurhash3_spec.js +13 -13
- package/lib/test/unit/network_spec.js +26 -59
- package/lib/test/unit/network_utils_spec.js +187 -121
- package/lib/test/unit/node_stream_spec.js +98 -90
- package/lib/test/unit/parser_spec.js +173 -131
- package/lib/test/unit/pdf_find_controller_spec.js +148 -67
- package/lib/test/unit/pdf_find_utils_spec.js +35 -34
- package/lib/test/unit/pdf_history_spec.js +45 -33
- package/lib/test/unit/primitives_spec.js +161 -126
- package/lib/test/unit/stream_spec.js +22 -15
- package/lib/test/unit/test_utils.js +149 -98
- package/lib/test/unit/testreporter.js +36 -18
- package/lib/test/unit/type1_parser_spec.js +46 -44
- package/lib/test/unit/ui_utils_spec.js +388 -372
- package/lib/test/unit/unicode_spec.js +49 -46
- package/lib/test/unit/util_spec.js +144 -248
- package/lib/web/annotation_layer_builder.js +75 -95
- package/lib/web/app.js +1538 -1147
- package/lib/web/app_options.js +116 -104
- package/lib/web/base_viewer.js +950 -775
- package/lib/web/chromecom.js +217 -225
- package/lib/web/debugger.js +236 -148
- package/lib/web/download_manager.js +50 -50
- package/lib/web/firefox_print_service.js +51 -33
- package/lib/web/firefoxcom.js +225 -352
- package/lib/web/genericcom.js +30 -93
- package/lib/web/genericl10n.js +26 -143
- package/lib/web/grab_to_pan.js +57 -33
- package/lib/web/interfaces.js +105 -232
- package/lib/web/overlay_manager.js +73 -227
- package/lib/web/password_prompt.js +44 -62
- package/lib/web/pdf_attachment_viewer.js +118 -123
- package/lib/web/pdf_cursor_tools.js +89 -93
- package/lib/web/pdf_document_properties.js +242 -281
- package/lib/web/pdf_find_bar.js +157 -163
- package/lib/web/pdf_find_controller.js +598 -454
- package/lib/web/pdf_find_utils.js +32 -16
- package/lib/web/pdf_history.js +481 -355
- package/lib/web/pdf_link_service.js +355 -323
- package/lib/web/pdf_outline_viewer.js +167 -152
- package/lib/web/pdf_page_view.js +511 -457
- package/lib/web/pdf_presentation_mode.js +347 -335
- package/lib/web/pdf_print_service.js +133 -103
- package/lib/web/pdf_rendering_queue.js +98 -100
- package/lib/web/pdf_sidebar.js +323 -299
- package/lib/web/pdf_sidebar_resizer.js +107 -108
- package/lib/web/pdf_single_page_viewer.js +94 -146
- package/lib/web/pdf_thumbnail_view.js +319 -269
- package/lib/web/pdf_thumbnail_viewer.js +219 -199
- package/lib/web/pdf_viewer.component.js +111 -32
- package/lib/web/pdf_viewer.js +61 -101
- package/lib/web/preferences.js +87 -272
- package/lib/web/secondary_toolbar.js +207 -220
- package/lib/web/text_layer_builder.js +322 -322
- package/lib/web/toolbar.js +227 -180
- package/lib/web/ui_utils.js +476 -421
- package/lib/web/view_history.js +59 -208
- package/lib/web/viewer_compatibility.js +9 -6
- package/package.json +2 -9
- package/web/pdf_viewer.css +36 -22
- package/web/pdf_viewer.js +4407 -4516
- 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 -441
- package/lib/shared/streams_polyfill.js +0 -39
- package/lib/shared/url_polyfill.js +0 -50
- package/lib/test/unit/dom_utils_spec.js +0 -89
- package/lib/web/dom_events.js +0 -140
package/lib/core/worker.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.
|
@@ -19,30 +19,26 @@
|
|
19
19
|
* @licend The above is the entire license notice for the
|
20
20
|
* Javascript code in this page
|
21
21
|
*/
|
22
|
-
|
22
|
+
"use strict";
|
23
23
|
|
24
24
|
Object.defineProperty(exports, "__esModule", {
|
25
25
|
value: true
|
26
26
|
});
|
27
|
-
exports.WorkerMessageHandler = exports.WorkerTask =
|
27
|
+
exports.WorkerMessageHandler = exports.WorkerTask = void 0;
|
28
28
|
|
29
|
-
var
|
29
|
+
var _util = require("../shared/util.js");
|
30
30
|
|
31
|
-
var
|
31
|
+
var _primitives = require("./primitives.js");
|
32
32
|
|
33
|
-
var
|
33
|
+
var _pdf_manager = require("./pdf_manager.js");
|
34
34
|
|
35
|
-
var
|
35
|
+
var _is_node = require("../shared/is_node.js");
|
36
36
|
|
37
|
-
var
|
37
|
+
var _message_handler = require("../shared/message_handler.js");
|
38
38
|
|
39
|
-
var
|
39
|
+
var _worker_stream = require("./worker_stream.js");
|
40
40
|
|
41
|
-
var
|
42
|
-
|
43
|
-
var _primitives = require('./primitives');
|
44
|
-
|
45
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
41
|
+
var _core_utils = require("./core_utils.js");
|
46
42
|
|
47
43
|
var WorkerTask = function WorkerTaskClosure() {
|
48
44
|
function WorkerTask(name) {
|
@@ -50,231 +46,126 @@ var WorkerTask = function WorkerTaskClosure() {
|
|
50
46
|
this.terminated = false;
|
51
47
|
this._capability = (0, _util.createPromiseCapability)();
|
52
48
|
}
|
49
|
+
|
53
50
|
WorkerTask.prototype = {
|
54
51
|
get finished() {
|
55
52
|
return this._capability.promise;
|
56
53
|
},
|
57
|
-
|
54
|
+
|
55
|
+
finish() {
|
58
56
|
this._capability.resolve();
|
59
57
|
},
|
60
|
-
|
58
|
+
|
59
|
+
terminate() {
|
61
60
|
this.terminated = true;
|
62
61
|
},
|
63
|
-
|
62
|
+
|
63
|
+
ensureNotTerminated() {
|
64
64
|
if (this.terminated) {
|
65
|
-
throw new Error(
|
65
|
+
throw new Error("Worker task was terminated");
|
66
66
|
}
|
67
67
|
}
|
68
|
+
|
68
69
|
};
|
69
70
|
return WorkerTask;
|
70
71
|
}();
|
71
|
-
;
|
72
|
-
var PDFWorkerStream = function PDFWorkerStreamClosure() {
|
73
|
-
function PDFWorkerStream(msgHandler) {
|
74
|
-
this._msgHandler = msgHandler;
|
75
|
-
this._contentLength = null;
|
76
|
-
this._fullRequestReader = null;
|
77
|
-
this._rangeRequestReaders = [];
|
78
|
-
}
|
79
|
-
PDFWorkerStream.prototype = {
|
80
|
-
getFullReader: function getFullReader() {
|
81
|
-
(0, _util.assert)(!this._fullRequestReader);
|
82
|
-
this._fullRequestReader = new PDFWorkerStreamReader(this._msgHandler);
|
83
|
-
return this._fullRequestReader;
|
84
|
-
},
|
85
|
-
getRangeReader: function getRangeReader(begin, end) {
|
86
|
-
var reader = new PDFWorkerStreamRangeReader(begin, end, this._msgHandler);
|
87
|
-
this._rangeRequestReaders.push(reader);
|
88
|
-
return reader;
|
89
|
-
},
|
90
|
-
cancelAllRequests: function cancelAllRequests(reason) {
|
91
|
-
if (this._fullRequestReader) {
|
92
|
-
this._fullRequestReader.cancel(reason);
|
93
|
-
}
|
94
|
-
var readers = this._rangeRequestReaders.slice(0);
|
95
|
-
readers.forEach(function (reader) {
|
96
|
-
reader.cancel(reason);
|
97
|
-
});
|
98
|
-
}
|
99
|
-
};
|
100
|
-
function PDFWorkerStreamReader(msgHandler) {
|
101
|
-
var _this = this;
|
102
|
-
|
103
|
-
this._msgHandler = msgHandler;
|
104
|
-
this._contentLength = null;
|
105
|
-
this._isRangeSupported = false;
|
106
|
-
this._isStreamingSupported = false;
|
107
|
-
var readableStream = this._msgHandler.sendWithStream('GetReader');
|
108
|
-
this._reader = readableStream.getReader();
|
109
|
-
this._headersReady = this._msgHandler.sendWithPromise('ReaderHeadersReady').then(function (data) {
|
110
|
-
_this._isStreamingSupported = data.isStreamingSupported;
|
111
|
-
_this._isRangeSupported = data.isRangeSupported;
|
112
|
-
_this._contentLength = data.contentLength;
|
113
|
-
});
|
114
|
-
}
|
115
|
-
PDFWorkerStreamReader.prototype = {
|
116
|
-
get headersReady() {
|
117
|
-
return this._headersReady;
|
118
|
-
},
|
119
|
-
get contentLength() {
|
120
|
-
return this._contentLength;
|
121
|
-
},
|
122
|
-
get isStreamingSupported() {
|
123
|
-
return this._isStreamingSupported;
|
124
|
-
},
|
125
|
-
get isRangeSupported() {
|
126
|
-
return this._isRangeSupported;
|
127
|
-
},
|
128
|
-
read: function read() {
|
129
|
-
return this._reader.read().then(function (_ref) {
|
130
|
-
var value = _ref.value,
|
131
|
-
done = _ref.done;
|
132
72
|
|
133
|
-
|
134
|
-
return {
|
135
|
-
value: undefined,
|
136
|
-
done: true
|
137
|
-
};
|
138
|
-
}
|
139
|
-
return {
|
140
|
-
value: value.buffer,
|
141
|
-
done: false
|
142
|
-
};
|
143
|
-
});
|
144
|
-
},
|
145
|
-
cancel: function cancel(reason) {
|
146
|
-
this._reader.cancel(reason);
|
147
|
-
}
|
148
|
-
};
|
149
|
-
function PDFWorkerStreamRangeReader(begin, end, msgHandler) {
|
150
|
-
this._msgHandler = msgHandler;
|
151
|
-
this.onProgress = null;
|
152
|
-
var readableStream = this._msgHandler.sendWithStream('GetRangeReader', {
|
153
|
-
begin: begin,
|
154
|
-
end: end
|
155
|
-
});
|
156
|
-
this._reader = readableStream.getReader();
|
157
|
-
}
|
158
|
-
PDFWorkerStreamRangeReader.prototype = {
|
159
|
-
get isStreamingSupported() {
|
160
|
-
return false;
|
161
|
-
},
|
162
|
-
read: function read() {
|
163
|
-
return this._reader.read().then(function (_ref2) {
|
164
|
-
var value = _ref2.value,
|
165
|
-
done = _ref2.done;
|
166
|
-
|
167
|
-
if (done) {
|
168
|
-
return {
|
169
|
-
value: undefined,
|
170
|
-
done: true
|
171
|
-
};
|
172
|
-
}
|
173
|
-
return {
|
174
|
-
value: value.buffer,
|
175
|
-
done: false
|
176
|
-
};
|
177
|
-
});
|
178
|
-
},
|
179
|
-
cancel: function cancel(reason) {
|
180
|
-
this._reader.cancel(reason);
|
181
|
-
}
|
182
|
-
};
|
183
|
-
return PDFWorkerStream;
|
184
|
-
}();
|
73
|
+
exports.WorkerTask = WorkerTask;
|
185
74
|
var WorkerMessageHandler = {
|
186
|
-
setup
|
75
|
+
setup(handler, port) {
|
187
76
|
var testMessageProcessed = false;
|
188
|
-
handler.on(
|
77
|
+
handler.on("test", function wphSetupTest(data) {
|
189
78
|
if (testMessageProcessed) {
|
190
79
|
return;
|
191
80
|
}
|
81
|
+
|
192
82
|
testMessageProcessed = true;
|
83
|
+
|
193
84
|
if (!(data instanceof Uint8Array)) {
|
194
|
-
handler.send(
|
85
|
+
handler.send("test", null);
|
195
86
|
return;
|
196
87
|
}
|
197
|
-
|
88
|
+
|
89
|
+
const supportTransfers = data[0] === 255;
|
198
90
|
handler.postMessageTransfers = supportTransfers;
|
199
|
-
|
200
|
-
|
201
|
-
try {
|
202
|
-
xhr.responseType;
|
203
|
-
} catch (e) {
|
204
|
-
responseExists = false;
|
205
|
-
}
|
206
|
-
if (!responseExists) {
|
207
|
-
handler.send('test', false);
|
208
|
-
return;
|
209
|
-
}
|
210
|
-
handler.send('test', {
|
211
|
-
supportTypedArray: true,
|
212
|
-
supportTransfers: supportTransfers
|
91
|
+
handler.send("test", {
|
92
|
+
supportTransfers
|
213
93
|
});
|
214
94
|
});
|
215
|
-
handler.on(
|
95
|
+
handler.on("configure", function wphConfigure(data) {
|
216
96
|
(0, _util.setVerbosityLevel)(data.verbosity);
|
217
97
|
});
|
218
|
-
handler.on(
|
98
|
+
handler.on("GetDocRequest", function wphSetupDoc(data) {
|
219
99
|
return WorkerMessageHandler.createDocumentHandler(data, port);
|
220
100
|
});
|
221
101
|
},
|
222
|
-
|
102
|
+
|
103
|
+
createDocumentHandler(docParams, port) {
|
223
104
|
var pdfManager;
|
224
105
|
var terminated = false;
|
225
106
|
var cancelXHRs = null;
|
226
107
|
var WorkerTasks = [];
|
227
|
-
|
228
|
-
|
108
|
+
const verbosity = (0, _util.getVerbosityLevel)();
|
109
|
+
const apiVersion = docParams.apiVersion;
|
110
|
+
const workerVersion = '2.4.456';
|
111
|
+
|
229
112
|
if (apiVersion !== workerVersion) {
|
230
|
-
throw new Error(
|
113
|
+
throw new Error(`The API version "${apiVersion}" does not match ` + `the Worker version "${workerVersion}".`);
|
231
114
|
}
|
115
|
+
|
116
|
+
const enumerableProperties = [];
|
117
|
+
|
118
|
+
for (const property in []) {
|
119
|
+
enumerableProperties.push(property);
|
120
|
+
}
|
121
|
+
|
122
|
+
if (enumerableProperties.length) {
|
123
|
+
throw new Error("The `Array.prototype` contains unexpected enumerable properties: " + enumerableProperties.join(", ") + "; thus breaking e.g. `for...in` iteration of `Array`s.");
|
124
|
+
}
|
125
|
+
|
232
126
|
var docId = docParams.docId;
|
233
127
|
var docBaseUrl = docParams.docBaseUrl;
|
234
|
-
var workerHandlerName = docParams.docId +
|
128
|
+
var workerHandlerName = docParams.docId + "_worker";
|
235
129
|
var handler = new _message_handler.MessageHandler(workerHandlerName, docId, port);
|
236
130
|
handler.postMessageTransfers = docParams.postMessageTransfers;
|
131
|
+
|
237
132
|
function ensureNotTerminated() {
|
238
133
|
if (terminated) {
|
239
|
-
throw new Error(
|
134
|
+
throw new Error("Worker was terminated");
|
240
135
|
}
|
241
136
|
}
|
137
|
+
|
242
138
|
function startWorkerTask(task) {
|
243
139
|
WorkerTasks.push(task);
|
244
140
|
}
|
141
|
+
|
245
142
|
function finishWorkerTask(task) {
|
246
143
|
task.finish();
|
247
144
|
var i = WorkerTasks.indexOf(task);
|
248
145
|
WorkerTasks.splice(i, 1);
|
249
146
|
}
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
|
256
|
-
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
var parseFailure = function parseFailure(e) {
|
265
|
-
loadDocumentCapability.reject(e);
|
147
|
+
|
148
|
+
async function loadDocument(recoveryMode) {
|
149
|
+
await pdfManager.ensureDoc("checkHeader");
|
150
|
+
await pdfManager.ensureDoc("parseStartXRef");
|
151
|
+
await pdfManager.ensureDoc("parse", [recoveryMode]);
|
152
|
+
|
153
|
+
if (!recoveryMode) {
|
154
|
+
await pdfManager.ensureDoc("checkFirstPage");
|
155
|
+
}
|
156
|
+
|
157
|
+
const [numPages, fingerprint] = await Promise.all([pdfManager.ensureDoc("numPages"), pdfManager.ensureDoc("fingerprint")]);
|
158
|
+
return {
|
159
|
+
numPages,
|
160
|
+
fingerprint
|
266
161
|
};
|
267
|
-
pdfManager.ensureDoc('checkHeader', []).then(function () {
|
268
|
-
pdfManager.ensureDoc('parseStartXRef', []).then(function () {
|
269
|
-
pdfManager.ensureDoc('parse', [recoveryMode]).then(parseSuccess, parseFailure);
|
270
|
-
}, parseFailure);
|
271
|
-
}, parseFailure);
|
272
|
-
return loadDocumentCapability.promise;
|
273
162
|
}
|
163
|
+
|
274
164
|
function getPdfManager(data, evaluatorOptions) {
|
275
165
|
var pdfManagerCapability = (0, _util.createPromiseCapability)();
|
276
166
|
var pdfManager;
|
277
167
|
var source = data.source;
|
168
|
+
|
278
169
|
if (source.data) {
|
279
170
|
try {
|
280
171
|
pdfManager = new _pdf_manager.LocalPdfManager(docId, source.data, source.password, evaluatorOptions, docBaseUrl);
|
@@ -282,33 +173,39 @@ var WorkerMessageHandler = {
|
|
282
173
|
} catch (ex) {
|
283
174
|
pdfManagerCapability.reject(ex);
|
284
175
|
}
|
176
|
+
|
285
177
|
return pdfManagerCapability.promise;
|
286
178
|
}
|
179
|
+
|
287
180
|
var pdfStream,
|
288
181
|
cachedChunks = [];
|
182
|
+
|
289
183
|
try {
|
290
|
-
pdfStream = new PDFWorkerStream(handler);
|
184
|
+
pdfStream = new _worker_stream.PDFWorkerStream(handler);
|
291
185
|
} catch (ex) {
|
292
186
|
pdfManagerCapability.reject(ex);
|
293
187
|
return pdfManagerCapability.promise;
|
294
188
|
}
|
189
|
+
|
295
190
|
var fullRequest = pdfStream.getFullReader();
|
296
191
|
fullRequest.headersReady.then(function () {
|
297
192
|
if (!fullRequest.isRangeSupported) {
|
298
193
|
return;
|
299
194
|
}
|
195
|
+
|
300
196
|
var disableAutoFetch = source.disableAutoFetch || fullRequest.isStreamingSupported;
|
301
197
|
pdfManager = new _pdf_manager.NetworkPdfManager(docId, pdfStream, {
|
302
198
|
msgHandler: handler,
|
303
|
-
url: source.url,
|
304
199
|
password: source.password,
|
305
200
|
length: fullRequest.contentLength,
|
306
|
-
disableAutoFetch
|
201
|
+
disableAutoFetch,
|
307
202
|
rangeChunkSize: source.rangeChunkSize
|
308
203
|
}, evaluatorOptions, docBaseUrl);
|
309
|
-
|
204
|
+
|
205
|
+
for (let i = 0; i < cachedChunks.length; i++) {
|
310
206
|
pdfManager.sendProgressiveData(cachedChunks[i]);
|
311
207
|
}
|
208
|
+
|
312
209
|
cachedChunks = [];
|
313
210
|
pdfManagerCapability.resolve(pdfManager);
|
314
211
|
cancelXHRs = null;
|
@@ -317,95 +214,113 @@ var WorkerMessageHandler = {
|
|
317
214
|
cancelXHRs = null;
|
318
215
|
});
|
319
216
|
var loaded = 0;
|
320
|
-
|
217
|
+
|
218
|
+
var flushChunks = function () {
|
321
219
|
var pdfFile = (0, _util.arraysToBytes)(cachedChunks);
|
220
|
+
|
322
221
|
if (source.length && pdfFile.length !== source.length) {
|
323
|
-
(0, _util.warn)(
|
222
|
+
(0, _util.warn)("reported HTTP length is different from actual");
|
324
223
|
}
|
224
|
+
|
325
225
|
try {
|
326
226
|
pdfManager = new _pdf_manager.LocalPdfManager(docId, pdfFile, source.password, evaluatorOptions, docBaseUrl);
|
327
227
|
pdfManagerCapability.resolve(pdfManager);
|
328
228
|
} catch (ex) {
|
329
229
|
pdfManagerCapability.reject(ex);
|
330
230
|
}
|
231
|
+
|
331
232
|
cachedChunks = [];
|
332
233
|
};
|
234
|
+
|
333
235
|
var readPromise = new Promise(function (resolve, reject) {
|
334
|
-
var readChunk = function
|
236
|
+
var readChunk = function (chunk) {
|
335
237
|
try {
|
336
238
|
ensureNotTerminated();
|
239
|
+
|
337
240
|
if (chunk.done) {
|
338
241
|
if (!pdfManager) {
|
339
242
|
flushChunks();
|
340
243
|
}
|
244
|
+
|
341
245
|
cancelXHRs = null;
|
342
246
|
return;
|
343
247
|
}
|
248
|
+
|
344
249
|
var data = chunk.value;
|
345
250
|
loaded += (0, _util.arrayByteLength)(data);
|
251
|
+
|
346
252
|
if (!fullRequest.isStreamingSupported) {
|
347
|
-
handler.send(
|
348
|
-
loaded
|
253
|
+
handler.send("DocProgress", {
|
254
|
+
loaded,
|
349
255
|
total: Math.max(loaded, fullRequest.contentLength || 0)
|
350
256
|
});
|
351
257
|
}
|
258
|
+
|
352
259
|
if (pdfManager) {
|
353
260
|
pdfManager.sendProgressiveData(data);
|
354
261
|
} else {
|
355
262
|
cachedChunks.push(data);
|
356
263
|
}
|
264
|
+
|
357
265
|
fullRequest.read().then(readChunk, reject);
|
358
266
|
} catch (e) {
|
359
267
|
reject(e);
|
360
268
|
}
|
361
269
|
};
|
270
|
+
|
362
271
|
fullRequest.read().then(readChunk, reject);
|
363
272
|
});
|
364
273
|
readPromise.catch(function (e) {
|
365
274
|
pdfManagerCapability.reject(e);
|
366
275
|
cancelXHRs = null;
|
367
276
|
});
|
368
|
-
|
369
|
-
|
277
|
+
|
278
|
+
cancelXHRs = function (reason) {
|
279
|
+
pdfStream.cancelAllRequests(reason);
|
370
280
|
};
|
281
|
+
|
371
282
|
return pdfManagerCapability.promise;
|
372
283
|
}
|
284
|
+
|
373
285
|
function setupDoc(data) {
|
374
286
|
function onSuccess(doc) {
|
375
287
|
ensureNotTerminated();
|
376
|
-
handler.send(
|
288
|
+
handler.send("GetDoc", {
|
289
|
+
pdfInfo: doc
|
290
|
+
});
|
377
291
|
}
|
378
|
-
|
292
|
+
|
293
|
+
function onFailure(ex) {
|
379
294
|
ensureNotTerminated();
|
380
|
-
|
381
|
-
|
295
|
+
|
296
|
+
if (ex instanceof _util.PasswordException) {
|
297
|
+
var task = new WorkerTask(`PasswordException: response ${ex.code}`);
|
382
298
|
startWorkerTask(task);
|
383
|
-
handler.sendWithPromise(
|
299
|
+
handler.sendWithPromise("PasswordRequest", ex).then(function (data) {
|
384
300
|
finishWorkerTask(task);
|
385
301
|
pdfManager.updatePassword(data.password);
|
386
302
|
pdfManagerReady();
|
387
|
-
}).catch(function (
|
303
|
+
}).catch(function () {
|
388
304
|
finishWorkerTask(task);
|
389
|
-
handler.send(
|
390
|
-
}
|
391
|
-
} else if (
|
392
|
-
handler.send(
|
393
|
-
} else if (e instanceof _util.MissingPDFException) {
|
394
|
-
handler.send('MissingPDF', e);
|
395
|
-
} else if (e instanceof _util.UnexpectedResponseException) {
|
396
|
-
handler.send('UnexpectedResponse', e);
|
305
|
+
handler.send("DocException", ex);
|
306
|
+
});
|
307
|
+
} else if (ex instanceof _util.InvalidPDFException || ex instanceof _util.MissingPDFException || ex instanceof _util.UnexpectedResponseException || ex instanceof _util.UnknownErrorException) {
|
308
|
+
handler.send("DocException", ex);
|
397
309
|
} else {
|
398
|
-
handler.send(
|
310
|
+
handler.send("DocException", new _util.UnknownErrorException(ex.message, ex.toString()));
|
399
311
|
}
|
400
312
|
}
|
313
|
+
|
401
314
|
function pdfManagerReady() {
|
402
315
|
ensureNotTerminated();
|
403
316
|
loadDocument(false).then(onSuccess, function loadFailure(ex) {
|
404
317
|
ensureNotTerminated();
|
405
|
-
|
318
|
+
|
319
|
+
if (!(ex instanceof _core_utils.XRefParseException)) {
|
406
320
|
onFailure(ex);
|
407
321
|
return;
|
408
322
|
}
|
323
|
+
|
409
324
|
pdfManager.requestLoadedStream();
|
410
325
|
pdfManager.onLoadedStream().then(function () {
|
411
326
|
ensureNotTerminated();
|
@@ -413,6 +328,7 @@ var WorkerMessageHandler = {
|
|
413
328
|
});
|
414
329
|
}, onFailure);
|
415
330
|
}
|
331
|
+
|
416
332
|
ensureNotTerminated();
|
417
333
|
var evaluatorOptions = {
|
418
334
|
forceDataSchema: data.disableCreateObjectURL,
|
@@ -424,171 +340,183 @@ var WorkerMessageHandler = {
|
|
424
340
|
};
|
425
341
|
getPdfManager(data, evaluatorOptions).then(function (newPdfManager) {
|
426
342
|
if (terminated) {
|
427
|
-
newPdfManager.terminate();
|
428
|
-
throw new Error(
|
343
|
+
newPdfManager.terminate(new _util.AbortException("Worker was terminated."));
|
344
|
+
throw new Error("Worker was terminated");
|
429
345
|
}
|
346
|
+
|
430
347
|
pdfManager = newPdfManager;
|
431
348
|
pdfManager.onLoadedStream().then(function (stream) {
|
432
|
-
handler.send(
|
349
|
+
handler.send("DataLoaded", {
|
350
|
+
length: stream.bytes.byteLength
|
351
|
+
});
|
433
352
|
});
|
434
353
|
}).then(pdfManagerReady, onFailure);
|
435
354
|
}
|
436
|
-
handler.on('GetPage', function wphSetupGetPage(data) {
|
437
|
-
return pdfManager.getPage(data.pageIndex).then(function (page) {
|
438
|
-
return Promise.all([pdfManager.ensure(page, 'rotate'), pdfManager.ensure(page, 'ref'), pdfManager.ensure(page, 'userUnit'), pdfManager.ensure(page, 'view')]).then(function (_ref5) {
|
439
|
-
var _ref6 = _slicedToArray(_ref5, 4),
|
440
|
-
rotate = _ref6[0],
|
441
|
-
ref = _ref6[1],
|
442
|
-
userUnit = _ref6[2],
|
443
|
-
view = _ref6[3];
|
444
355
|
|
356
|
+
handler.on("GetPage", function wphSetupGetPage(data) {
|
357
|
+
return pdfManager.getPage(data.pageIndex).then(function (page) {
|
358
|
+
return Promise.all([pdfManager.ensure(page, "rotate"), pdfManager.ensure(page, "ref"), pdfManager.ensure(page, "userUnit"), pdfManager.ensure(page, "view")]).then(function ([rotate, ref, userUnit, view]) {
|
445
359
|
return {
|
446
|
-
rotate
|
447
|
-
ref
|
448
|
-
userUnit
|
449
|
-
view
|
360
|
+
rotate,
|
361
|
+
ref,
|
362
|
+
userUnit,
|
363
|
+
view
|
450
364
|
};
|
451
365
|
});
|
452
366
|
});
|
453
367
|
});
|
454
|
-
handler.on(
|
455
|
-
var ref =
|
368
|
+
handler.on("GetPageIndex", function wphSetupGetPageIndex(data) {
|
369
|
+
var ref = _primitives.Ref.get(data.ref.num, data.ref.gen);
|
370
|
+
|
456
371
|
var catalog = pdfManager.pdfDocument.catalog;
|
457
372
|
return catalog.getPageIndex(ref);
|
458
373
|
});
|
459
|
-
handler.on(
|
460
|
-
return pdfManager.ensureCatalog(
|
374
|
+
handler.on("GetDestinations", function wphSetupGetDestinations(data) {
|
375
|
+
return pdfManager.ensureCatalog("destinations");
|
376
|
+
});
|
377
|
+
handler.on("GetDestination", function wphSetupGetDestination(data) {
|
378
|
+
return pdfManager.ensureCatalog("getDestination", [data.id]);
|
379
|
+
});
|
380
|
+
handler.on("GetPageLabels", function wphSetupGetPageLabels(data) {
|
381
|
+
return pdfManager.ensureCatalog("pageLabels");
|
382
|
+
});
|
383
|
+
handler.on("GetPageLayout", function wphSetupGetPageLayout(data) {
|
384
|
+
return pdfManager.ensureCatalog("pageLayout");
|
461
385
|
});
|
462
|
-
handler.on(
|
463
|
-
return pdfManager.ensureCatalog(
|
386
|
+
handler.on("GetPageMode", function wphSetupGetPageMode(data) {
|
387
|
+
return pdfManager.ensureCatalog("pageMode");
|
464
388
|
});
|
465
|
-
handler.on(
|
466
|
-
return pdfManager.ensureCatalog(
|
389
|
+
handler.on("GetViewerPreferences", function (data) {
|
390
|
+
return pdfManager.ensureCatalog("viewerPreferences");
|
467
391
|
});
|
468
|
-
handler.on(
|
469
|
-
return pdfManager.ensureCatalog(
|
392
|
+
handler.on("GetOpenAction", function (data) {
|
393
|
+
return pdfManager.ensureCatalog("openAction");
|
470
394
|
});
|
471
|
-
handler.on(
|
472
|
-
return pdfManager.ensureCatalog(
|
395
|
+
handler.on("GetAttachments", function wphSetupGetAttachments(data) {
|
396
|
+
return pdfManager.ensureCatalog("attachments");
|
473
397
|
});
|
474
|
-
handler.on(
|
475
|
-
return pdfManager.ensureCatalog(
|
398
|
+
handler.on("GetJavaScript", function wphSetupGetJavaScript(data) {
|
399
|
+
return pdfManager.ensureCatalog("javaScript");
|
476
400
|
});
|
477
|
-
handler.on(
|
478
|
-
return pdfManager.ensureCatalog(
|
401
|
+
handler.on("GetOutline", function wphSetupGetOutline(data) {
|
402
|
+
return pdfManager.ensureCatalog("documentOutline");
|
479
403
|
});
|
480
|
-
handler.on(
|
481
|
-
return pdfManager.ensureCatalog(
|
404
|
+
handler.on("GetPermissions", function (data) {
|
405
|
+
return pdfManager.ensureCatalog("permissions");
|
482
406
|
});
|
483
|
-
handler.on(
|
484
|
-
return Promise.all([pdfManager.ensureDoc(
|
407
|
+
handler.on("GetMetadata", function wphSetupGetMetadata(data) {
|
408
|
+
return Promise.all([pdfManager.ensureDoc("documentInfo"), pdfManager.ensureCatalog("metadata")]);
|
485
409
|
});
|
486
|
-
handler.on(
|
410
|
+
handler.on("GetData", function wphSetupGetData(data) {
|
487
411
|
pdfManager.requestLoadedStream();
|
488
412
|
return pdfManager.onLoadedStream().then(function (stream) {
|
489
413
|
return stream.bytes;
|
490
414
|
});
|
491
415
|
});
|
492
|
-
handler.on(
|
416
|
+
handler.on("GetStats", function wphSetupGetStats(data) {
|
493
417
|
return pdfManager.pdfDocument.xref.stats;
|
494
418
|
});
|
495
|
-
handler.on(
|
496
|
-
|
497
|
-
|
498
|
-
|
419
|
+
handler.on("GetAnnotations", function ({
|
420
|
+
pageIndex,
|
421
|
+
intent
|
422
|
+
}) {
|
499
423
|
return pdfManager.getPage(pageIndex).then(function (page) {
|
500
424
|
return page.getAnnotationsData(intent);
|
501
425
|
});
|
502
426
|
});
|
503
|
-
handler.on(
|
427
|
+
handler.on("GetOperatorList", function wphSetupRenderPage(data, sink) {
|
504
428
|
var pageIndex = data.pageIndex;
|
505
429
|
pdfManager.getPage(pageIndex).then(function (page) {
|
506
|
-
var task = new WorkerTask(
|
430
|
+
var task = new WorkerTask(`GetOperatorList: page ${pageIndex}`);
|
507
431
|
startWorkerTask(task);
|
508
|
-
|
509
|
-
var start = Date.now();
|
432
|
+
const start = verbosity >= _util.VerbosityLevel.INFOS ? Date.now() : 0;
|
510
433
|
page.getOperatorList({
|
511
|
-
handler
|
512
|
-
|
434
|
+
handler,
|
435
|
+
sink,
|
436
|
+
task,
|
513
437
|
intent: data.intent,
|
514
438
|
renderInteractiveForms: data.renderInteractiveForms
|
515
|
-
}).then(function (
|
439
|
+
}).then(function (operatorListInfo) {
|
516
440
|
finishWorkerTask(task);
|
517
|
-
|
518
|
-
|
441
|
+
|
442
|
+
if (start) {
|
443
|
+
(0, _util.info)(`page=${pageIndex + 1} - getOperatorList: time=` + `${Date.now() - start}ms, len=${operatorListInfo.length}`);
|
444
|
+
}
|
445
|
+
|
446
|
+
sink.close();
|
447
|
+
}, function (reason) {
|
519
448
|
finishWorkerTask(task);
|
449
|
+
|
520
450
|
if (task.terminated) {
|
521
451
|
return;
|
522
452
|
}
|
523
|
-
|
524
|
-
|
525
|
-
|
526
|
-
if (typeof e === 'string') {
|
527
|
-
wrappedException = {
|
528
|
-
message: e,
|
529
|
-
stack: minimumStackMessage
|
530
|
-
};
|
531
|
-
} else if ((typeof e === 'undefined' ? 'undefined' : _typeof(e)) === 'object') {
|
532
|
-
wrappedException = {
|
533
|
-
message: e.message || e.toString(),
|
534
|
-
stack: e.stack || minimumStackMessage
|
535
|
-
};
|
536
|
-
} else {
|
537
|
-
wrappedException = {
|
538
|
-
message: 'Unknown exception type: ' + (typeof e === 'undefined' ? 'undefined' : _typeof(e)),
|
539
|
-
stack: minimumStackMessage
|
540
|
-
};
|
541
|
-
}
|
542
|
-
handler.send('PageError', {
|
543
|
-
pageNum: pageNum,
|
544
|
-
error: wrappedException,
|
545
|
-
intent: data.intent
|
453
|
+
|
454
|
+
handler.send("UnsupportedFeature", {
|
455
|
+
featureId: _util.UNSUPPORTED_FEATURES.unknown
|
546
456
|
});
|
457
|
+
sink.error(reason);
|
547
458
|
});
|
548
459
|
});
|
549
460
|
}, this);
|
550
|
-
handler.on(
|
461
|
+
handler.on("GetTextContent", function wphExtractText(data, sink) {
|
551
462
|
var pageIndex = data.pageIndex;
|
463
|
+
|
552
464
|
sink.onPull = function (desiredSize) {};
|
465
|
+
|
553
466
|
sink.onCancel = function (reason) {};
|
467
|
+
|
554
468
|
pdfManager.getPage(pageIndex).then(function (page) {
|
555
|
-
var task = new WorkerTask(
|
469
|
+
var task = new WorkerTask("GetTextContent: page " + pageIndex);
|
556
470
|
startWorkerTask(task);
|
557
|
-
|
558
|
-
var start = Date.now();
|
471
|
+
const start = verbosity >= _util.VerbosityLevel.INFOS ? Date.now() : 0;
|
559
472
|
page.extractTextContent({
|
560
|
-
handler
|
561
|
-
task
|
562
|
-
sink
|
473
|
+
handler,
|
474
|
+
task,
|
475
|
+
sink,
|
563
476
|
normalizeWhitespace: data.normalizeWhitespace,
|
564
477
|
combineTextItems: data.combineTextItems
|
565
478
|
}).then(function () {
|
566
479
|
finishWorkerTask(task);
|
567
|
-
|
480
|
+
|
481
|
+
if (start) {
|
482
|
+
(0, _util.info)(`page=${pageIndex + 1} - getTextContent: time=` + `${Date.now() - start}ms`);
|
483
|
+
}
|
484
|
+
|
568
485
|
sink.close();
|
569
486
|
}, function (reason) {
|
570
487
|
finishWorkerTask(task);
|
488
|
+
|
571
489
|
if (task.terminated) {
|
572
490
|
return;
|
573
491
|
}
|
492
|
+
|
574
493
|
sink.error(reason);
|
575
|
-
throw reason;
|
576
494
|
});
|
577
495
|
});
|
578
496
|
});
|
579
|
-
handler.on(
|
497
|
+
handler.on("FontFallback", function (data) {
|
498
|
+
return pdfManager.fontFallback(data.id, handler);
|
499
|
+
});
|
500
|
+
handler.on("Cleanup", function wphCleanup(data) {
|
580
501
|
return pdfManager.cleanup();
|
581
502
|
});
|
582
|
-
handler.on(
|
503
|
+
handler.on("Terminate", function wphTerminate(data) {
|
583
504
|
terminated = true;
|
505
|
+
const waitOn = [];
|
506
|
+
|
584
507
|
if (pdfManager) {
|
585
|
-
pdfManager.terminate();
|
508
|
+
pdfManager.terminate(new _util.AbortException("Worker was terminated."));
|
509
|
+
const cleanupPromise = pdfManager.cleanup();
|
510
|
+
waitOn.push(cleanupPromise);
|
586
511
|
pdfManager = null;
|
512
|
+
} else {
|
513
|
+
(0, _primitives.clearPrimitiveCaches)();
|
587
514
|
}
|
515
|
+
|
588
516
|
if (cancelXHRs) {
|
589
|
-
cancelXHRs();
|
517
|
+
cancelXHRs(new _util.AbortException("Worker was terminated."));
|
590
518
|
}
|
591
|
-
|
519
|
+
|
592
520
|
WorkerTasks.forEach(function (task) {
|
593
521
|
waitOn.push(task.finished);
|
594
522
|
task.terminate();
|
@@ -598,23 +526,26 @@ var WorkerMessageHandler = {
|
|
598
526
|
handler = null;
|
599
527
|
});
|
600
528
|
});
|
601
|
-
handler.on(
|
529
|
+
handler.on("Ready", function wphReady(data) {
|
602
530
|
setupDoc(docParams);
|
603
531
|
docParams = null;
|
604
532
|
});
|
605
533
|
return workerHandlerName;
|
606
534
|
},
|
607
|
-
|
608
|
-
|
535
|
+
|
536
|
+
initializeFromPort(port) {
|
537
|
+
var handler = new _message_handler.MessageHandler("worker", "main", port);
|
609
538
|
WorkerMessageHandler.setup(handler, port);
|
610
|
-
handler.send(
|
539
|
+
handler.send("ready", null);
|
611
540
|
}
|
541
|
+
|
612
542
|
};
|
543
|
+
exports.WorkerMessageHandler = WorkerMessageHandler;
|
544
|
+
|
613
545
|
function isMessagePort(maybePort) {
|
614
|
-
return typeof maybePort.postMessage ===
|
546
|
+
return typeof maybePort.postMessage === "function" && "onmessage" in maybePort;
|
615
547
|
}
|
616
|
-
|
548
|
+
|
549
|
+
if (typeof window === "undefined" && !_is_node.isNodeJS && typeof self !== "undefined" && isMessagePort(self)) {
|
617
550
|
WorkerMessageHandler.initializeFromPort(self);
|
618
|
-
}
|
619
|
-
exports.WorkerTask = WorkerTask;
|
620
|
-
exports.WorkerMessageHandler = WorkerMessageHandler;
|
551
|
+
}
|