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