pdfjs-dist 2.0.489 → 2.2.228
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/bower.json +1 -1
- package/build/pdf.js +18515 -11402
- package/build/pdf.js.map +1 -1
- package/build/pdf.min.js +1 -1
- package/build/pdf.worker.js +48266 -37137
- package/build/pdf.worker.js.map +1 -1
- package/build/pdf.worker.min.js +1 -1
- package/external/url/url-lib.js +627 -0
- package/image_decoders/pdf.image_decoders.js +11350 -0
- package/image_decoders/pdf.image_decoders.js.map +1 -0
- package/image_decoders/pdf.image_decoders.min.js +1 -0
- package/lib/core/annotation.js +587 -242
- package/lib/core/arithmetic_decoder.js +275 -245
- package/lib/core/bidi.js +65 -6
- package/lib/core/ccitt.js +173 -18
- package/lib/core/ccitt_stream.js +15 -6
- package/lib/core/cff_parser.js +433 -61
- package/lib/core/charsets.js +5 -4
- package/lib/core/chunked_stream.js +400 -152
- package/lib/core/cmap.js +326 -87
- package/lib/core/colorspace.js +874 -594
- package/lib/core/core_utils.js +147 -0
- package/lib/core/crypto.js +290 -45
- package/lib/core/document.js +560 -268
- package/lib/core/encodings.js +19 -10
- package/lib/core/evaluator.js +1005 -360
- package/lib/core/font_renderer.js +331 -97
- package/lib/core/fonts.js +812 -195
- package/lib/core/function.js +284 -71
- package/lib/core/glyphlist.js +4 -3
- package/lib/core/image.js +169 -62
- package/lib/core/image_utils.js +111 -0
- package/lib/core/jbig2.js +479 -66
- package/lib/core/jbig2_stream.js +19 -8
- package/lib/core/jpeg_stream.js +38 -13
- package/lib/core/jpg.js +253 -29
- package/lib/core/jpx.js +396 -6
- package/lib/core/jpx_stream.js +18 -6
- package/lib/core/metrics.js +15 -15
- package/lib/core/murmurhash3.js +56 -34
- package/lib/core/obj.js +1354 -488
- package/lib/core/operator_list.js +144 -31
- package/lib/core/parser.js +539 -191
- package/lib/core/pattern.js +148 -14
- package/lib/core/pdf_manager.js +323 -133
- package/lib/core/primitives.js +111 -24
- package/lib/core/ps_parser.js +134 -45
- package/lib/core/standard_fonts.js +17 -17
- package/lib/core/stream.js +313 -34
- package/lib/core/type1_parser.js +143 -13
- package/lib/core/unicode.js +32 -5
- package/lib/core/worker.js +217 -190
- package/lib/core/worker_stream.js +277 -0
- package/lib/display/annotation_layer.js +450 -133
- package/lib/display/api.js +1597 -784
- package/lib/display/api_compatibility.js +11 -13
- package/lib/display/canvas.js +360 -44
- package/lib/display/content_disposition.js +83 -32
- package/lib/display/display_utils.js +747 -0
- package/lib/display/fetch_stream.js +221 -90
- package/lib/display/font_loader.js +468 -236
- package/lib/display/metadata.js +38 -16
- package/lib/display/network.js +635 -428
- package/lib/display/network_utils.js +32 -19
- package/lib/display/node_stream.js +367 -175
- package/lib/display/pattern_helper.js +81 -31
- package/lib/display/svg.js +1235 -519
- package/lib/display/text_layer.js +153 -29
- package/lib/display/transport_stream.js +345 -94
- package/lib/display/webgl.js +64 -18
- package/lib/display/worker_options.js +5 -4
- package/lib/display/xml_parser.js +166 -53
- package/lib/examples/node/domstubs.js +60 -4
- package/lib/pdf.js +36 -14
- package/lib/pdf.worker.js +5 -3
- package/lib/shared/compatibility.js +158 -564
- package/lib/shared/global_scope.js +2 -2
- package/lib/shared/is_node.js +4 -4
- package/lib/shared/message_handler.js +521 -0
- package/lib/shared/streams_polyfill.js +21 -17
- package/lib/shared/url_polyfill.js +56 -0
- package/lib/shared/util.js +243 -710
- package/lib/test/unit/annotation_spec.js +870 -401
- package/lib/test/unit/api_spec.js +657 -345
- package/lib/test/unit/bidi_spec.js +7 -7
- package/lib/test/unit/cff_parser_spec.js +54 -11
- package/lib/test/unit/clitests_helper.js +10 -8
- package/lib/test/unit/cmap_spec.js +95 -41
- package/lib/test/unit/colorspace_spec.js +115 -63
- package/lib/test/unit/core_utils_spec.js +191 -0
- package/lib/test/unit/crypto_spec.js +17 -5
- package/lib/test/unit/custom_spec.js +43 -55
- package/lib/test/unit/display_svg_spec.js +34 -18
- package/lib/test/unit/display_utils_spec.js +273 -0
- package/lib/test/unit/document_spec.js +8 -13
- package/lib/test/unit/encodings_spec.js +25 -45
- package/lib/test/unit/evaluator_spec.js +38 -15
- package/lib/test/unit/fetch_stream_spec.js +109 -0
- package/lib/test/unit/function_spec.js +17 -5
- package/lib/test/unit/jasmine-boot.js +33 -20
- package/lib/test/unit/{util_stream_spec.js → message_handler_spec.js} +41 -69
- package/lib/test/unit/metadata_spec.js +71 -11
- package/lib/test/unit/murmurhash3_spec.js +3 -3
- package/lib/test/unit/network_spec.js +19 -54
- package/lib/test/unit/network_utils_spec.js +91 -14
- package/lib/test/unit/node_stream_spec.js +56 -32
- package/lib/test/unit/parser_spec.js +162 -71
- package/lib/test/unit/pdf_find_controller_spec.js +230 -0
- package/lib/test/unit/pdf_find_utils_spec.js +63 -0
- package/lib/test/unit/pdf_history_spec.js +21 -9
- package/lib/test/unit/primitives_spec.js +53 -20
- package/lib/test/unit/stream_spec.js +12 -4
- package/lib/test/unit/test_utils.js +273 -56
- package/lib/test/unit/testreporter.js +21 -3
- package/lib/test/unit/type1_parser_spec.js +8 -6
- package/lib/test/unit/ui_utils_spec.js +454 -16
- package/lib/test/unit/unicode_spec.js +18 -15
- package/lib/test/unit/util_spec.js +87 -128
- package/lib/web/annotation_layer_builder.js +39 -22
- package/lib/web/app.js +1290 -588
- package/lib/web/app_options.js +100 -62
- package/lib/web/base_viewer.js +511 -182
- package/lib/web/chromecom.js +261 -117
- package/lib/web/debugger.js +166 -22
- package/lib/web/download_manager.js +32 -13
- package/lib/web/firefox_print_service.js +20 -10
- package/lib/web/firefoxcom.js +315 -80
- package/lib/web/genericcom.js +89 -30
- package/lib/web/genericl10n.js +142 -30
- package/lib/web/grab_to_pan.js +28 -4
- package/lib/web/interfaces.js +170 -47
- package/lib/web/overlay_manager.js +235 -85
- package/lib/web/password_prompt.js +22 -14
- package/lib/web/pdf_attachment_viewer.js +38 -18
- package/lib/web/pdf_cursor_tools.js +39 -16
- package/lib/web/pdf_document_properties.js +255 -136
- package/lib/web/pdf_find_bar.js +84 -40
- package/lib/web/pdf_find_controller.js +495 -184
- package/lib/web/pdf_find_utils.js +111 -0
- package/lib/web/pdf_history.js +190 -53
- package/lib/web/pdf_link_service.js +138 -77
- package/lib/web/pdf_outline_viewer.js +122 -46
- package/lib/web/pdf_page_view.js +191 -67
- package/lib/web/pdf_presentation_mode.js +99 -34
- package/lib/web/pdf_print_service.js +61 -13
- package/lib/web/pdf_rendering_queue.js +28 -9
- package/lib/web/pdf_sidebar.js +141 -81
- package/lib/web/pdf_sidebar_resizer.js +42 -16
- package/lib/web/pdf_single_page_viewer.js +74 -66
- package/lib/web/pdf_thumbnail_view.js +104 -33
- package/lib/web/pdf_thumbnail_viewer.js +66 -26
- package/lib/web/pdf_viewer.component.js +112 -32
- package/lib/web/pdf_viewer.js +91 -52
- package/lib/web/preferences.js +284 -89
- package/lib/web/secondary_toolbar.js +165 -40
- package/lib/web/text_layer_builder.js +134 -59
- package/lib/web/toolbar.js +78 -43
- package/lib/web/ui_utils.js +462 -136
- package/lib/web/view_history.js +215 -67
- package/lib/web/viewer_compatibility.js +4 -13
- package/package.json +5 -4
- package/web/pdf_viewer.css +79 -11
- package/web/pdf_viewer.js +6107 -3748
- package/web/pdf_viewer.js.map +1 -1
- package/lib/display/dom_utils.js +0 -309
- package/lib/test/unit/dom_utils_spec.js +0 -89
- package/lib/test/unit/fonts_spec.js +0 -81
- package/lib/web/dom_events.js +0 -137
@@ -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 2019 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,56 +19,70 @@
|
|
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.OperatorList =
|
27
|
+
exports.OperatorList = void 0;
|
28
28
|
|
29
|
-
var _util = require(
|
29
|
+
var _util = require("../shared/util");
|
30
30
|
|
31
31
|
var QueueOptimizer = function QueueOptimizerClosure() {
|
32
32
|
function addState(parentState, pattern, checkFn, iterateFn, processFn) {
|
33
33
|
var state = parentState;
|
34
|
+
|
34
35
|
for (var i = 0, ii = pattern.length - 1; i < ii; i++) {
|
35
36
|
var item = pattern[i];
|
36
37
|
state = state[item] || (state[item] = []);
|
37
38
|
}
|
39
|
+
|
38
40
|
state[pattern[pattern.length - 1]] = {
|
39
41
|
checkFn: checkFn,
|
40
42
|
iterateFn: iterateFn,
|
41
43
|
processFn: processFn
|
42
44
|
};
|
43
45
|
}
|
46
|
+
|
44
47
|
function handlePaintSolidColorImageMask(iFirstSave, count, fnArray, argsArray) {
|
45
48
|
var iFirstPIMXO = iFirstSave + 2;
|
49
|
+
|
46
50
|
for (var i = 0; i < count; i++) {
|
47
51
|
var arg = argsArray[iFirstPIMXO + 4 * i];
|
48
52
|
var imageMask = arg.length === 1 && arg[0];
|
53
|
+
|
49
54
|
if (imageMask && imageMask.width === 1 && imageMask.height === 1 && (!imageMask.data.length || imageMask.data.length === 1 && imageMask.data[0] === 0)) {
|
50
55
|
fnArray[iFirstPIMXO + 4 * i] = _util.OPS.paintSolidColorImageMask;
|
51
56
|
continue;
|
52
57
|
}
|
58
|
+
|
53
59
|
break;
|
54
60
|
}
|
61
|
+
|
55
62
|
return count - i;
|
56
63
|
}
|
64
|
+
|
57
65
|
var InitialState = [];
|
58
66
|
addState(InitialState, [_util.OPS.save, _util.OPS.transform, _util.OPS.paintInlineImageXObject, _util.OPS.restore], null, function iterateInlineImageGroup(context, i) {
|
59
67
|
var fnArray = context.fnArray;
|
60
68
|
var iFirstSave = context.iCurr - 3;
|
61
69
|
var pos = (i - iFirstSave) % 4;
|
70
|
+
|
62
71
|
switch (pos) {
|
63
72
|
case 0:
|
64
73
|
return fnArray[i] === _util.OPS.save;
|
74
|
+
|
65
75
|
case 1:
|
66
76
|
return fnArray[i] === _util.OPS.transform;
|
77
|
+
|
67
78
|
case 2:
|
68
79
|
return fnArray[i] === _util.OPS.paintInlineImageXObject;
|
80
|
+
|
69
81
|
case 3:
|
70
82
|
return fnArray[i] === _util.OPS.restore;
|
71
83
|
}
|
84
|
+
|
85
|
+
throw new Error("iterateInlineImageGroup - invalid pos: ".concat(pos));
|
72
86
|
}, function foundInlineImageGroup(context, i) {
|
73
87
|
var MIN_IMAGES_IN_INLINE_IMAGES_BLOCK = 10;
|
74
88
|
var MAX_IMAGES_IN_INLINE_IMAGES_BLOCK = 200;
|
@@ -81,24 +95,29 @@ var QueueOptimizer = function QueueOptimizerClosure() {
|
|
81
95
|
var iFirstTransform = curr - 2;
|
82
96
|
var iFirstPIIXO = curr - 1;
|
83
97
|
var count = Math.min(Math.floor((i - iFirstSave) / 4), MAX_IMAGES_IN_INLINE_IMAGES_BLOCK);
|
98
|
+
|
84
99
|
if (count < MIN_IMAGES_IN_INLINE_IMAGES_BLOCK) {
|
85
100
|
return i - (i - iFirstSave) % 4;
|
86
101
|
}
|
102
|
+
|
87
103
|
var maxX = 0;
|
88
104
|
var map = [],
|
89
105
|
maxLineHeight = 0;
|
90
106
|
var currentX = IMAGE_PADDING,
|
91
107
|
currentY = IMAGE_PADDING;
|
92
108
|
var q;
|
109
|
+
|
93
110
|
for (q = 0; q < count; q++) {
|
94
111
|
var transform = argsArray[iFirstTransform + (q << 2)];
|
95
112
|
var img = argsArray[iFirstPIIXO + (q << 2)][0];
|
113
|
+
|
96
114
|
if (currentX + img.width > MAX_WIDTH) {
|
97
115
|
maxX = Math.max(maxX, currentX);
|
98
116
|
currentY += maxLineHeight + 2 * IMAGE_PADDING;
|
99
117
|
currentX = 0;
|
100
118
|
maxLineHeight = 0;
|
101
119
|
}
|
120
|
+
|
102
121
|
map.push({
|
103
122
|
transform: transform,
|
104
123
|
x: currentX,
|
@@ -109,22 +128,27 @@ var QueueOptimizer = function QueueOptimizerClosure() {
|
|
109
128
|
currentX += img.width + 2 * IMAGE_PADDING;
|
110
129
|
maxLineHeight = Math.max(maxLineHeight, img.height);
|
111
130
|
}
|
131
|
+
|
112
132
|
var imgWidth = Math.max(maxX, currentX) + IMAGE_PADDING;
|
113
133
|
var imgHeight = currentY + maxLineHeight + IMAGE_PADDING;
|
114
|
-
var imgData = new
|
134
|
+
var imgData = new Uint8ClampedArray(imgWidth * imgHeight * 4);
|
115
135
|
var imgRowSize = imgWidth << 2;
|
136
|
+
|
116
137
|
for (q = 0; q < count; q++) {
|
117
138
|
var data = argsArray[iFirstPIIXO + (q << 2)][0].data;
|
118
139
|
var rowSize = map[q].w << 2;
|
119
140
|
var dataOffset = 0;
|
120
141
|
var offset = map[q].x + map[q].y * imgWidth << 2;
|
121
142
|
imgData.set(data.subarray(0, rowSize), offset - imgRowSize);
|
143
|
+
|
122
144
|
for (var k = 0, kk = map[q].h; k < kk; k++) {
|
123
145
|
imgData.set(data.subarray(dataOffset, dataOffset + rowSize), offset);
|
124
146
|
dataOffset += rowSize;
|
125
147
|
offset += imgRowSize;
|
126
148
|
}
|
149
|
+
|
127
150
|
imgData.set(data.subarray(dataOffset - rowSize, dataOffset), offset);
|
151
|
+
|
128
152
|
while (offset >= 0) {
|
129
153
|
data[offset - 4] = data[offset];
|
130
154
|
data[offset - 3] = data[offset + 1];
|
@@ -137,6 +161,7 @@ var QueueOptimizer = function QueueOptimizerClosure() {
|
|
137
161
|
offset -= imgRowSize;
|
138
162
|
}
|
139
163
|
}
|
164
|
+
|
140
165
|
fnArray.splice(iFirstSave, count * 4, _util.OPS.paintInlineImageXObjectGroup);
|
141
166
|
argsArray.splice(iFirstSave, count * 4, [{
|
142
167
|
width: imgWidth,
|
@@ -150,16 +175,22 @@ var QueueOptimizer = function QueueOptimizerClosure() {
|
|
150
175
|
var fnArray = context.fnArray;
|
151
176
|
var iFirstSave = context.iCurr - 3;
|
152
177
|
var pos = (i - iFirstSave) % 4;
|
178
|
+
|
153
179
|
switch (pos) {
|
154
180
|
case 0:
|
155
181
|
return fnArray[i] === _util.OPS.save;
|
182
|
+
|
156
183
|
case 1:
|
157
184
|
return fnArray[i] === _util.OPS.transform;
|
185
|
+
|
158
186
|
case 2:
|
159
187
|
return fnArray[i] === _util.OPS.paintImageMaskXObject;
|
188
|
+
|
160
189
|
case 3:
|
161
190
|
return fnArray[i] === _util.OPS.restore;
|
162
191
|
}
|
192
|
+
|
193
|
+
throw new Error("iterateImageMaskGroup - invalid pos: ".concat(pos));
|
163
194
|
}, function foundImageMaskGroup(context, i) {
|
164
195
|
var MIN_IMAGES_IN_MASKS_BLOCK = 10;
|
165
196
|
var MAX_IMAGES_IN_MASKS_BLOCK = 100;
|
@@ -172,45 +203,55 @@ var QueueOptimizer = function QueueOptimizerClosure() {
|
|
172
203
|
var iFirstPIMXO = curr - 1;
|
173
204
|
var count = Math.floor((i - iFirstSave) / 4);
|
174
205
|
count = handlePaintSolidColorImageMask(iFirstSave, count, fnArray, argsArray);
|
206
|
+
|
175
207
|
if (count < MIN_IMAGES_IN_MASKS_BLOCK) {
|
176
208
|
return i - (i - iFirstSave) % 4;
|
177
209
|
}
|
210
|
+
|
178
211
|
var q;
|
179
212
|
var isSameImage = false;
|
180
213
|
var iTransform, transformArgs;
|
181
214
|
var firstPIMXOArg0 = argsArray[iFirstPIMXO][0];
|
215
|
+
|
182
216
|
if (argsArray[iFirstTransform][1] === 0 && argsArray[iFirstTransform][2] === 0) {
|
183
217
|
isSameImage = true;
|
184
218
|
var firstTransformArg0 = argsArray[iFirstTransform][0];
|
185
219
|
var firstTransformArg3 = argsArray[iFirstTransform][3];
|
186
220
|
iTransform = iFirstTransform + 4;
|
187
221
|
var iPIMXO = iFirstPIMXO + 4;
|
222
|
+
|
188
223
|
for (q = 1; q < count; q++, iTransform += 4, iPIMXO += 4) {
|
189
224
|
transformArgs = argsArray[iTransform];
|
225
|
+
|
190
226
|
if (argsArray[iPIMXO][0] !== firstPIMXOArg0 || transformArgs[0] !== firstTransformArg0 || transformArgs[1] !== 0 || transformArgs[2] !== 0 || transformArgs[3] !== firstTransformArg3) {
|
191
227
|
if (q < MIN_IMAGES_IN_MASKS_BLOCK) {
|
192
228
|
isSameImage = false;
|
193
229
|
} else {
|
194
230
|
count = q;
|
195
231
|
}
|
232
|
+
|
196
233
|
break;
|
197
234
|
}
|
198
235
|
}
|
199
236
|
}
|
237
|
+
|
200
238
|
if (isSameImage) {
|
201
239
|
count = Math.min(count, MAX_SAME_IMAGES_IN_MASKS_BLOCK);
|
202
240
|
var positions = new Float32Array(count * 2);
|
203
241
|
iTransform = iFirstTransform;
|
242
|
+
|
204
243
|
for (q = 0; q < count; q++, iTransform += 4) {
|
205
244
|
transformArgs = argsArray[iTransform];
|
206
245
|
positions[q << 1] = transformArgs[4];
|
207
246
|
positions[(q << 1) + 1] = transformArgs[5];
|
208
247
|
}
|
248
|
+
|
209
249
|
fnArray.splice(iFirstSave, count * 4, _util.OPS.paintImageMaskXObjectRepeat);
|
210
250
|
argsArray.splice(iFirstSave, count * 4, [firstPIMXOArg0, firstTransformArg0, firstTransformArg3, positions]);
|
211
251
|
} else {
|
212
252
|
count = Math.min(count, MAX_IMAGES_IN_MASKS_BLOCK);
|
213
253
|
var images = [];
|
254
|
+
|
214
255
|
for (q = 0; q < count; q++) {
|
215
256
|
transformArgs = argsArray[iFirstTransform + (q << 2)];
|
216
257
|
var maskParams = argsArray[iFirstPIMXO + (q << 2)][0];
|
@@ -221,47 +262,61 @@ var QueueOptimizer = function QueueOptimizerClosure() {
|
|
221
262
|
transform: transformArgs
|
222
263
|
});
|
223
264
|
}
|
265
|
+
|
224
266
|
fnArray.splice(iFirstSave, count * 4, _util.OPS.paintImageMaskXObjectGroup);
|
225
267
|
argsArray.splice(iFirstSave, count * 4, [images]);
|
226
268
|
}
|
269
|
+
|
227
270
|
return iFirstSave + 1;
|
228
271
|
});
|
229
272
|
addState(InitialState, [_util.OPS.save, _util.OPS.transform, _util.OPS.paintImageXObject, _util.OPS.restore], function (context) {
|
230
273
|
var argsArray = context.argsArray;
|
231
274
|
var iFirstTransform = context.iCurr - 2;
|
232
275
|
return argsArray[iFirstTransform][1] === 0 && argsArray[iFirstTransform][2] === 0;
|
233
|
-
}, function (context, i) {
|
276
|
+
}, function iterateImageGroup(context, i) {
|
234
277
|
var fnArray = context.fnArray,
|
235
278
|
argsArray = context.argsArray;
|
236
279
|
var iFirstSave = context.iCurr - 3;
|
237
280
|
var pos = (i - iFirstSave) % 4;
|
281
|
+
|
238
282
|
switch (pos) {
|
239
283
|
case 0:
|
240
284
|
return fnArray[i] === _util.OPS.save;
|
285
|
+
|
241
286
|
case 1:
|
242
287
|
if (fnArray[i] !== _util.OPS.transform) {
|
243
288
|
return false;
|
244
289
|
}
|
290
|
+
|
245
291
|
var iFirstTransform = context.iCurr - 2;
|
246
292
|
var firstTransformArg0 = argsArray[iFirstTransform][0];
|
247
293
|
var firstTransformArg3 = argsArray[iFirstTransform][3];
|
294
|
+
|
248
295
|
if (argsArray[i][0] !== firstTransformArg0 || argsArray[i][1] !== 0 || argsArray[i][2] !== 0 || argsArray[i][3] !== firstTransformArg3) {
|
249
296
|
return false;
|
250
297
|
}
|
298
|
+
|
251
299
|
return true;
|
300
|
+
|
252
301
|
case 2:
|
253
302
|
if (fnArray[i] !== _util.OPS.paintImageXObject) {
|
254
303
|
return false;
|
255
304
|
}
|
305
|
+
|
256
306
|
var iFirstPIXO = context.iCurr - 1;
|
257
307
|
var firstPIXOArg0 = argsArray[iFirstPIXO][0];
|
308
|
+
|
258
309
|
if (argsArray[i][0] !== firstPIXOArg0) {
|
259
310
|
return false;
|
260
311
|
}
|
312
|
+
|
261
313
|
return true;
|
314
|
+
|
262
315
|
case 3:
|
263
316
|
return fnArray[i] === _util.OPS.restore;
|
264
317
|
}
|
318
|
+
|
319
|
+
throw new Error("iterateImageGroup - invalid pos: ".concat(pos));
|
265
320
|
}, function (context, i) {
|
266
321
|
var MIN_IMAGES_IN_BLOCK = 3;
|
267
322
|
var MAX_IMAGES_IN_BLOCK = 1000;
|
@@ -275,47 +330,61 @@ var QueueOptimizer = function QueueOptimizerClosure() {
|
|
275
330
|
var firstTransformArg0 = argsArray[iFirstTransform][0];
|
276
331
|
var firstTransformArg3 = argsArray[iFirstTransform][3];
|
277
332
|
var count = Math.min(Math.floor((i - iFirstSave) / 4), MAX_IMAGES_IN_BLOCK);
|
333
|
+
|
278
334
|
if (count < MIN_IMAGES_IN_BLOCK) {
|
279
335
|
return i - (i - iFirstSave) % 4;
|
280
336
|
}
|
337
|
+
|
281
338
|
var positions = new Float32Array(count * 2);
|
282
339
|
var iTransform = iFirstTransform;
|
340
|
+
|
283
341
|
for (var q = 0; q < count; q++, iTransform += 4) {
|
284
342
|
var transformArgs = argsArray[iTransform];
|
285
343
|
positions[q << 1] = transformArgs[4];
|
286
344
|
positions[(q << 1) + 1] = transformArgs[5];
|
287
345
|
}
|
346
|
+
|
288
347
|
var args = [firstPIXOArg0, firstTransformArg0, firstTransformArg3, positions];
|
289
348
|
fnArray.splice(iFirstSave, count * 4, _util.OPS.paintImageXObjectRepeat);
|
290
349
|
argsArray.splice(iFirstSave, count * 4, args);
|
291
350
|
return iFirstSave + 1;
|
292
351
|
});
|
293
|
-
addState(InitialState, [_util.OPS.beginText, _util.OPS.setFont, _util.OPS.setTextMatrix, _util.OPS.showText, _util.OPS.endText], null, function (context, i) {
|
352
|
+
addState(InitialState, [_util.OPS.beginText, _util.OPS.setFont, _util.OPS.setTextMatrix, _util.OPS.showText, _util.OPS.endText], null, function iterateShowTextGroup(context, i) {
|
294
353
|
var fnArray = context.fnArray,
|
295
354
|
argsArray = context.argsArray;
|
296
355
|
var iFirstSave = context.iCurr - 4;
|
297
356
|
var pos = (i - iFirstSave) % 5;
|
357
|
+
|
298
358
|
switch (pos) {
|
299
359
|
case 0:
|
300
360
|
return fnArray[i] === _util.OPS.beginText;
|
361
|
+
|
301
362
|
case 1:
|
302
363
|
return fnArray[i] === _util.OPS.setFont;
|
364
|
+
|
303
365
|
case 2:
|
304
366
|
return fnArray[i] === _util.OPS.setTextMatrix;
|
367
|
+
|
305
368
|
case 3:
|
306
369
|
if (fnArray[i] !== _util.OPS.showText) {
|
307
370
|
return false;
|
308
371
|
}
|
372
|
+
|
309
373
|
var iFirstSetFont = context.iCurr - 3;
|
310
374
|
var firstSetFontArg0 = argsArray[iFirstSetFont][0];
|
311
375
|
var firstSetFontArg1 = argsArray[iFirstSetFont][1];
|
376
|
+
|
312
377
|
if (argsArray[i][0] !== firstSetFontArg0 || argsArray[i][1] !== firstSetFontArg1) {
|
313
378
|
return false;
|
314
379
|
}
|
380
|
+
|
315
381
|
return true;
|
382
|
+
|
316
383
|
case 4:
|
317
384
|
return fnArray[i] === _util.OPS.endText;
|
318
385
|
}
|
386
|
+
|
387
|
+
throw new Error("iterateShowTextGroup - invalid pos: ".concat(pos));
|
319
388
|
}, function (context, i) {
|
320
389
|
var MIN_CHARS_IN_BLOCK = 3;
|
321
390
|
var MAX_CHARS_IN_BLOCK = 1000;
|
@@ -330,22 +399,29 @@ var QueueOptimizer = function QueueOptimizerClosure() {
|
|
330
399
|
var firstSetFontArg0 = argsArray[iFirstSetFont][0];
|
331
400
|
var firstSetFontArg1 = argsArray[iFirstSetFont][1];
|
332
401
|
var count = Math.min(Math.floor((i - iFirstBeginText) / 5), MAX_CHARS_IN_BLOCK);
|
402
|
+
|
333
403
|
if (count < MIN_CHARS_IN_BLOCK) {
|
334
404
|
return i - (i - iFirstBeginText) % 5;
|
335
405
|
}
|
406
|
+
|
336
407
|
var iFirst = iFirstBeginText;
|
408
|
+
|
337
409
|
if (iFirstBeginText >= 4 && fnArray[iFirstBeginText - 4] === fnArray[iFirstSetFont] && fnArray[iFirstBeginText - 3] === fnArray[iFirstSetTextMatrix] && fnArray[iFirstBeginText - 2] === fnArray[iFirstShowText] && fnArray[iFirstBeginText - 1] === fnArray[iFirstEndText] && argsArray[iFirstBeginText - 4][0] === firstSetFontArg0 && argsArray[iFirstBeginText - 4][1] === firstSetFontArg1) {
|
338
410
|
count++;
|
339
411
|
iFirst -= 5;
|
340
412
|
}
|
413
|
+
|
341
414
|
var iEndText = iFirst + 4;
|
415
|
+
|
342
416
|
for (var q = 1; q < count; q++) {
|
343
417
|
fnArray.splice(iEndText, 3);
|
344
418
|
argsArray.splice(iEndText, 3);
|
345
419
|
iEndText += 2;
|
346
420
|
}
|
421
|
+
|
347
422
|
return iEndText + 1;
|
348
423
|
});
|
424
|
+
|
349
425
|
function QueueOptimizer(queue) {
|
350
426
|
this.queue = queue;
|
351
427
|
this.state = null;
|
@@ -357,6 +433,7 @@ var QueueOptimizer = function QueueOptimizerClosure() {
|
|
357
433
|
this.match = null;
|
358
434
|
this.lastProcessed = 0;
|
359
435
|
}
|
436
|
+
|
360
437
|
QueueOptimizer.prototype = {
|
361
438
|
_optimize: function _optimize() {
|
362
439
|
var fnArray = this.queue.fnArray;
|
@@ -364,40 +441,52 @@ var QueueOptimizer = function QueueOptimizerClosure() {
|
|
364
441
|
ii = fnArray.length;
|
365
442
|
var state = this.state;
|
366
443
|
var match = this.match;
|
444
|
+
|
367
445
|
if (!state && !match && i + 1 === ii && !InitialState[fnArray[i]]) {
|
368
446
|
this.lastProcessed = ii;
|
369
447
|
return;
|
370
448
|
}
|
449
|
+
|
371
450
|
var context = this.context;
|
451
|
+
|
372
452
|
while (i < ii) {
|
373
453
|
if (match) {
|
374
454
|
var iterate = (0, match.iterateFn)(context, i);
|
455
|
+
|
375
456
|
if (iterate) {
|
376
457
|
i++;
|
377
458
|
continue;
|
378
459
|
}
|
460
|
+
|
379
461
|
i = (0, match.processFn)(context, i + 1);
|
380
462
|
ii = fnArray.length;
|
381
463
|
match = null;
|
382
464
|
state = null;
|
465
|
+
|
383
466
|
if (i >= ii) {
|
384
467
|
break;
|
385
468
|
}
|
386
469
|
}
|
470
|
+
|
387
471
|
state = (state || InitialState)[fnArray[i]];
|
472
|
+
|
388
473
|
if (!state || Array.isArray(state)) {
|
389
474
|
i++;
|
390
475
|
continue;
|
391
476
|
}
|
477
|
+
|
392
478
|
context.iCurr = i;
|
393
479
|
i++;
|
480
|
+
|
394
481
|
if (state.checkFn && !(0, state.checkFn)(context)) {
|
395
482
|
state = null;
|
396
483
|
continue;
|
397
484
|
}
|
485
|
+
|
398
486
|
match = state;
|
399
487
|
state = null;
|
400
488
|
}
|
489
|
+
|
401
490
|
this.state = state;
|
402
491
|
this.match = match;
|
403
492
|
this.lastProcessed = i;
|
@@ -405,6 +494,7 @@ var QueueOptimizer = function QueueOptimizerClosure() {
|
|
405
494
|
push: function push(fn, args) {
|
406
495
|
this.queue.fnArray.push(fn);
|
407
496
|
this.queue.argsArray.push(args);
|
497
|
+
|
408
498
|
this._optimize();
|
409
499
|
},
|
410
500
|
flush: function flush() {
|
@@ -413,6 +503,7 @@ var QueueOptimizer = function QueueOptimizerClosure() {
|
|
413
503
|
this.lastProcessed = (0, this.match.processFn)(this.context, length);
|
414
504
|
this.match = null;
|
415
505
|
this.state = null;
|
506
|
+
|
416
507
|
this._optimize();
|
417
508
|
}
|
418
509
|
},
|
@@ -424,65 +515,58 @@ var QueueOptimizer = function QueueOptimizerClosure() {
|
|
424
515
|
};
|
425
516
|
return QueueOptimizer;
|
426
517
|
}();
|
518
|
+
|
427
519
|
var NullOptimizer = function NullOptimizerClosure() {
|
428
520
|
function NullOptimizer(queue) {
|
429
521
|
this.queue = queue;
|
430
522
|
}
|
523
|
+
|
431
524
|
NullOptimizer.prototype = {
|
432
525
|
push: function push(fn, args) {
|
433
526
|
this.queue.fnArray.push(fn);
|
434
527
|
this.queue.argsArray.push(args);
|
435
528
|
},
|
436
|
-
flush: function flush() {}
|
529
|
+
flush: function flush() {},
|
530
|
+
reset: function reset() {}
|
437
531
|
};
|
438
532
|
return NullOptimizer;
|
439
533
|
}();
|
534
|
+
|
440
535
|
var OperatorList = function OperatorListClosure() {
|
441
536
|
var CHUNK_SIZE = 1000;
|
442
537
|
var CHUNK_SIZE_ABOUT = CHUNK_SIZE - 5;
|
443
|
-
|
444
|
-
var transfers = [];
|
445
|
-
var fnArray = queue.fnArray,
|
446
|
-
argsArray = queue.argsArray;
|
447
|
-
for (var i = 0, ii = queue.length; i < ii; i++) {
|
448
|
-
switch (fnArray[i]) {
|
449
|
-
case _util.OPS.paintInlineImageXObject:
|
450
|
-
case _util.OPS.paintInlineImageXObjectGroup:
|
451
|
-
case _util.OPS.paintImageMaskXObject:
|
452
|
-
var arg = argsArray[i][0];
|
453
|
-
if (!arg.cached) {
|
454
|
-
transfers.push(arg.data.buffer);
|
455
|
-
}
|
456
|
-
break;
|
457
|
-
}
|
458
|
-
}
|
459
|
-
return transfers;
|
460
|
-
}
|
538
|
+
|
461
539
|
function OperatorList(intent, messageHandler, pageIndex) {
|
462
540
|
this.messageHandler = messageHandler;
|
463
541
|
this.fnArray = [];
|
464
542
|
this.argsArray = [];
|
465
|
-
|
543
|
+
|
544
|
+
if (messageHandler && intent !== 'oplist') {
|
466
545
|
this.optimizer = new QueueOptimizer(this);
|
467
546
|
} else {
|
468
547
|
this.optimizer = new NullOptimizer(this);
|
469
548
|
}
|
549
|
+
|
470
550
|
this.dependencies = Object.create(null);
|
471
551
|
this._totalLength = 0;
|
472
552
|
this.pageIndex = pageIndex;
|
473
553
|
this.intent = intent;
|
474
554
|
this.weight = 0;
|
475
555
|
}
|
556
|
+
|
476
557
|
OperatorList.prototype = {
|
477
558
|
get length() {
|
478
559
|
return this.argsArray.length;
|
479
560
|
},
|
561
|
+
|
480
562
|
get totalLength() {
|
481
563
|
return this._totalLength + this.length;
|
482
564
|
},
|
565
|
+
|
483
566
|
addOp: function addOp(fn, args) {
|
484
567
|
this.optimizer.push(fn, args);
|
485
568
|
this.weight++;
|
569
|
+
|
486
570
|
if (this.messageHandler) {
|
487
571
|
if (this.weight >= CHUNK_SIZE) {
|
488
572
|
this.flush();
|
@@ -495,6 +579,7 @@ var OperatorList = function OperatorListClosure() {
|
|
495
579
|
if (dependency in this.dependencies) {
|
496
580
|
return;
|
497
581
|
}
|
582
|
+
|
498
583
|
this.dependencies[dependency] = true;
|
499
584
|
this.addOp(_util.OPS.dependency, [dependency]);
|
500
585
|
},
|
@@ -504,7 +589,8 @@ var OperatorList = function OperatorListClosure() {
|
|
504
589
|
}
|
505
590
|
},
|
506
591
|
addOpList: function addOpList(opList) {
|
507
|
-
|
592
|
+
Object.assign(this.dependencies, opList.dependencies);
|
593
|
+
|
508
594
|
for (var i = 0, ii = opList.length; i < ii; i++) {
|
509
595
|
this.addOp(opList.fnArray[i], opList.argsArray[i]);
|
510
596
|
}
|
@@ -516,9 +602,35 @@ var OperatorList = function OperatorListClosure() {
|
|
516
602
|
length: this.length
|
517
603
|
};
|
518
604
|
},
|
519
|
-
|
605
|
+
|
606
|
+
get _transfers() {
|
607
|
+
var transfers = [];
|
608
|
+
var fnArray = this.fnArray,
|
609
|
+
argsArray = this.argsArray,
|
610
|
+
length = this.length;
|
611
|
+
|
612
|
+
for (var i = 0; i < length; i++) {
|
613
|
+
switch (fnArray[i]) {
|
614
|
+
case _util.OPS.paintInlineImageXObject:
|
615
|
+
case _util.OPS.paintInlineImageXObjectGroup:
|
616
|
+
case _util.OPS.paintImageMaskXObject:
|
617
|
+
var arg = argsArray[i][0];
|
618
|
+
;
|
619
|
+
|
620
|
+
if (!arg.cached) {
|
621
|
+
transfers.push(arg.data.buffer);
|
622
|
+
}
|
623
|
+
|
624
|
+
break;
|
625
|
+
}
|
626
|
+
}
|
627
|
+
|
628
|
+
return transfers;
|
629
|
+
},
|
630
|
+
|
631
|
+
flush: function flush() {
|
632
|
+
var lastChunk = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
|
520
633
|
this.optimizer.flush();
|
521
|
-
var transfers = getTransfers(this);
|
522
634
|
var length = this.length;
|
523
635
|
this._totalLength += length;
|
524
636
|
this.messageHandler.send('RenderPageChunk', {
|
@@ -530,7 +642,7 @@ var OperatorList = function OperatorListClosure() {
|
|
530
642
|
},
|
531
643
|
pageIndex: this.pageIndex,
|
532
644
|
intent: this.intent
|
533
|
-
},
|
645
|
+
}, this._transfers);
|
534
646
|
this.dependencies = Object.create(null);
|
535
647
|
this.fnArray.length = 0;
|
536
648
|
this.argsArray.length = 0;
|
@@ -540,4 +652,5 @@ var OperatorList = function OperatorListClosure() {
|
|
540
652
|
};
|
541
653
|
return OperatorList;
|
542
654
|
}();
|
655
|
+
|
543
656
|
exports.OperatorList = OperatorList;
|