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
@@ -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.
|
@@ -21,51 +21,51 @@
|
|
21
21
|
*/
|
22
22
|
"use strict";
|
23
23
|
|
24
|
-
var
|
24
|
+
var _test_utils = require("./test_utils.js");
|
25
25
|
|
26
|
-
var
|
26
|
+
var _primitives = require("../../core/primitives.js");
|
27
27
|
|
28
|
-
var
|
28
|
+
var _util = require("../../shared/util.js");
|
29
29
|
|
30
|
-
var
|
30
|
+
var _stream = require("../../core/stream.js");
|
31
31
|
|
32
|
-
var
|
32
|
+
var _operator_list = require("../../core/operator_list.js");
|
33
33
|
|
34
|
-
var
|
34
|
+
var _evaluator = require("../../core/evaluator.js");
|
35
35
|
|
36
|
-
var
|
36
|
+
var _worker = require("../../core/worker.js");
|
37
37
|
|
38
|
-
describe(
|
38
|
+
describe("evaluator", function () {
|
39
39
|
function HandlerMock() {
|
40
40
|
this.inputs = [];
|
41
41
|
}
|
42
42
|
|
43
43
|
HandlerMock.prototype = {
|
44
|
-
send
|
44
|
+
send(name, data) {
|
45
45
|
this.inputs.push({
|
46
|
-
name
|
47
|
-
data
|
46
|
+
name,
|
47
|
+
data
|
48
48
|
});
|
49
49
|
}
|
50
|
+
|
50
51
|
};
|
51
52
|
|
52
53
|
function ResourcesMock() {}
|
53
54
|
|
54
55
|
ResourcesMock.prototype = {
|
55
|
-
get
|
56
|
+
get(name) {
|
56
57
|
return this[name];
|
57
58
|
}
|
58
|
-
};
|
59
59
|
|
60
|
-
|
60
|
+
};
|
61
61
|
|
62
62
|
function runOperatorListCheck(evaluator, stream, resources, callback) {
|
63
63
|
var result = new _operator_list.OperatorList();
|
64
|
-
var task = new _worker.WorkerTask(
|
64
|
+
var task = new _worker.WorkerTask("OperatorListCheck");
|
65
65
|
evaluator.getOperatorList({
|
66
|
-
stream
|
67
|
-
task
|
68
|
-
resources
|
66
|
+
stream,
|
67
|
+
task,
|
68
|
+
resources,
|
69
69
|
operatorList: result
|
70
70
|
}).then(function () {
|
71
71
|
callback(result);
|
@@ -77,19 +77,19 @@ describe('evaluator', function () {
|
|
77
77
|
var partialEvaluator;
|
78
78
|
beforeAll(function (done) {
|
79
79
|
partialEvaluator = new _evaluator.PartialEvaluator({
|
80
|
-
pdfManager: new PdfManagerMock(),
|
81
80
|
xref: new _test_utils.XRefMock(),
|
82
81
|
handler: new HandlerMock(),
|
83
|
-
pageIndex: 0
|
82
|
+
pageIndex: 0,
|
83
|
+
idFactory: (0, _test_utils.createIdFactory)(0)
|
84
84
|
});
|
85
85
|
done();
|
86
86
|
});
|
87
87
|
afterAll(function () {
|
88
88
|
partialEvaluator = null;
|
89
89
|
});
|
90
|
-
describe(
|
91
|
-
it(
|
92
|
-
var stream = new _stream.StringStream(
|
90
|
+
describe("splitCombinedOperations", function () {
|
91
|
+
it("should reject unknown operations", function (done) {
|
92
|
+
var stream = new _stream.StringStream("fTT");
|
93
93
|
runOperatorListCheck(partialEvaluator, stream, new ResourcesMock(), function (result) {
|
94
94
|
expect(!!result.fnArray && !!result.argsArray).toEqual(true);
|
95
95
|
expect(result.fnArray.length).toEqual(1);
|
@@ -98,8 +98,8 @@ describe('evaluator', function () {
|
|
98
98
|
done();
|
99
99
|
});
|
100
100
|
});
|
101
|
-
it(
|
102
|
-
var stream = new _stream.StringStream(
|
101
|
+
it("should handle one operation", function (done) {
|
102
|
+
var stream = new _stream.StringStream("Q");
|
103
103
|
runOperatorListCheck(partialEvaluator, stream, new ResourcesMock(), function (result) {
|
104
104
|
expect(!!result.fnArray && !!result.argsArray).toEqual(true);
|
105
105
|
expect(result.fnArray.length).toEqual(1);
|
@@ -107,10 +107,10 @@ describe('evaluator', function () {
|
|
107
107
|
done();
|
108
108
|
});
|
109
109
|
});
|
110
|
-
it(
|
110
|
+
it("should handle two glued operations", function (done) {
|
111
111
|
var resources = new ResourcesMock();
|
112
112
|
resources.Res1 = {};
|
113
|
-
var stream = new _stream.StringStream(
|
113
|
+
var stream = new _stream.StringStream("/Res1 DoQ");
|
114
114
|
runOperatorListCheck(partialEvaluator, stream, resources, function (result) {
|
115
115
|
expect(!!result.fnArray && !!result.argsArray).toEqual(true);
|
116
116
|
expect(result.fnArray.length).toEqual(2);
|
@@ -119,8 +119,8 @@ describe('evaluator', function () {
|
|
119
119
|
done();
|
120
120
|
});
|
121
121
|
});
|
122
|
-
it(
|
123
|
-
var stream = new _stream.StringStream(
|
122
|
+
it("should handle three glued operations", function (done) {
|
123
|
+
var stream = new _stream.StringStream("fff");
|
124
124
|
runOperatorListCheck(partialEvaluator, stream, new ResourcesMock(), function (result) {
|
125
125
|
expect(!!result.fnArray && !!result.argsArray).toEqual(true);
|
126
126
|
expect(result.fnArray.length).toEqual(3);
|
@@ -130,10 +130,10 @@ describe('evaluator', function () {
|
|
130
130
|
done();
|
131
131
|
});
|
132
132
|
});
|
133
|
-
it(
|
133
|
+
it("should handle three glued operations #2", function (done) {
|
134
134
|
var resources = new ResourcesMock();
|
135
135
|
resources.Res1 = {};
|
136
|
-
var stream = new _stream.StringStream(
|
136
|
+
var stream = new _stream.StringStream("B*Bf*");
|
137
137
|
runOperatorListCheck(partialEvaluator, stream, resources, function (result) {
|
138
138
|
expect(!!result.fnArray && !!result.argsArray).toEqual(true);
|
139
139
|
expect(result.fnArray.length).toEqual(3);
|
@@ -143,8 +143,8 @@ describe('evaluator', function () {
|
|
143
143
|
done();
|
144
144
|
});
|
145
145
|
});
|
146
|
-
it(
|
147
|
-
var stream = new _stream.StringStream(
|
146
|
+
it("should handle glued operations and operands", function (done) {
|
147
|
+
var stream = new _stream.StringStream("f5 Ts");
|
148
148
|
runOperatorListCheck(partialEvaluator, stream, new ResourcesMock(), function (result) {
|
149
149
|
expect(!!result.fnArray && !!result.argsArray).toEqual(true);
|
150
150
|
expect(result.fnArray.length).toEqual(2);
|
@@ -156,8 +156,8 @@ describe('evaluator', function () {
|
|
156
156
|
done();
|
157
157
|
});
|
158
158
|
});
|
159
|
-
it(
|
160
|
-
var stream = new _stream.StringStream(
|
159
|
+
it("should handle glued operations and literals", function (done) {
|
160
|
+
var stream = new _stream.StringStream("trueifalserinulln");
|
161
161
|
runOperatorListCheck(partialEvaluator, stream, new ResourcesMock(), function (result) {
|
162
162
|
expect(!!result.fnArray && !!result.argsArray).toEqual(true);
|
163
163
|
expect(result.fnArray.length).toEqual(3);
|
@@ -174,9 +174,9 @@ describe('evaluator', function () {
|
|
174
174
|
});
|
175
175
|
});
|
176
176
|
});
|
177
|
-
describe(
|
178
|
-
it(
|
179
|
-
var stream = new _stream.StringStream(
|
177
|
+
describe("validateNumberOfArgs", function () {
|
178
|
+
it("should execute if correct number of arguments", function (done) {
|
179
|
+
var stream = new _stream.StringStream("5 1 d0");
|
180
180
|
runOperatorListCheck(partialEvaluator, stream, new ResourcesMock(), function (result) {
|
181
181
|
expect(result.argsArray[0][0]).toEqual(5);
|
182
182
|
expect(result.argsArray[0][1]).toEqual(1);
|
@@ -184,8 +184,8 @@ describe('evaluator', function () {
|
|
184
184
|
done();
|
185
185
|
});
|
186
186
|
});
|
187
|
-
it(
|
188
|
-
var stream = new _stream.StringStream(
|
187
|
+
it("should execute if too many arguments", function (done) {
|
188
|
+
var stream = new _stream.StringStream("5 1 4 d0");
|
189
189
|
runOperatorListCheck(partialEvaluator, stream, new ResourcesMock(), function (result) {
|
190
190
|
expect(result.argsArray[0][0]).toEqual(1);
|
191
191
|
expect(result.argsArray[0][1]).toEqual(4);
|
@@ -193,8 +193,8 @@ describe('evaluator', function () {
|
|
193
193
|
done();
|
194
194
|
});
|
195
195
|
});
|
196
|
-
it(
|
197
|
-
var stream = new _stream.StringStream(
|
196
|
+
it("should execute if nested commands", function (done) {
|
197
|
+
var stream = new _stream.StringStream("/F2 /GS2 gs 5.711 Tf");
|
198
198
|
runOperatorListCheck(partialEvaluator, stream, new ResourcesMock(), function (result) {
|
199
199
|
expect(result.fnArray.length).toEqual(3);
|
200
200
|
expect(result.fnArray[0]).toEqual(_util.OPS.setGState);
|
@@ -207,34 +207,34 @@ describe('evaluator', function () {
|
|
207
207
|
done();
|
208
208
|
});
|
209
209
|
});
|
210
|
-
it(
|
211
|
-
var stream = new _stream.StringStream(
|
210
|
+
it("should skip if too few arguments", function (done) {
|
211
|
+
var stream = new _stream.StringStream("5 d0");
|
212
212
|
runOperatorListCheck(partialEvaluator, stream, new ResourcesMock(), function (result) {
|
213
213
|
expect(result.argsArray).toEqual([]);
|
214
214
|
expect(result.fnArray).toEqual([]);
|
215
215
|
done();
|
216
216
|
});
|
217
217
|
});
|
218
|
-
it(
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
218
|
+
it("should error if (many) path operators have too few arguments " + "(bug 1443140)", function (done) {
|
219
|
+
const NUM_INVALID_OPS = 25;
|
220
|
+
const tempArr = new Array(NUM_INVALID_OPS + 1);
|
221
|
+
const invalidMoveText = tempArr.join("10 Td\n");
|
222
|
+
const moveTextStream = new _stream.StringStream(invalidMoveText);
|
223
223
|
runOperatorListCheck(partialEvaluator, moveTextStream, new ResourcesMock(), function (result) {
|
224
224
|
expect(result.argsArray).toEqual([]);
|
225
225
|
expect(result.fnArray).toEqual([]);
|
226
226
|
done();
|
227
227
|
});
|
228
|
-
|
229
|
-
|
228
|
+
const invalidLineTo = tempArr.join("20 l\n");
|
229
|
+
const lineToStream = new _stream.StringStream(invalidLineTo);
|
230
230
|
runOperatorListCheck(partialEvaluator, lineToStream, new ResourcesMock(), function (error) {
|
231
231
|
expect(error instanceof _util.FormatError).toEqual(true);
|
232
|
-
expect(error.message).toEqual(
|
232
|
+
expect(error.message).toEqual("Invalid command l: expected 2 args, but received 1 args.");
|
233
233
|
done();
|
234
234
|
});
|
235
235
|
});
|
236
|
-
it(
|
237
|
-
var stream = new _stream.StringStream(
|
236
|
+
it("should close opened saves", function (done) {
|
237
|
+
var stream = new _stream.StringStream("qq");
|
238
238
|
runOperatorListCheck(partialEvaluator, stream, new ResourcesMock(), function (result) {
|
239
239
|
expect(!!result.fnArray && !!result.argsArray).toEqual(true);
|
240
240
|
expect(result.fnArray.length).toEqual(4);
|
@@ -245,23 +245,23 @@ describe('evaluator', function () {
|
|
245
245
|
done();
|
246
246
|
});
|
247
247
|
});
|
248
|
-
it(
|
249
|
-
var stream = new _stream.StringStream(
|
248
|
+
it("should error on paintXObject if name is missing", function (done) {
|
249
|
+
var stream = new _stream.StringStream("/ Do");
|
250
250
|
runOperatorListCheck(partialEvaluator, stream, new ResourcesMock(), function (result) {
|
251
251
|
expect(result instanceof _util.FormatError).toEqual(true);
|
252
|
-
expect(result.message).toEqual(
|
252
|
+
expect(result.message).toEqual("XObject must be referred to by name.");
|
253
253
|
done();
|
254
254
|
});
|
255
255
|
});
|
256
|
-
it(
|
256
|
+
it("should skip paintXObject if subtype is PS", function (done) {
|
257
257
|
var xobjStreamDict = new _primitives.Dict();
|
258
|
-
xobjStreamDict.set(
|
258
|
+
xobjStreamDict.set("Subtype", _primitives.Name.get("PS"));
|
259
259
|
var xobjStream = new _stream.Stream([], 0, 0, xobjStreamDict);
|
260
260
|
var xobjs = new _primitives.Dict();
|
261
|
-
xobjs.set(
|
261
|
+
xobjs.set("Res1", xobjStream);
|
262
262
|
var resources = new _primitives.Dict();
|
263
|
-
resources.set(
|
264
|
-
var stream = new _stream.StringStream(
|
263
|
+
resources.set("XObject", xobjs);
|
264
|
+
var stream = new _stream.StringStream("/Res1 Do");
|
265
265
|
runOperatorListCheck(partialEvaluator, stream, resources, function (result) {
|
266
266
|
expect(result.argsArray).toEqual([]);
|
267
267
|
expect(result.fnArray).toEqual([]);
|
@@ -269,17 +269,17 @@ describe('evaluator', function () {
|
|
269
269
|
});
|
270
270
|
});
|
271
271
|
});
|
272
|
-
describe(
|
273
|
-
it(
|
274
|
-
var stream = new _stream.StringStream(
|
272
|
+
describe("thread control", function () {
|
273
|
+
it("should abort operator list parsing", function (done) {
|
274
|
+
var stream = new _stream.StringStream("qqQQ");
|
275
275
|
var resources = new ResourcesMock();
|
276
276
|
var result = new _operator_list.OperatorList();
|
277
|
-
var task = new _worker.WorkerTask(
|
277
|
+
var task = new _worker.WorkerTask("OperatorListAbort");
|
278
278
|
task.terminate();
|
279
279
|
partialEvaluator.getOperatorList({
|
280
|
-
stream
|
281
|
-
task
|
282
|
-
resources
|
280
|
+
stream,
|
281
|
+
task,
|
282
|
+
resources,
|
283
283
|
operatorList: result
|
284
284
|
}).catch(function () {
|
285
285
|
expect(!!result.fnArray && !!result.argsArray).toEqual(true);
|
@@ -287,29 +287,29 @@ describe('evaluator', function () {
|
|
287
287
|
done();
|
288
288
|
});
|
289
289
|
});
|
290
|
-
it(
|
290
|
+
it("should abort text parsing parsing", function (done) {
|
291
291
|
var resources = new ResourcesMock();
|
292
|
-
var stream = new _stream.StringStream(
|
293
|
-
var task = new _worker.WorkerTask(
|
292
|
+
var stream = new _stream.StringStream("qqQQ");
|
293
|
+
var task = new _worker.WorkerTask("TextContentAbort");
|
294
294
|
task.terminate();
|
295
295
|
partialEvaluator.getTextContent({
|
296
|
-
stream
|
297
|
-
task
|
298
|
-
resources
|
296
|
+
stream,
|
297
|
+
task,
|
298
|
+
resources
|
299
299
|
}).catch(function () {
|
300
300
|
expect(true).toEqual(true);
|
301
301
|
done();
|
302
302
|
});
|
303
303
|
});
|
304
304
|
});
|
305
|
-
describe(
|
306
|
-
|
305
|
+
describe("operator list", function () {
|
306
|
+
class StreamSinkMock {
|
307
|
+
enqueue() {}
|
308
|
+
|
309
|
+
}
|
307
310
|
|
308
|
-
|
309
|
-
|
310
|
-
};
|
311
|
-
it('should get correct total length after flushing', function () {
|
312
|
-
var operatorList = new _operator_list.OperatorList(null, new MessageHandlerMock());
|
311
|
+
it("should get correct total length after flushing", function () {
|
312
|
+
var operatorList = new _operator_list.OperatorList(null, new StreamSinkMock());
|
313
313
|
operatorList.addOp(_util.OPS.save, null);
|
314
314
|
operatorList.addOp(_util.OPS.restore, null);
|
315
315
|
expect(operatorList.totalLength).toEqual(2);
|
@@ -0,0 +1,111 @@
|
|
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
|
+
var _util = require("../../shared/util.js");
|
25
|
+
|
26
|
+
var _fetch_stream = require("../../display/fetch_stream.js");
|
27
|
+
|
28
|
+
describe("fetch_stream", function () {
|
29
|
+
const pdfUrl = new URL("../pdfs/tracemonkey.pdf", window.location).href;
|
30
|
+
const pdfLength = 1016315;
|
31
|
+
it("read with streaming", function (done) {
|
32
|
+
const stream = new _fetch_stream.PDFFetchStream({
|
33
|
+
url: pdfUrl,
|
34
|
+
disableStream: false,
|
35
|
+
disableRange: true
|
36
|
+
});
|
37
|
+
const fullReader = stream.getFullReader();
|
38
|
+
let isStreamingSupported, isRangeSupported;
|
39
|
+
const promise = fullReader.headersReady.then(function () {
|
40
|
+
isStreamingSupported = fullReader.isStreamingSupported;
|
41
|
+
isRangeSupported = fullReader.isRangeSupported;
|
42
|
+
});
|
43
|
+
let len = 0;
|
44
|
+
|
45
|
+
const read = function () {
|
46
|
+
return fullReader.read().then(function (result) {
|
47
|
+
if (result.done) {
|
48
|
+
return undefined;
|
49
|
+
}
|
50
|
+
|
51
|
+
len += result.value.byteLength;
|
52
|
+
return read();
|
53
|
+
});
|
54
|
+
};
|
55
|
+
|
56
|
+
const readPromise = Promise.all([read(), promise]);
|
57
|
+
readPromise.then(function () {
|
58
|
+
expect(len).toEqual(pdfLength);
|
59
|
+
expect(isStreamingSupported).toEqual(true);
|
60
|
+
expect(isRangeSupported).toEqual(false);
|
61
|
+
done();
|
62
|
+
}).catch(done.fail);
|
63
|
+
});
|
64
|
+
it("read ranges with streaming", function (done) {
|
65
|
+
const rangeSize = 32768;
|
66
|
+
const stream = new _fetch_stream.PDFFetchStream({
|
67
|
+
url: pdfUrl,
|
68
|
+
rangeChunkSize: rangeSize,
|
69
|
+
disableStream: false,
|
70
|
+
disableRange: false
|
71
|
+
});
|
72
|
+
const fullReader = stream.getFullReader();
|
73
|
+
let isStreamingSupported, isRangeSupported, fullReaderCancelled;
|
74
|
+
const promise = fullReader.headersReady.then(function () {
|
75
|
+
isStreamingSupported = fullReader.isStreamingSupported;
|
76
|
+
isRangeSupported = fullReader.isRangeSupported;
|
77
|
+
fullReader.cancel(new _util.AbortException("Don't need fullReader."));
|
78
|
+
fullReaderCancelled = true;
|
79
|
+
});
|
80
|
+
const tailSize = pdfLength % rangeSize || rangeSize;
|
81
|
+
const rangeReader1 = stream.getRangeReader(pdfLength - tailSize - rangeSize, pdfLength - tailSize);
|
82
|
+
const rangeReader2 = stream.getRangeReader(pdfLength - tailSize, pdfLength);
|
83
|
+
const result1 = {
|
84
|
+
value: 0
|
85
|
+
},
|
86
|
+
result2 = {
|
87
|
+
value: 0
|
88
|
+
};
|
89
|
+
|
90
|
+
const read = function (reader, lenResult) {
|
91
|
+
return reader.read().then(function (result) {
|
92
|
+
if (result.done) {
|
93
|
+
return undefined;
|
94
|
+
}
|
95
|
+
|
96
|
+
lenResult.value += result.value.byteLength;
|
97
|
+
return read(reader, lenResult);
|
98
|
+
});
|
99
|
+
};
|
100
|
+
|
101
|
+
const readPromise = Promise.all([read(rangeReader1, result1), read(rangeReader2, result2), promise]);
|
102
|
+
readPromise.then(function () {
|
103
|
+
expect(isStreamingSupported).toEqual(true);
|
104
|
+
expect(isRangeSupported).toEqual(true);
|
105
|
+
expect(fullReaderCancelled).toEqual(true);
|
106
|
+
expect(result1.value).toEqual(rangeSize);
|
107
|
+
expect(result2.value).toEqual(tailSize);
|
108
|
+
done();
|
109
|
+
}).catch(done.fail);
|
110
|
+
});
|
111
|
+
});
|