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