pdfjs-dist 2.2.228 → 2.6.347
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/README.md +4 -0
- package/bower.json +1 -1
- package/build/pdf.js +8816 -19300
- 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 +27185 -35746
- package/build/pdf.worker.js.map +1 -1
- package/build/pdf.worker.min.js +22 -1
- package/es5/build/pdf.js +26665 -0
- package/es5/build/pdf.js.map +1 -0
- package/es5/build/pdf.min.js +22 -0
- package/{lib/shared/global_scope.js → es5/build/pdf.worker.entry.js} +5 -10
- package/es5/build/pdf.worker.js +61231 -0
- package/es5/build/pdf.worker.js.map +1 -0
- package/es5/build/pdf.worker.min.js +22 -0
- package/es5/image_decoders/pdf.image_decoders.js +12529 -0
- package/es5/image_decoders/pdf.image_decoders.js.map +1 -0
- package/es5/image_decoders/pdf.image_decoders.min.js +22 -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/pdf_viewer.css +406 -0
- package/es5/web/pdf_viewer.js +7886 -0
- package/es5/web/pdf_viewer.js.map +1 -0
- package/image_decoders/pdf.image_decoders.js +1498 -4832
- 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 +1144 -927
- 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 +747 -716
- package/lib/core/charsets.js +4 -4
- package/lib/core/chunked_stream.js +462 -553
- package/lib/core/cmap.js +231 -277
- package/lib/core/colorspace.js +715 -857
- package/lib/core/core_utils.js +57 -52
- package/lib/core/crypto.js +416 -437
- package/lib/core/document.js +629 -670
- package/lib/core/encodings.js +15 -15
- package/lib/core/evaluator.js +3229 -2800
- package/lib/core/font_renderer.js +135 -178
- package/lib/core/fonts.js +602 -534
- package/lib/core/function.js +355 -279
- package/lib/core/glyphlist.js +4527 -4526
- package/lib/core/image.js +442 -439
- package/lib/core/image_utils.js +221 -61
- 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 +289 -233
- package/lib/core/jpx.js +161 -143
- package/lib/core/jpx_stream.js +28 -28
- package/lib/core/metrics.js +2928 -2928
- package/lib/core/murmurhash3.js +87 -102
- package/lib/core/obj.js +1343 -1300
- package/lib/core/operator_list.js +90 -67
- package/lib/core/parser.js +990 -987
- package/lib/core/pattern.js +105 -77
- package/lib/core/pdf_manager.js +149 -316
- package/lib/core/primitives.js +156 -104
- 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 +89 -69
- package/lib/core/unicode.js +1654 -1654
- package/lib/core/worker.js +275 -290
- package/lib/core/worker_stream.js +101 -210
- package/lib/core/writer.js +242 -0
- package/lib/display/annotation_layer.js +772 -1041
- package/lib/display/annotation_storage.js +89 -0
- package/lib/display/api.js +1575 -1868
- package/lib/display/api_compatibility.js +12 -17
- package/lib/display/canvas.js +370 -222
- package/lib/display/content_disposition.js +40 -59
- package/lib/display/display_utils.js +341 -536
- package/lib/display/fetch_stream.js +188 -304
- package/lib/display/font_loader.js +282 -414
- package/lib/display/metadata.js +81 -99
- package/lib/display/network.js +362 -511
- package/lib/display/network_utils.js +25 -18
- package/lib/display/node_stream.js +283 -465
- package/lib/display/node_utils.js +87 -0
- package/lib/display/optional_content_config.js +184 -0
- package/lib/display/pattern_helper.js +93 -44
- package/lib/display/svg.js +1163 -1401
- package/lib/display/text_layer.js +154 -137
- package/lib/display/transport_stream.js +237 -375
- 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 +37 -37
- package/lib/pdf.js +220 -58
- 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 +271 -306
- package/lib/test/unit/annotation_spec.js +1902 -763
- package/lib/test/unit/annotation_storage_spec.js +83 -0
- package/lib/test/unit/api_spec.js +790 -592
- package/lib/test/unit/bidi_spec.js +7 -7
- package/lib/test/unit/cff_parser_spec.js +73 -72
- package/lib/test/unit/clitests_helper.js +7 -9
- package/lib/test/unit/cmap_spec.js +86 -88
- package/lib/test/unit/colorspace_spec.js +346 -154
- package/lib/test/unit/core_utils_spec.js +125 -105
- package/lib/test/unit/crypto_spec.js +232 -185
- package/lib/test/unit/custom_spec.js +150 -24
- package/lib/test/unit/display_svg_spec.js +34 -39
- package/lib/test/unit/display_utils_spec.js +139 -149
- package/lib/test/unit/document_spec.js +128 -17
- package/lib/test/unit/encodings_spec.js +12 -34
- package/lib/test/unit/evaluator_spec.js +112 -91
- package/lib/test/unit/fetch_stream_spec.js +31 -29
- package/lib/test/unit/function_spec.js +206 -204
- package/lib/test/unit/jasmine-boot.js +48 -32
- package/lib/test/unit/message_handler_spec.js +173 -159
- package/lib/test/unit/metadata_spec.js +71 -71
- package/lib/test/unit/murmurhash3_spec.js +12 -12
- package/lib/test/unit/network_spec.js +13 -11
- package/lib/test/unit/network_utils_spec.js +158 -144
- package/lib/test/unit/node_stream_spec.js +76 -90
- package/lib/test/unit/parser_spec.js +108 -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 +337 -156
- package/lib/test/unit/stream_spec.js +16 -14
- package/lib/test/unit/test_utils.js +91 -304
- package/lib/test/unit/testreporter.js +33 -22
- package/lib/test/unit/type1_parser_spec.js +42 -42
- package/lib/test/unit/ui_utils_spec.js +299 -461
- package/lib/test/unit/unicode_spec.js +42 -42
- package/lib/test/unit/util_spec.js +129 -149
- package/lib/test/unit/writer_spec.js +84 -0
- package/lib/web/annotation_layer_builder.js +78 -111
- package/lib/web/app.js +1542 -1267
- package/lib/web/app_options.js +76 -91
- package/lib/web/base_tree_viewer.js +100 -0
- package/lib/web/base_viewer.js +869 -834
- package/lib/web/chromecom.js +165 -252
- package/lib/web/debugger.js +149 -205
- package/lib/web/download_manager.js +34 -58
- package/lib/web/firefox_print_service.js +62 -34
- package/lib/web/firefoxcom.js +206 -374
- package/lib/web/genericcom.js +26 -108
- package/lib/web/genericl10n.js +24 -153
- package/lib/web/grab_to_pan.js +30 -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 +150 -126
- package/lib/web/pdf_cursor_tools.js +75 -102
- package/lib/web/pdf_document_properties.js +229 -383
- package/lib/web/pdf_find_bar.js +136 -170
- package/lib/web/pdf_find_controller.js +492 -548
- package/lib/web/pdf_find_utils.js +13 -13
- package/lib/web/pdf_history.js +397 -406
- package/lib/web/pdf_layer_viewer.js +208 -0
- package/lib/web/pdf_link_service.js +304 -348
- package/lib/web/pdf_outline_viewer.js +119 -212
- package/lib/web/pdf_page_view.js +474 -513
- package/lib/web/pdf_presentation_mode.js +308 -357
- package/lib/web/pdf_print_service.js +96 -110
- package/lib/web/pdf_rendering_queue.js +87 -108
- package/lib/web/pdf_sidebar.js +286 -302
- 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 +289 -297
- package/lib/web/pdf_thumbnail_viewer.js +202 -206
- package/lib/web/pdf_viewer.component.js +20 -21
- package/lib/web/pdf_viewer.js +55 -115
- package/lib/web/preferences.js +69 -273
- package/lib/web/secondary_toolbar.js +164 -196
- package/lib/web/text_layer_builder.js +284 -319
- package/lib/web/toolbar.js +217 -210
- package/lib/web/ui_utils.js +274 -421
- package/lib/web/view_history.js +52 -226
- package/lib/web/viewer_compatibility.js +21 -6
- package/package.json +4 -9
- package/types/display/annotation_layer.d.ts +61 -0
- package/types/display/annotation_storage.d.ts +36 -0
- package/types/display/api.d.ts +1107 -0
- package/types/display/api_compatibility.d.ts +1 -0
- package/types/display/canvas.d.ts +4 -0
- package/types/display/content_disposition.d.ts +7 -0
- package/types/display/display_utils.d.ts +243 -0
- package/types/display/fetch_stream.d.ts +67 -0
- package/types/display/font_loader.d.ts +19 -0
- package/types/display/metadata.d.ts +9 -0
- package/types/display/network.d.ts +80 -0
- package/types/display/network_utils.d.ts +14 -0
- package/types/display/node_stream.d.ts +72 -0
- package/types/display/node_utils.d.ts +6 -0
- package/types/display/optional_content_config.d.ts +12 -0
- package/types/display/pattern_helper.d.ts +5 -0
- package/types/display/svg.d.ts +2 -0
- package/types/display/text_layer.d.ts +83 -0
- package/types/display/transport_stream.d.ts +57 -0
- package/types/display/webgl.d.ts +20 -0
- package/types/display/worker_options.d.ts +27 -0
- package/types/display/xml_parser.d.ts +35 -0
- package/types/pdf.d.ts +33 -0
- package/types/shared/compatibility.d.ts +1 -0
- package/types/shared/is_node.d.ts +1 -0
- package/types/shared/message_handler.d.ts +62 -0
- package/types/shared/util.d.ts +421 -0
- package/web/images/shadow.png +0 -0
- package/web/pdf_viewer.css +29 -27
- package/web/pdf_viewer.js +3524 -4746
- package/web/pdf_viewer.js.map +1 -1
- package/webpack.js +6 -5
- package/external/streams/streams-lib.js +0 -3962
- package/external/url/url-lib.js +0 -627
- package/lib/shared/streams_polyfill.js +0 -43
- package/lib/shared/url_polyfill.js +0 -56
- package/web/images/texture.png +0 -0
@@ -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.
|
@@ -26,252 +26,143 @@ Object.defineProperty(exports, "__esModule", {
|
|
26
26
|
});
|
27
27
|
exports.PDFWorkerStream = void 0;
|
28
28
|
|
29
|
-
var
|
30
|
-
|
31
|
-
var _util = require("../shared/util");
|
32
|
-
|
33
|
-
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
34
|
-
|
35
|
-
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); } }
|
36
|
-
|
37
|
-
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); }); }; }
|
38
|
-
|
39
|
-
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
40
|
-
|
41
|
-
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); } }
|
42
|
-
|
43
|
-
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
|
44
|
-
|
45
|
-
var PDFWorkerStream =
|
46
|
-
/*#__PURE__*/
|
47
|
-
function () {
|
48
|
-
function PDFWorkerStream(msgHandler) {
|
49
|
-
_classCallCheck(this, PDFWorkerStream);
|
29
|
+
var _util = require("../shared/util.js");
|
50
30
|
|
31
|
+
class PDFWorkerStream {
|
32
|
+
constructor(msgHandler) {
|
51
33
|
this._msgHandler = msgHandler;
|
52
34
|
this._contentLength = null;
|
53
35
|
this._fullRequestReader = null;
|
54
36
|
this._rangeRequestReaders = [];
|
55
37
|
}
|
56
38
|
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
return this._fullRequestReader;
|
63
|
-
}
|
64
|
-
}, {
|
65
|
-
key: "getRangeReader",
|
66
|
-
value: function getRangeReader(begin, end) {
|
67
|
-
var reader = new PDFWorkerStreamRangeReader(begin, end, this._msgHandler);
|
39
|
+
getFullReader() {
|
40
|
+
(0, _util.assert)(!this._fullRequestReader, "PDFWorkerStream.getFullReader can only be called once.");
|
41
|
+
this._fullRequestReader = new PDFWorkerStreamReader(this._msgHandler);
|
42
|
+
return this._fullRequestReader;
|
43
|
+
}
|
68
44
|
|
69
|
-
|
45
|
+
getRangeReader(begin, end) {
|
46
|
+
const reader = new PDFWorkerStreamRangeReader(begin, end, this._msgHandler);
|
70
47
|
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
var readers = this._rangeRequestReaders.slice(0);
|
81
|
-
|
82
|
-
readers.forEach(function (reader) {
|
83
|
-
reader.cancel(reason);
|
84
|
-
});
|
48
|
+
this._rangeRequestReaders.push(reader);
|
49
|
+
|
50
|
+
return reader;
|
51
|
+
}
|
52
|
+
|
53
|
+
cancelAllRequests(reason) {
|
54
|
+
if (this._fullRequestReader) {
|
55
|
+
this._fullRequestReader.cancel(reason);
|
85
56
|
}
|
86
|
-
}]);
|
87
57
|
|
88
|
-
|
89
|
-
}();
|
58
|
+
const readers = this._rangeRequestReaders.slice(0);
|
90
59
|
|
91
|
-
|
60
|
+
readers.forEach(function (reader) {
|
61
|
+
reader.cancel(reason);
|
62
|
+
});
|
63
|
+
}
|
92
64
|
|
93
|
-
|
94
|
-
/*#__PURE__*/
|
95
|
-
function () {
|
96
|
-
function PDFWorkerStreamReader(msgHandler) {
|
97
|
-
var _this = this;
|
65
|
+
}
|
98
66
|
|
99
|
-
|
67
|
+
exports.PDFWorkerStream = PDFWorkerStream;
|
100
68
|
|
69
|
+
class PDFWorkerStreamReader {
|
70
|
+
constructor(msgHandler) {
|
101
71
|
this._msgHandler = msgHandler;
|
102
72
|
this.onProgress = null;
|
103
73
|
this._contentLength = null;
|
104
74
|
this._isRangeSupported = false;
|
105
75
|
this._isStreamingSupported = false;
|
106
76
|
|
107
|
-
|
77
|
+
const readableStream = this._msgHandler.sendWithStream("GetReader");
|
108
78
|
|
109
79
|
this._reader = readableStream.getReader();
|
110
|
-
this._headersReady = this._msgHandler.sendWithPromise(
|
111
|
-
|
112
|
-
|
113
|
-
|
80
|
+
this._headersReady = this._msgHandler.sendWithPromise("ReaderHeadersReady").then(data => {
|
81
|
+
this._isStreamingSupported = data.isStreamingSupported;
|
82
|
+
this._isRangeSupported = data.isRangeSupported;
|
83
|
+
this._contentLength = data.contentLength;
|
114
84
|
});
|
115
85
|
}
|
116
86
|
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
done: true
|
145
|
-
});
|
146
|
-
|
147
|
-
case 7:
|
148
|
-
return _context.abrupt("return", {
|
149
|
-
value: value.buffer,
|
150
|
-
done: false
|
151
|
-
});
|
152
|
-
|
153
|
-
case 8:
|
154
|
-
case "end":
|
155
|
-
return _context.stop();
|
156
|
-
}
|
157
|
-
}
|
158
|
-
}, _callee, this);
|
159
|
-
}));
|
160
|
-
|
161
|
-
function read() {
|
162
|
-
return _read.apply(this, arguments);
|
163
|
-
}
|
164
|
-
|
165
|
-
return read;
|
166
|
-
}()
|
167
|
-
}, {
|
168
|
-
key: "cancel",
|
169
|
-
value: function cancel(reason) {
|
170
|
-
this._reader.cancel(reason);
|
171
|
-
}
|
172
|
-
}, {
|
173
|
-
key: "headersReady",
|
174
|
-
get: function get() {
|
175
|
-
return this._headersReady;
|
176
|
-
}
|
177
|
-
}, {
|
178
|
-
key: "contentLength",
|
179
|
-
get: function get() {
|
180
|
-
return this._contentLength;
|
181
|
-
}
|
182
|
-
}, {
|
183
|
-
key: "isStreamingSupported",
|
184
|
-
get: function get() {
|
185
|
-
return this._isStreamingSupported;
|
186
|
-
}
|
187
|
-
}, {
|
188
|
-
key: "isRangeSupported",
|
189
|
-
get: function get() {
|
190
|
-
return this._isRangeSupported;
|
87
|
+
get headersReady() {
|
88
|
+
return this._headersReady;
|
89
|
+
}
|
90
|
+
|
91
|
+
get contentLength() {
|
92
|
+
return this._contentLength;
|
93
|
+
}
|
94
|
+
|
95
|
+
get isStreamingSupported() {
|
96
|
+
return this._isStreamingSupported;
|
97
|
+
}
|
98
|
+
|
99
|
+
get isRangeSupported() {
|
100
|
+
return this._isRangeSupported;
|
101
|
+
}
|
102
|
+
|
103
|
+
async read() {
|
104
|
+
const {
|
105
|
+
value,
|
106
|
+
done
|
107
|
+
} = await this._reader.read();
|
108
|
+
|
109
|
+
if (done) {
|
110
|
+
return {
|
111
|
+
value: undefined,
|
112
|
+
done: true
|
113
|
+
};
|
191
114
|
}
|
192
|
-
}]);
|
193
115
|
|
194
|
-
|
195
|
-
|
116
|
+
return {
|
117
|
+
value: value.buffer,
|
118
|
+
done: false
|
119
|
+
};
|
120
|
+
}
|
121
|
+
|
122
|
+
cancel(reason) {
|
123
|
+
this._reader.cancel(reason);
|
124
|
+
}
|
196
125
|
|
197
|
-
|
198
|
-
/*#__PURE__*/
|
199
|
-
function () {
|
200
|
-
function PDFWorkerStreamRangeReader(begin, end, msgHandler) {
|
201
|
-
_classCallCheck(this, PDFWorkerStreamRangeReader);
|
126
|
+
}
|
202
127
|
|
128
|
+
class PDFWorkerStreamRangeReader {
|
129
|
+
constructor(begin, end, msgHandler) {
|
203
130
|
this._msgHandler = msgHandler;
|
204
131
|
this.onProgress = null;
|
205
132
|
|
206
|
-
|
207
|
-
begin
|
208
|
-
end
|
133
|
+
const readableStream = this._msgHandler.sendWithStream("GetRangeReader", {
|
134
|
+
begin,
|
135
|
+
end
|
209
136
|
});
|
210
137
|
|
211
138
|
this._reader = readableStream.getReader();
|
212
139
|
}
|
213
140
|
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
case 2:
|
230
|
-
_ref2 = _context2.sent;
|
231
|
-
value = _ref2.value;
|
232
|
-
done = _ref2.done;
|
233
|
-
|
234
|
-
if (!done) {
|
235
|
-
_context2.next = 7;
|
236
|
-
break;
|
237
|
-
}
|
238
|
-
|
239
|
-
return _context2.abrupt("return", {
|
240
|
-
value: undefined,
|
241
|
-
done: true
|
242
|
-
});
|
243
|
-
|
244
|
-
case 7:
|
245
|
-
return _context2.abrupt("return", {
|
246
|
-
value: value.buffer,
|
247
|
-
done: false
|
248
|
-
});
|
249
|
-
|
250
|
-
case 8:
|
251
|
-
case "end":
|
252
|
-
return _context2.stop();
|
253
|
-
}
|
254
|
-
}
|
255
|
-
}, _callee2, this);
|
256
|
-
}));
|
257
|
-
|
258
|
-
function read() {
|
259
|
-
return _read2.apply(this, arguments);
|
260
|
-
}
|
261
|
-
|
262
|
-
return read;
|
263
|
-
}()
|
264
|
-
}, {
|
265
|
-
key: "cancel",
|
266
|
-
value: function cancel(reason) {
|
267
|
-
this._reader.cancel(reason);
|
268
|
-
}
|
269
|
-
}, {
|
270
|
-
key: "isStreamingSupported",
|
271
|
-
get: function get() {
|
272
|
-
return false;
|
141
|
+
get isStreamingSupported() {
|
142
|
+
return false;
|
143
|
+
}
|
144
|
+
|
145
|
+
async read() {
|
146
|
+
const {
|
147
|
+
value,
|
148
|
+
done
|
149
|
+
} = await this._reader.read();
|
150
|
+
|
151
|
+
if (done) {
|
152
|
+
return {
|
153
|
+
value: undefined,
|
154
|
+
done: true
|
155
|
+
};
|
273
156
|
}
|
274
|
-
}]);
|
275
157
|
|
276
|
-
|
277
|
-
|
158
|
+
return {
|
159
|
+
value: value.buffer,
|
160
|
+
done: false
|
161
|
+
};
|
162
|
+
}
|
163
|
+
|
164
|
+
cancel(reason) {
|
165
|
+
this._reader.cancel(reason);
|
166
|
+
}
|
167
|
+
|
168
|
+
}
|
@@ -0,0 +1,242 @@
|
|
1
|
+
/**
|
2
|
+
* @licstart The following is the entire license notice for the
|
3
|
+
* Javascript code in this page
|
4
|
+
*
|
5
|
+
* Copyright 2020 Mozilla Foundation
|
6
|
+
*
|
7
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
8
|
+
* you may not use this file except in compliance with the License.
|
9
|
+
* You may obtain a copy of the License at
|
10
|
+
*
|
11
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
12
|
+
*
|
13
|
+
* Unless required by applicable law or agreed to in writing, software
|
14
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
15
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
16
|
+
* See the License for the specific language governing permissions and
|
17
|
+
* limitations under the License.
|
18
|
+
*
|
19
|
+
* @licend The above is the entire license notice for the
|
20
|
+
* Javascript code in this page
|
21
|
+
*/
|
22
|
+
"use strict";
|
23
|
+
|
24
|
+
Object.defineProperty(exports, "__esModule", {
|
25
|
+
value: true
|
26
|
+
});
|
27
|
+
exports.writeDict = writeDict;
|
28
|
+
exports.incrementalUpdate = incrementalUpdate;
|
29
|
+
|
30
|
+
var _util = require("../shared/util.js");
|
31
|
+
|
32
|
+
var _primitives = require("./primitives.js");
|
33
|
+
|
34
|
+
var _crypto = require("./crypto.js");
|
35
|
+
|
36
|
+
function writeDict(dict, buffer, transform) {
|
37
|
+
buffer.push("<<");
|
38
|
+
|
39
|
+
for (const key of dict.getKeys()) {
|
40
|
+
buffer.push(` /${key} `);
|
41
|
+
writeValue(dict.getRaw(key), buffer, transform);
|
42
|
+
}
|
43
|
+
|
44
|
+
buffer.push(">>");
|
45
|
+
}
|
46
|
+
|
47
|
+
function writeStream(stream, buffer, transform) {
|
48
|
+
writeDict(stream.dict, buffer, transform);
|
49
|
+
buffer.push(" stream\n");
|
50
|
+
let string = (0, _util.bytesToString)(stream.getBytes());
|
51
|
+
|
52
|
+
if (transform !== null) {
|
53
|
+
string = transform.encryptString(string);
|
54
|
+
}
|
55
|
+
|
56
|
+
buffer.push(string);
|
57
|
+
buffer.push("\nendstream\n");
|
58
|
+
}
|
59
|
+
|
60
|
+
function writeArray(array, buffer, transform) {
|
61
|
+
buffer.push("[");
|
62
|
+
let first = true;
|
63
|
+
|
64
|
+
for (const val of array) {
|
65
|
+
if (!first) {
|
66
|
+
buffer.push(" ");
|
67
|
+
} else {
|
68
|
+
first = false;
|
69
|
+
}
|
70
|
+
|
71
|
+
writeValue(val, buffer, transform);
|
72
|
+
}
|
73
|
+
|
74
|
+
buffer.push("]");
|
75
|
+
}
|
76
|
+
|
77
|
+
function numberToString(value) {
|
78
|
+
if (Number.isInteger(value)) {
|
79
|
+
return value.toString();
|
80
|
+
}
|
81
|
+
|
82
|
+
const roundedValue = Math.round(value * 100);
|
83
|
+
|
84
|
+
if (roundedValue % 100 === 0) {
|
85
|
+
return (roundedValue / 100).toString();
|
86
|
+
}
|
87
|
+
|
88
|
+
if (roundedValue % 10 === 0) {
|
89
|
+
return value.toFixed(1);
|
90
|
+
}
|
91
|
+
|
92
|
+
return value.toFixed(2);
|
93
|
+
}
|
94
|
+
|
95
|
+
function writeValue(value, buffer, transform) {
|
96
|
+
if ((0, _primitives.isName)(value)) {
|
97
|
+
buffer.push(`/${value.name}`);
|
98
|
+
} else if ((0, _primitives.isRef)(value)) {
|
99
|
+
buffer.push(`${value.num} ${value.gen} R`);
|
100
|
+
} else if (Array.isArray(value)) {
|
101
|
+
writeArray(value, buffer, transform);
|
102
|
+
} else if (typeof value === "string") {
|
103
|
+
if (transform !== null) {
|
104
|
+
value = transform.encryptString(value);
|
105
|
+
}
|
106
|
+
|
107
|
+
buffer.push(`(${(0, _util.escapeString)(value)})`);
|
108
|
+
} else if (typeof value === "number") {
|
109
|
+
buffer.push(numberToString(value));
|
110
|
+
} else if ((0, _primitives.isDict)(value)) {
|
111
|
+
writeDict(value, buffer, transform);
|
112
|
+
} else if ((0, _primitives.isStream)(value)) {
|
113
|
+
writeStream(value, buffer, transform);
|
114
|
+
}
|
115
|
+
}
|
116
|
+
|
117
|
+
function writeInt(number, size, offset, buffer) {
|
118
|
+
for (let i = size + offset - 1; i > offset - 1; i--) {
|
119
|
+
buffer[i] = number & 0xff;
|
120
|
+
number >>= 8;
|
121
|
+
}
|
122
|
+
|
123
|
+
return offset + size;
|
124
|
+
}
|
125
|
+
|
126
|
+
function writeString(string, offset, buffer) {
|
127
|
+
for (let i = 0, len = string.length; i < len; i++) {
|
128
|
+
buffer[offset + i] = string.charCodeAt(i) & 0xff;
|
129
|
+
}
|
130
|
+
}
|
131
|
+
|
132
|
+
function computeMD5(filesize, xrefInfo) {
|
133
|
+
const time = Math.floor(Date.now() / 1000);
|
134
|
+
const filename = xrefInfo.filename || "";
|
135
|
+
const md5Buffer = [time.toString(), filename, filesize.toString()];
|
136
|
+
let md5BufferLen = md5Buffer.reduce((a, str) => a + str.length, 0);
|
137
|
+
|
138
|
+
for (const value of Object.values(xrefInfo.info)) {
|
139
|
+
md5Buffer.push(value);
|
140
|
+
md5BufferLen += value.length;
|
141
|
+
}
|
142
|
+
|
143
|
+
const array = new Uint8Array(md5BufferLen);
|
144
|
+
let offset = 0;
|
145
|
+
|
146
|
+
for (const str of md5Buffer) {
|
147
|
+
writeString(str, offset, array);
|
148
|
+
offset += str.length;
|
149
|
+
}
|
150
|
+
|
151
|
+
return (0, _util.bytesToString)((0, _crypto.calculateMD5)(array));
|
152
|
+
}
|
153
|
+
|
154
|
+
function incrementalUpdate(originalData, xrefInfo, newRefs) {
|
155
|
+
const newXref = new _primitives.Dict(null);
|
156
|
+
const refForXrefTable = xrefInfo.newRef;
|
157
|
+
let buffer, baseOffset;
|
158
|
+
const lastByte = originalData[originalData.length - 1];
|
159
|
+
|
160
|
+
if (lastByte === 0x0a || lastByte === 0x0d) {
|
161
|
+
buffer = [];
|
162
|
+
baseOffset = originalData.length;
|
163
|
+
} else {
|
164
|
+
buffer = ["\n"];
|
165
|
+
baseOffset = originalData.length + 1;
|
166
|
+
}
|
167
|
+
|
168
|
+
newXref.set("Size", refForXrefTable.num + 1);
|
169
|
+
newXref.set("Prev", xrefInfo.startXRef);
|
170
|
+
newXref.set("Type", _primitives.Name.get("XRef"));
|
171
|
+
|
172
|
+
if (xrefInfo.rootRef !== null) {
|
173
|
+
newXref.set("Root", xrefInfo.rootRef);
|
174
|
+
}
|
175
|
+
|
176
|
+
if (xrefInfo.infoRef !== null) {
|
177
|
+
newXref.set("Info", xrefInfo.infoRef);
|
178
|
+
}
|
179
|
+
|
180
|
+
if (xrefInfo.encrypt !== null) {
|
181
|
+
newXref.set("Encrypt", xrefInfo.encrypt);
|
182
|
+
}
|
183
|
+
|
184
|
+
newRefs.push({
|
185
|
+
ref: refForXrefTable,
|
186
|
+
data: ""
|
187
|
+
});
|
188
|
+
newRefs = newRefs.sort((a, b) => {
|
189
|
+
return a.ref.num - b.ref.num;
|
190
|
+
});
|
191
|
+
const xrefTableData = [[0, 1, 0xffff]];
|
192
|
+
const indexes = [0, 1];
|
193
|
+
let maxOffset = 0;
|
194
|
+
|
195
|
+
for (const {
|
196
|
+
ref,
|
197
|
+
data
|
198
|
+
} of newRefs) {
|
199
|
+
maxOffset = Math.max(maxOffset, baseOffset);
|
200
|
+
xrefTableData.push([1, baseOffset, Math.min(ref.gen, 0xffff)]);
|
201
|
+
baseOffset += data.length;
|
202
|
+
indexes.push(ref.num);
|
203
|
+
indexes.push(1);
|
204
|
+
buffer.push(data);
|
205
|
+
}
|
206
|
+
|
207
|
+
newXref.set("Index", indexes);
|
208
|
+
|
209
|
+
if (xrefInfo.fileIds.length !== 0) {
|
210
|
+
const md5 = computeMD5(baseOffset, xrefInfo);
|
211
|
+
newXref.set("ID", [xrefInfo.fileIds[0], md5]);
|
212
|
+
}
|
213
|
+
|
214
|
+
const offsetSize = Math.ceil(Math.log2(maxOffset) / 8);
|
215
|
+
const sizes = [1, offsetSize, 2];
|
216
|
+
const structSize = sizes[0] + sizes[1] + sizes[2];
|
217
|
+
const tableLength = structSize * xrefTableData.length;
|
218
|
+
newXref.set("W", sizes);
|
219
|
+
newXref.set("Length", tableLength);
|
220
|
+
buffer.push(`${refForXrefTable.num} ${refForXrefTable.gen} obj\n`);
|
221
|
+
writeDict(newXref, buffer, null);
|
222
|
+
buffer.push(" stream\n");
|
223
|
+
const bufferLen = buffer.reduce((a, str) => a + str.length, 0);
|
224
|
+
const footer = `\nendstream\nendobj\nstartxref\n${baseOffset}\n%%EOF\n`;
|
225
|
+
const array = new Uint8Array(originalData.length + bufferLen + tableLength + footer.length);
|
226
|
+
array.set(originalData);
|
227
|
+
let offset = originalData.length;
|
228
|
+
|
229
|
+
for (const str of buffer) {
|
230
|
+
writeString(str, offset, array);
|
231
|
+
offset += str.length;
|
232
|
+
}
|
233
|
+
|
234
|
+
for (const [type, objOffset, gen] of xrefTableData) {
|
235
|
+
offset = writeInt(type, sizes[0], offset, array);
|
236
|
+
offset = writeInt(objOffset, sizes[1], offset, array);
|
237
|
+
offset = writeInt(gen, sizes[2], offset, array);
|
238
|
+
}
|
239
|
+
|
240
|
+
writeString(footer, offset, array);
|
241
|
+
return array;
|
242
|
+
}
|