pdfjs-dist 2.0.487 → 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 +15564 -9476
- package/build/pdf.js.map +1 -1
- package/build/pdf.min.js +1 -1
- package/build/pdf.worker.js +46644 -36309
- 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 +11430 -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 +406 -131
- 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 +376 -53
- package/lib/core/charsets.js +5 -4
- package/lib/core/chunked_stream.js +387 -149
- package/lib/core/cmap.js +310 -75
- package/lib/core/colorspace.js +874 -594
- package/lib/core/crypto.js +290 -45
- package/lib/core/document.js +545 -260
- package/lib/core/encodings.js +19 -10
- package/lib/core/evaluator.js +725 -147
- package/lib/core/font_renderer.js +360 -91
- package/lib/core/fonts.js +791 -186
- package/lib/core/function.js +284 -71
- package/lib/core/glyphlist.js +3 -2
- package/lib/core/image.js +168 -61
- 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 +252 -29
- package/lib/core/jpx.js +396 -6
- package/lib/core/jpx_stream.js +18 -6
- package/lib/core/metrics.js +4 -4
- package/lib/core/murmurhash3.js +24 -6
- package/lib/core/obj.js +1137 -475
- package/lib/core/operator_list.js +108 -6
- package/lib/core/parser.js +321 -68
- package/lib/core/pattern.js +145 -13
- package/lib/core/pdf_manager.js +321 -133
- package/lib/core/primitives.js +75 -22
- package/lib/core/ps_parser.js +134 -45
- package/lib/core/standard_fonts.js +10 -10
- package/lib/core/stream.js +313 -34
- package/lib/core/type1_parser.js +143 -13
- package/lib/core/unicode.js +31 -4
- package/lib/core/worker.js +210 -66
- package/lib/display/annotation_layer.js +361 -123
- package/lib/display/api.js +1454 -729
- package/lib/display/api_compatibility.js +11 -13
- package/lib/display/canvas.js +324 -29
- package/lib/display/content_disposition.js +83 -32
- package/lib/display/dom_utils.js +226 -41
- package/lib/display/fetch_stream.js +208 -84
- package/lib/display/font_loader.js +465 -236
- package/lib/display/metadata.js +38 -16
- package/lib/display/network.js +216 -51
- package/lib/display/network_utils.js +32 -19
- package/lib/display/node_stream.js +352 -169
- package/lib/display/pattern_helper.js +58 -7
- package/lib/display/svg.js +242 -29
- package/lib/display/text_layer.js +132 -18
- package/lib/display/transport_stream.js +171 -42
- 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 +57 -4
- package/lib/pdf.js +21 -4
- 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 +295 -650
- package/lib/test/unit/annotation_spec.js +629 -345
- package/lib/test/unit/api_spec.js +555 -253
- package/lib/test/unit/bidi_spec.js +7 -7
- package/lib/test/unit/cff_parser_spec.js +40 -11
- package/lib/test/unit/clitests_helper.js +9 -7
- package/lib/test/unit/cmap_spec.js +80 -26
- package/lib/test/unit/colorspace_spec.js +99 -52
- package/lib/test/unit/crypto_spec.js +17 -5
- package/lib/test/unit/custom_spec.js +41 -53
- package/lib/test/unit/display_svg_spec.js +33 -17
- package/lib/test/unit/document_spec.js +3 -3
- package/lib/test/unit/dom_utils_spec.js +9 -9
- package/lib/test/unit/encodings_spec.js +25 -45
- package/lib/test/unit/evaluator_spec.js +34 -9
- package/lib/test/unit/function_spec.js +17 -5
- package/lib/test/unit/jasmine-boot.js +31 -18
- 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 +20 -5
- package/lib/test/unit/network_utils_spec.js +41 -14
- package/lib/test/unit/node_stream_spec.js +51 -27
- package/lib/test/unit/parser_spec.js +35 -8
- 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 +24 -4
- package/lib/test/unit/stream_spec.js +12 -4
- package/lib/test/unit/test_utils.js +90 -27
- 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 +452 -14
- package/lib/test/unit/unicode_spec.js +14 -11
- package/lib/test/unit/util_spec.js +131 -9
- package/lib/web/annotation_layer_builder.js +39 -22
- package/lib/web/app.js +1240 -582
- package/lib/web/app_options.js +71 -41
- package/lib/web/base_viewer.js +508 -179
- package/lib/web/chromecom.js +261 -117
- package/lib/web/debugger.js +166 -22
- package/lib/web/download_manager.js +31 -13
- package/lib/web/firefox_print_service.js +17 -9
- package/lib/web/firefoxcom.js +283 -79
- package/lib/web/genericcom.js +89 -30
- package/lib/web/genericl10n.js +142 -30
- package/lib/web/grab_to_pan.js +26 -4
- package/lib/web/interfaces.js +170 -47
- package/lib/web/overlay_manager.js +235 -85
- package/lib/web/password_prompt.js +21 -13
- 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 +80 -30
- 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 +137 -76
- package/lib/web/pdf_outline_viewer.js +73 -22
- package/lib/web/pdf_page_view.js +196 -63
- package/lib/web/pdf_presentation_mode.js +99 -34
- package/lib/web/pdf_print_service.js +57 -11
- package/lib/web/pdf_rendering_queue.js +27 -5
- package/lib/web/pdf_sidebar.js +120 -67
- 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 +103 -32
- package/lib/web/pdf_thumbnail_viewer.js +64 -24
- package/lib/web/pdf_viewer.component.js +112 -32
- package/lib/web/pdf_viewer.js +91 -52
- package/lib/web/preferences.js +275 -80
- package/lib/web/secondary_toolbar.js +165 -40
- package/lib/web/text_layer_builder.js +162 -65
- 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 +58 -1
- package/web/pdf_viewer.js +6346 -3919
- package/web/pdf_viewer.js.map +1 -1
- package/lib/test/unit/fonts_spec.js +0 -81
- package/lib/web/dom_events.js +0 -137
package/lib/display/svg.js
CHANGED
@@ -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 2018 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,38 +19,41 @@
|
|
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.SVGGraphics =
|
27
|
+
exports.SVGGraphics = void 0;
|
28
28
|
|
29
|
-
var _util = require(
|
29
|
+
var _util = require("../shared/util");
|
30
30
|
|
31
|
-
var _dom_utils = require(
|
31
|
+
var _dom_utils = require("./dom_utils");
|
32
32
|
|
33
|
-
var _is_node = require(
|
34
|
-
|
35
|
-
var _is_node2 = _interopRequireDefault(_is_node);
|
33
|
+
var _is_node = _interopRequireDefault(require("../shared/is_node"));
|
36
34
|
|
37
35
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
38
36
|
|
39
37
|
var SVGGraphics = function SVGGraphics() {
|
40
38
|
throw new Error('Not implemented: SVGGraphics');
|
41
39
|
};
|
40
|
+
|
41
|
+
exports.SVGGraphics = SVGGraphics;
|
42
42
|
{
|
43
43
|
var SVG_DEFAULTS = {
|
44
44
|
fontStyle: 'normal',
|
45
45
|
fontWeight: 'normal',
|
46
46
|
fillColor: '#000000'
|
47
47
|
};
|
48
|
+
|
48
49
|
var convertImgDataToPng = function convertImgDataToPngClosure() {
|
49
50
|
var PNG_HEADER = new Uint8Array([0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a]);
|
50
51
|
var CHUNK_WRAPPER_SIZE = 12;
|
51
52
|
var crcTable = new Int32Array(256);
|
53
|
+
|
52
54
|
for (var i = 0; i < 256; i++) {
|
53
55
|
var c = i;
|
56
|
+
|
54
57
|
for (var h = 0; h < 8; h++) {
|
55
58
|
if (c & 1) {
|
56
59
|
c = 0xedB88320 ^ c >> 1 & 0x7fffffff;
|
@@ -58,17 +61,22 @@ var SVGGraphics = function SVGGraphics() {
|
|
58
61
|
c = c >> 1 & 0x7fffffff;
|
59
62
|
}
|
60
63
|
}
|
64
|
+
|
61
65
|
crcTable[i] = c;
|
62
66
|
}
|
67
|
+
|
63
68
|
function crc32(data, start, end) {
|
64
69
|
var crc = -1;
|
70
|
+
|
65
71
|
for (var i = start; i < end; i++) {
|
66
72
|
var a = (crc ^ data[i]) & 0xff;
|
67
73
|
var b = crcTable[a];
|
68
74
|
crc = crc >>> 8 ^ b;
|
69
75
|
}
|
76
|
+
|
70
77
|
return crc ^ -1;
|
71
78
|
}
|
79
|
+
|
72
80
|
function writePngChunk(type, body, data, offset) {
|
73
81
|
var p = offset;
|
74
82
|
var len = body.length;
|
@@ -90,33 +98,45 @@ var SVGGraphics = function SVGGraphics() {
|
|
90
98
|
data[p + 2] = crc >> 8 & 0xff;
|
91
99
|
data[p + 3] = crc & 0xff;
|
92
100
|
}
|
101
|
+
|
93
102
|
function adler32(data, start, end) {
|
94
103
|
var a = 1;
|
95
104
|
var b = 0;
|
105
|
+
|
96
106
|
for (var i = start; i < end; ++i) {
|
97
107
|
a = (a + (data[i] & 0xff)) % 65521;
|
98
108
|
b = (b + a) % 65521;
|
99
109
|
}
|
110
|
+
|
100
111
|
return b << 16 | a;
|
101
112
|
}
|
113
|
+
|
102
114
|
function deflateSync(literals) {
|
103
|
-
if (!(0,
|
115
|
+
if (!(0, _is_node.default)()) {
|
104
116
|
return deflateSyncUncompressed(literals);
|
105
117
|
}
|
118
|
+
|
106
119
|
try {
|
107
120
|
var input;
|
121
|
+
|
108
122
|
if (parseInt(process.versions.node) >= 8) {
|
109
123
|
input = literals;
|
110
124
|
} else {
|
111
125
|
input = new Buffer(literals);
|
112
126
|
}
|
113
|
-
|
127
|
+
|
128
|
+
var output = require('zlib').deflateSync(input, {
|
129
|
+
level: 9
|
130
|
+
});
|
131
|
+
|
114
132
|
return output instanceof Uint8Array ? output : new Uint8Array(output);
|
115
133
|
} catch (e) {
|
116
134
|
(0, _util.warn)('Not compressing PNG because zlib.deflateSync is unavailable: ' + e);
|
117
135
|
}
|
136
|
+
|
118
137
|
return deflateSyncUncompressed(literals);
|
119
138
|
}
|
139
|
+
|
120
140
|
function deflateSyncUncompressed(literals) {
|
121
141
|
var len = literals.length;
|
122
142
|
var maxBlockLength = 0xFFFF;
|
@@ -126,6 +146,7 @@ var SVGGraphics = function SVGGraphics() {
|
|
126
146
|
idat[pi++] = 0x78;
|
127
147
|
idat[pi++] = 0x9c;
|
128
148
|
var pos = 0;
|
149
|
+
|
129
150
|
while (len > maxBlockLength) {
|
130
151
|
idat[pi++] = 0x00;
|
131
152
|
idat[pi++] = 0xff;
|
@@ -137,6 +158,7 @@ var SVGGraphics = function SVGGraphics() {
|
|
137
158
|
pos += maxBlockLength;
|
138
159
|
len -= maxBlockLength;
|
139
160
|
}
|
161
|
+
|
140
162
|
idat[pi++] = 0x01;
|
141
163
|
idat[pi++] = len & 0xff;
|
142
164
|
idat[pi++] = len >> 8 & 0xff;
|
@@ -151,49 +173,60 @@ var SVGGraphics = function SVGGraphics() {
|
|
151
173
|
idat[pi++] = adler & 0xff;
|
152
174
|
return idat;
|
153
175
|
}
|
176
|
+
|
154
177
|
function encode(imgData, kind, forceDataSchema, isMask) {
|
155
178
|
var width = imgData.width;
|
156
179
|
var height = imgData.height;
|
157
180
|
var bitDepth, colorType, lineSize;
|
158
181
|
var bytes = imgData.data;
|
182
|
+
|
159
183
|
switch (kind) {
|
160
184
|
case _util.ImageKind.GRAYSCALE_1BPP:
|
161
185
|
colorType = 0;
|
162
186
|
bitDepth = 1;
|
163
187
|
lineSize = width + 7 >> 3;
|
164
188
|
break;
|
189
|
+
|
165
190
|
case _util.ImageKind.RGB_24BPP:
|
166
191
|
colorType = 2;
|
167
192
|
bitDepth = 8;
|
168
193
|
lineSize = width * 3;
|
169
194
|
break;
|
195
|
+
|
170
196
|
case _util.ImageKind.RGBA_32BPP:
|
171
197
|
colorType = 6;
|
172
198
|
bitDepth = 8;
|
173
199
|
lineSize = width * 4;
|
174
200
|
break;
|
201
|
+
|
175
202
|
default:
|
176
203
|
throw new Error('invalid format');
|
177
204
|
}
|
205
|
+
|
178
206
|
var literals = new Uint8Array((1 + lineSize) * height);
|
179
207
|
var offsetLiterals = 0,
|
180
208
|
offsetBytes = 0;
|
181
209
|
var y, i;
|
210
|
+
|
182
211
|
for (y = 0; y < height; ++y) {
|
183
212
|
literals[offsetLiterals++] = 0;
|
184
213
|
literals.set(bytes.subarray(offsetBytes, offsetBytes + lineSize), offsetLiterals);
|
185
214
|
offsetBytes += lineSize;
|
186
215
|
offsetLiterals += lineSize;
|
187
216
|
}
|
217
|
+
|
188
218
|
if (kind === _util.ImageKind.GRAYSCALE_1BPP && isMask) {
|
189
219
|
offsetLiterals = 0;
|
220
|
+
|
190
221
|
for (y = 0; y < height; y++) {
|
191
222
|
offsetLiterals++;
|
223
|
+
|
192
224
|
for (i = 0; i < lineSize; i++) {
|
193
225
|
literals[offsetLiterals++] ^= 0xFF;
|
194
226
|
}
|
195
227
|
}
|
196
228
|
}
|
229
|
+
|
197
230
|
var ihdr = new Uint8Array([width >> 24 & 0xff, width >> 16 & 0xff, width >> 8 & 0xff, width & 0xff, height >> 24 & 0xff, height >> 16 & 0xff, height >> 8 & 0xff, height & 0xff, bitDepth, colorType, 0x00, 0x00, 0x00]);
|
198
231
|
var idat = deflateSync(literals);
|
199
232
|
var pngLength = PNG_HEADER.length + CHUNK_WRAPPER_SIZE * 3 + ihdr.length + idat.length;
|
@@ -208,11 +241,13 @@ var SVGGraphics = function SVGGraphics() {
|
|
208
241
|
writePngChunk('IEND', new Uint8Array(0), data, offset);
|
209
242
|
return (0, _util.createObjectURL)(data, 'image/png', forceDataSchema);
|
210
243
|
}
|
244
|
+
|
211
245
|
return function convertImgDataToPng(imgData, forceDataSchema, isMask) {
|
212
246
|
var kind = imgData.kind === undefined ? _util.ImageKind.GRAYSCALE_1BPP : imgData.kind;
|
213
247
|
return encode(imgData, kind, forceDataSchema, isMask);
|
214
248
|
};
|
215
249
|
}();
|
250
|
+
|
216
251
|
var SVGExtraState = function SVGExtraStateClosure() {
|
217
252
|
function SVGExtraState() {
|
218
253
|
this.fontSizeScale = 1;
|
@@ -221,6 +256,7 @@ var SVGGraphics = function SVGGraphics() {
|
|
221
256
|
this.textMatrix = _util.IDENTITY_MATRIX;
|
222
257
|
this.fontMatrix = _util.FONT_IDENTITY_MATRIX;
|
223
258
|
this.leading = 0;
|
259
|
+
this.textRenderingMode = _util.TextRenderingMode.FILL;
|
224
260
|
this.x = 0;
|
225
261
|
this.y = 0;
|
226
262
|
this.lineX = 0;
|
@@ -244,6 +280,7 @@ var SVGGraphics = function SVGGraphics() {
|
|
244
280
|
this.clipGroup = null;
|
245
281
|
this.maskId = '';
|
246
282
|
}
|
283
|
+
|
247
284
|
SVGExtraState.prototype = {
|
248
285
|
clone: function SVGExtraState_clone() {
|
249
286
|
return Object.create(this);
|
@@ -255,11 +292,13 @@ var SVGGraphics = function SVGGraphics() {
|
|
255
292
|
};
|
256
293
|
return SVGExtraState;
|
257
294
|
}();
|
295
|
+
|
258
296
|
exports.SVGGraphics = SVGGraphics = function SVGGraphicsClosure() {
|
259
297
|
function opListToTree(opList) {
|
260
298
|
var opTree = [];
|
261
299
|
var tmp = [];
|
262
300
|
var opListLen = opList.length;
|
301
|
+
|
263
302
|
for (var x = 0; x < opListLen; x++) {
|
264
303
|
if (opList[x].fn === 'save') {
|
265
304
|
opTree.push({
|
@@ -271,36 +310,46 @@ var SVGGraphics = function SVGGraphics() {
|
|
271
310
|
opTree = opTree[opTree.length - 1].items;
|
272
311
|
continue;
|
273
312
|
}
|
313
|
+
|
274
314
|
if (opList[x].fn === 'restore') {
|
275
315
|
opTree = tmp.pop();
|
276
316
|
} else {
|
277
317
|
opTree.push(opList[x]);
|
278
318
|
}
|
279
319
|
}
|
320
|
+
|
280
321
|
return opTree;
|
281
322
|
}
|
323
|
+
|
282
324
|
function pf(value) {
|
283
325
|
if (Number.isInteger(value)) {
|
284
326
|
return value.toString();
|
285
327
|
}
|
328
|
+
|
286
329
|
var s = value.toFixed(10);
|
287
330
|
var i = s.length - 1;
|
331
|
+
|
288
332
|
if (s[i] !== '0') {
|
289
333
|
return s;
|
290
334
|
}
|
335
|
+
|
291
336
|
do {
|
292
337
|
i--;
|
293
338
|
} while (s[i] === '0');
|
294
|
-
|
339
|
+
|
340
|
+
return s.substring(0, s[i] === '.' ? i : i + 1);
|
295
341
|
}
|
342
|
+
|
296
343
|
function pm(m) {
|
297
344
|
if (m[4] === 0 && m[5] === 0) {
|
298
345
|
if (m[1] === 0 && m[2] === 0) {
|
299
346
|
if (m[0] === 1 && m[3] === 1) {
|
300
347
|
return '';
|
301
348
|
}
|
349
|
+
|
302
350
|
return 'scale(' + pf(m[0]) + ' ' + pf(m[3]) + ')';
|
303
351
|
}
|
352
|
+
|
304
353
|
if (m[0] === m[3] && m[1] === -m[2]) {
|
305
354
|
var a = Math.acos(m[0]) * 180 / Math.PI;
|
306
355
|
return 'rotate(' + pf(a) + ')';
|
@@ -310,8 +359,10 @@ var SVGGraphics = function SVGGraphics() {
|
|
310
359
|
return 'translate(' + pf(m[4]) + ' ' + pf(m[5]) + ')';
|
311
360
|
}
|
312
361
|
}
|
362
|
+
|
313
363
|
return 'matrix(' + pf(m[0]) + ' ' + pf(m[1]) + ' ' + pf(m[2]) + ' ' + pf(m[3]) + ' ' + pf(m[4]) + ' ' + pf(m[5]) + ')';
|
314
364
|
}
|
365
|
+
|
315
366
|
function SVGGraphics(commonObjs, objs, forceDataSchema) {
|
316
367
|
this.svgFactory = new _dom_utils.DOMSVGFactory();
|
317
368
|
this.current = new SVGExtraState();
|
@@ -327,6 +378,7 @@ var SVGGraphics = function SVGGraphics() {
|
|
327
378
|
this.cssStyle = null;
|
328
379
|
this.forceDataSchema = !!forceDataSchema;
|
329
380
|
}
|
381
|
+
|
330
382
|
var XML_NS = 'http://www.w3.org/XML/1998/namespace';
|
331
383
|
var XLINK_NS = 'http://www.w3.org/1999/xlink';
|
332
384
|
var LINE_CAP_STYLES = ['butt', 'round', 'square'];
|
@@ -357,13 +409,16 @@ var SVGGraphics = function SVGGraphics() {
|
|
357
409
|
var fnArray = operatorList.fnArray;
|
358
410
|
var fnArrayLen = fnArray.length;
|
359
411
|
var argsArray = operatorList.argsArray;
|
412
|
+
|
360
413
|
for (var i = 0; i < fnArrayLen; i++) {
|
361
414
|
if (_util.OPS.dependency === fnArray[i]) {
|
362
415
|
var deps = argsArray[i];
|
416
|
+
|
363
417
|
for (var n = 0, nn = deps.length; n < nn; n++) {
|
364
418
|
var obj = deps[n];
|
365
419
|
var common = obj.substring(0, 2) === 'g_';
|
366
420
|
var promise;
|
421
|
+
|
367
422
|
if (common) {
|
368
423
|
promise = new Promise(function (resolve) {
|
369
424
|
_this.commonObjs.get(obj, resolve);
|
@@ -373,10 +428,12 @@ var SVGGraphics = function SVGGraphics() {
|
|
373
428
|
_this.objs.get(obj, resolve);
|
374
429
|
});
|
375
430
|
}
|
431
|
+
|
376
432
|
this.current.dependencies.push(promise);
|
377
433
|
}
|
378
434
|
}
|
379
435
|
}
|
436
|
+
|
380
437
|
return Promise.all(this.current.dependencies);
|
381
438
|
},
|
382
439
|
transform: function SVGGraphics_transform(a, b, c, d, e, f) {
|
@@ -388,11 +445,16 @@ var SVGGraphics = function SVGGraphics() {
|
|
388
445
|
var _this2 = this;
|
389
446
|
|
390
447
|
this.viewport = viewport;
|
448
|
+
|
391
449
|
var svgElement = this._initialize(viewport);
|
450
|
+
|
392
451
|
return this.loadDependencies(operatorList).then(function () {
|
393
452
|
_this2.transformMatrix = _util.IDENTITY_MATRIX;
|
453
|
+
|
394
454
|
var opTree = _this2.convertOpList(operatorList);
|
455
|
+
|
395
456
|
_this2.executeOpTree(opTree);
|
457
|
+
|
396
458
|
return svgElement;
|
397
459
|
});
|
398
460
|
},
|
@@ -402,9 +464,11 @@ var SVGGraphics = function SVGGraphics() {
|
|
402
464
|
var fnArrayLen = fnArray.length;
|
403
465
|
var REVOPS = [];
|
404
466
|
var opList = [];
|
467
|
+
|
405
468
|
for (var op in _util.OPS) {
|
406
469
|
REVOPS[_util.OPS[op]] = op;
|
407
470
|
}
|
471
|
+
|
408
472
|
for (var x = 0; x < fnArrayLen; x++) {
|
409
473
|
var fnId = fnArray[x];
|
410
474
|
opList.push({
|
@@ -413,149 +477,201 @@ var SVGGraphics = function SVGGraphics() {
|
|
413
477
|
'args': argsArray[x]
|
414
478
|
});
|
415
479
|
}
|
480
|
+
|
416
481
|
return opListToTree(opList);
|
417
482
|
},
|
418
483
|
executeOpTree: function SVGGraphics_executeOpTree(opTree) {
|
419
484
|
var opTreeLen = opTree.length;
|
485
|
+
|
420
486
|
for (var x = 0; x < opTreeLen; x++) {
|
421
487
|
var fn = opTree[x].fn;
|
422
488
|
var fnId = opTree[x].fnId;
|
423
489
|
var args = opTree[x].args;
|
490
|
+
|
424
491
|
switch (fnId | 0) {
|
425
492
|
case _util.OPS.beginText:
|
426
493
|
this.beginText();
|
427
494
|
break;
|
495
|
+
|
428
496
|
case _util.OPS.dependency:
|
429
497
|
break;
|
498
|
+
|
430
499
|
case _util.OPS.setLeading:
|
431
500
|
this.setLeading(args);
|
432
501
|
break;
|
502
|
+
|
433
503
|
case _util.OPS.setLeadingMoveText:
|
434
504
|
this.setLeadingMoveText(args[0], args[1]);
|
435
505
|
break;
|
506
|
+
|
436
507
|
case _util.OPS.setFont:
|
437
508
|
this.setFont(args);
|
438
509
|
break;
|
510
|
+
|
439
511
|
case _util.OPS.showText:
|
440
512
|
this.showText(args[0]);
|
441
513
|
break;
|
514
|
+
|
442
515
|
case _util.OPS.showSpacedText:
|
443
516
|
this.showText(args[0]);
|
444
517
|
break;
|
518
|
+
|
445
519
|
case _util.OPS.endText:
|
446
520
|
this.endText();
|
447
521
|
break;
|
522
|
+
|
448
523
|
case _util.OPS.moveText:
|
449
524
|
this.moveText(args[0], args[1]);
|
450
525
|
break;
|
526
|
+
|
451
527
|
case _util.OPS.setCharSpacing:
|
452
528
|
this.setCharSpacing(args[0]);
|
453
529
|
break;
|
530
|
+
|
454
531
|
case _util.OPS.setWordSpacing:
|
455
532
|
this.setWordSpacing(args[0]);
|
456
533
|
break;
|
534
|
+
|
457
535
|
case _util.OPS.setHScale:
|
458
536
|
this.setHScale(args[0]);
|
459
537
|
break;
|
538
|
+
|
460
539
|
case _util.OPS.setTextMatrix:
|
461
540
|
this.setTextMatrix(args[0], args[1], args[2], args[3], args[4], args[5]);
|
462
541
|
break;
|
542
|
+
|
463
543
|
case _util.OPS.setTextRise:
|
464
544
|
this.setTextRise(args[0]);
|
465
545
|
break;
|
546
|
+
|
547
|
+
case _util.OPS.setTextRenderingMode:
|
548
|
+
this.setTextRenderingMode(args[0]);
|
549
|
+
break;
|
550
|
+
|
466
551
|
case _util.OPS.setLineWidth:
|
467
552
|
this.setLineWidth(args[0]);
|
468
553
|
break;
|
554
|
+
|
469
555
|
case _util.OPS.setLineJoin:
|
470
556
|
this.setLineJoin(args[0]);
|
471
557
|
break;
|
558
|
+
|
472
559
|
case _util.OPS.setLineCap:
|
473
560
|
this.setLineCap(args[0]);
|
474
561
|
break;
|
562
|
+
|
475
563
|
case _util.OPS.setMiterLimit:
|
476
564
|
this.setMiterLimit(args[0]);
|
477
565
|
break;
|
566
|
+
|
478
567
|
case _util.OPS.setFillRGBColor:
|
479
568
|
this.setFillRGBColor(args[0], args[1], args[2]);
|
480
569
|
break;
|
570
|
+
|
481
571
|
case _util.OPS.setStrokeRGBColor:
|
482
572
|
this.setStrokeRGBColor(args[0], args[1], args[2]);
|
483
573
|
break;
|
574
|
+
|
484
575
|
case _util.OPS.setDash:
|
485
576
|
this.setDash(args[0], args[1]);
|
486
577
|
break;
|
578
|
+
|
487
579
|
case _util.OPS.setGState:
|
488
580
|
this.setGState(args[0]);
|
489
581
|
break;
|
582
|
+
|
490
583
|
case _util.OPS.fill:
|
491
584
|
this.fill();
|
492
585
|
break;
|
586
|
+
|
493
587
|
case _util.OPS.eoFill:
|
494
588
|
this.eoFill();
|
495
589
|
break;
|
590
|
+
|
496
591
|
case _util.OPS.stroke:
|
497
592
|
this.stroke();
|
498
593
|
break;
|
594
|
+
|
499
595
|
case _util.OPS.fillStroke:
|
500
596
|
this.fillStroke();
|
501
597
|
break;
|
598
|
+
|
502
599
|
case _util.OPS.eoFillStroke:
|
503
600
|
this.eoFillStroke();
|
504
601
|
break;
|
602
|
+
|
505
603
|
case _util.OPS.clip:
|
506
604
|
this.clip('nonzero');
|
507
605
|
break;
|
606
|
+
|
508
607
|
case _util.OPS.eoClip:
|
509
608
|
this.clip('evenodd');
|
510
609
|
break;
|
610
|
+
|
511
611
|
case _util.OPS.paintSolidColorImageMask:
|
512
612
|
this.paintSolidColorImageMask();
|
513
613
|
break;
|
614
|
+
|
514
615
|
case _util.OPS.paintJpegXObject:
|
515
616
|
this.paintJpegXObject(args[0], args[1], args[2]);
|
516
617
|
break;
|
618
|
+
|
517
619
|
case _util.OPS.paintImageXObject:
|
518
620
|
this.paintImageXObject(args[0]);
|
519
621
|
break;
|
622
|
+
|
520
623
|
case _util.OPS.paintInlineImageXObject:
|
521
624
|
this.paintInlineImageXObject(args[0]);
|
522
625
|
break;
|
626
|
+
|
523
627
|
case _util.OPS.paintImageMaskXObject:
|
524
628
|
this.paintImageMaskXObject(args[0]);
|
525
629
|
break;
|
630
|
+
|
526
631
|
case _util.OPS.paintFormXObjectBegin:
|
527
632
|
this.paintFormXObjectBegin(args[0], args[1]);
|
528
633
|
break;
|
634
|
+
|
529
635
|
case _util.OPS.paintFormXObjectEnd:
|
530
636
|
this.paintFormXObjectEnd();
|
531
637
|
break;
|
638
|
+
|
532
639
|
case _util.OPS.closePath:
|
533
640
|
this.closePath();
|
534
641
|
break;
|
642
|
+
|
535
643
|
case _util.OPS.closeStroke:
|
536
644
|
this.closeStroke();
|
537
645
|
break;
|
646
|
+
|
538
647
|
case _util.OPS.closeFillStroke:
|
539
648
|
this.closeFillStroke();
|
540
649
|
break;
|
650
|
+
|
541
651
|
case _util.OPS.closeEOFillStroke:
|
542
652
|
this.closeEOFillStroke();
|
543
653
|
break;
|
654
|
+
|
544
655
|
case _util.OPS.nextLine:
|
545
656
|
this.nextLine();
|
546
657
|
break;
|
658
|
+
|
547
659
|
case _util.OPS.transform:
|
548
660
|
this.transform(args[0], args[1], args[2], args[3], args[4], args[5]);
|
549
661
|
break;
|
662
|
+
|
550
663
|
case _util.OPS.constructPath:
|
551
664
|
this.constructPath(args[0], args[1]);
|
552
665
|
break;
|
666
|
+
|
553
667
|
case _util.OPS.endPath:
|
554
668
|
this.endPath();
|
555
669
|
break;
|
670
|
+
|
556
671
|
case 92:
|
557
672
|
this.group(opTree[x].items);
|
558
673
|
break;
|
674
|
+
|
559
675
|
default:
|
560
676
|
(0, _util.warn)('Unimplemented operator ' + fn);
|
561
677
|
break;
|
@@ -608,9 +724,11 @@ var SVGGraphics = function SVGGraphics() {
|
|
608
724
|
var current = this.current;
|
609
725
|
var font = current.font;
|
610
726
|
var fontSize = current.fontSize;
|
727
|
+
|
611
728
|
if (fontSize === 0) {
|
612
729
|
return;
|
613
730
|
}
|
731
|
+
|
614
732
|
var charSpacing = current.charSpacing;
|
615
733
|
var wordSpacing = current.wordSpacing;
|
616
734
|
var fontDirection = current.fontDirection;
|
@@ -620,8 +738,10 @@ var SVGGraphics = function SVGGraphics() {
|
|
620
738
|
var widthAdvanceScale = fontSize * current.fontMatrix[0];
|
621
739
|
var x = 0,
|
622
740
|
i;
|
741
|
+
|
623
742
|
for (i = 0; i < glyphsLength; ++i) {
|
624
743
|
var glyph = glyphs[i];
|
744
|
+
|
625
745
|
if (glyph === null) {
|
626
746
|
x += fontDirection * wordSpacing;
|
627
747
|
continue;
|
@@ -629,45 +749,73 @@ var SVGGraphics = function SVGGraphics() {
|
|
629
749
|
x += -glyph * fontSize * 0.001;
|
630
750
|
continue;
|
631
751
|
}
|
752
|
+
|
632
753
|
var width = glyph.width;
|
633
754
|
var character = glyph.fontChar;
|
634
755
|
var spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;
|
635
756
|
var charWidth = width * widthAdvanceScale + spacing * fontDirection;
|
757
|
+
|
636
758
|
if (!glyph.isInFont && !font.missingFile) {
|
637
759
|
x += charWidth;
|
638
760
|
continue;
|
639
761
|
}
|
762
|
+
|
640
763
|
current.xcoords.push(current.x + x * textHScale);
|
641
764
|
current.tspan.textContent += character;
|
642
765
|
x += charWidth;
|
643
766
|
}
|
767
|
+
|
644
768
|
if (vertical) {
|
645
769
|
current.y -= x * textHScale;
|
646
770
|
} else {
|
647
771
|
current.x += x * textHScale;
|
648
772
|
}
|
773
|
+
|
649
774
|
current.tspan.setAttributeNS(null, 'x', current.xcoords.map(pf).join(' '));
|
650
775
|
current.tspan.setAttributeNS(null, 'y', pf(-current.y));
|
651
776
|
current.tspan.setAttributeNS(null, 'font-family', current.fontFamily);
|
652
777
|
current.tspan.setAttributeNS(null, 'font-size', pf(current.fontSize) + 'px');
|
778
|
+
|
653
779
|
if (current.fontStyle !== SVG_DEFAULTS.fontStyle) {
|
654
780
|
current.tspan.setAttributeNS(null, 'font-style', current.fontStyle);
|
655
781
|
}
|
782
|
+
|
656
783
|
if (current.fontWeight !== SVG_DEFAULTS.fontWeight) {
|
657
784
|
current.tspan.setAttributeNS(null, 'font-weight', current.fontWeight);
|
658
785
|
}
|
659
|
-
|
660
|
-
|
786
|
+
|
787
|
+
var fillStrokeMode = current.textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK;
|
788
|
+
|
789
|
+
if (fillStrokeMode === _util.TextRenderingMode.FILL || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {
|
790
|
+
if (current.fillColor !== SVG_DEFAULTS.fillColor) {
|
791
|
+
current.tspan.setAttributeNS(null, 'fill', current.fillColor);
|
792
|
+
}
|
793
|
+
|
794
|
+
if (current.fillAlpha < 1) {
|
795
|
+
current.tspan.setAttributeNS(null, 'fill-opacity', current.fillAlpha);
|
796
|
+
}
|
797
|
+
} else if (current.textRenderingMode === _util.TextRenderingMode.ADD_TO_PATH) {
|
798
|
+
current.tspan.setAttributeNS(null, 'fill', 'transparent');
|
799
|
+
} else {
|
800
|
+
current.tspan.setAttributeNS(null, 'fill', 'none');
|
661
801
|
}
|
802
|
+
|
803
|
+
if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {
|
804
|
+
this._setStrokeAttributes(current.tspan);
|
805
|
+
}
|
806
|
+
|
662
807
|
var textMatrix = current.textMatrix;
|
808
|
+
|
663
809
|
if (current.textRise !== 0) {
|
664
810
|
textMatrix = textMatrix.slice();
|
665
811
|
textMatrix[5] += current.textRise;
|
666
812
|
}
|
813
|
+
|
667
814
|
current.txtElement.setAttributeNS(null, 'transform', pm(textMatrix) + ' scale(1, -1)');
|
668
815
|
current.txtElement.setAttributeNS(XML_NS, 'xml:space', 'preserve');
|
669
816
|
current.txtElement.appendChild(current.tspan);
|
670
817
|
current.txtgrp.appendChild(current.txtElement);
|
818
|
+
|
671
819
|
this._ensureTransformGroup().appendChild(current.txtElement);
|
672
820
|
},
|
673
821
|
setLeadingMoveText: function SVGGraphics_setLeadingMoveText(x, y) {
|
@@ -680,6 +828,7 @@ var SVGGraphics = function SVGGraphics() {
|
|
680
828
|
this.cssStyle.setAttributeNS(null, 'type', 'text/css');
|
681
829
|
this.defs.appendChild(this.cssStyle);
|
682
830
|
}
|
831
|
+
|
683
832
|
var url = (0, _util.createObjectURL)(fontObj.data, fontObj.mimetype, this.forceDataSchema);
|
684
833
|
this.cssStyle.textContent += '@font-face { font-family: "' + fontObj.loadedName + '";' + ' src: url(' + url + '); }\n';
|
685
834
|
},
|
@@ -688,19 +837,23 @@ var SVGGraphics = function SVGGraphics() {
|
|
688
837
|
var fontObj = this.commonObjs.get(details[0]);
|
689
838
|
var size = details[1];
|
690
839
|
this.current.font = fontObj;
|
840
|
+
|
691
841
|
if (this.embedFonts && fontObj.data && !this.embeddedFonts[fontObj.loadedName]) {
|
692
842
|
this.addFontStyle(fontObj);
|
693
843
|
this.embeddedFonts[fontObj.loadedName] = fontObj;
|
694
844
|
}
|
845
|
+
|
695
846
|
current.fontMatrix = fontObj.fontMatrix ? fontObj.fontMatrix : _util.FONT_IDENTITY_MATRIX;
|
696
847
|
var bold = fontObj.black ? fontObj.bold ? 'bolder' : 'bold' : fontObj.bold ? 'bold' : 'normal';
|
697
848
|
var italic = fontObj.italic ? 'italic' : 'normal';
|
849
|
+
|
698
850
|
if (size < 0) {
|
699
851
|
size = -size;
|
700
852
|
current.fontDirection = -1;
|
701
853
|
} else {
|
702
854
|
current.fontDirection = 1;
|
703
855
|
}
|
856
|
+
|
704
857
|
current.fontSize = size;
|
705
858
|
current.fontFamily = fontObj.loadedName;
|
706
859
|
current.fontWeight = bold;
|
@@ -709,9 +862,19 @@ var SVGGraphics = function SVGGraphics() {
|
|
709
862
|
current.tspan.setAttributeNS(null, 'y', pf(-current.y));
|
710
863
|
current.xcoords = [];
|
711
864
|
},
|
712
|
-
endText: function
|
865
|
+
endText: function endText() {
|
866
|
+
var current = this.current;
|
867
|
+
|
868
|
+
if (current.textRenderingMode & _util.TextRenderingMode.ADD_TO_PATH_FLAG && current.txtElement && current.txtElement.hasChildNodes()) {
|
869
|
+
current.element = current.txtElement;
|
870
|
+
this.clip('nonzero');
|
871
|
+
this.endPath();
|
872
|
+
}
|
873
|
+
},
|
713
874
|
setLineWidth: function SVGGraphics_setLineWidth(width) {
|
714
|
-
|
875
|
+
if (width > 0) {
|
876
|
+
this.current.lineWidth = width;
|
877
|
+
}
|
715
878
|
},
|
716
879
|
setLineCap: function SVGGraphics_setLineCap(style) {
|
717
880
|
this.current.lineCap = LINE_CAP_STYLES[style];
|
@@ -727,6 +890,7 @@ var SVGGraphics = function SVGGraphics() {
|
|
727
890
|
},
|
728
891
|
setStrokeRGBColor: function SVGGraphics_setStrokeRGBColor(r, g, b) {
|
729
892
|
var color = _util.Util.makeCssRgb(r, g, b);
|
893
|
+
|
730
894
|
this.current.strokeColor = color;
|
731
895
|
},
|
732
896
|
setFillAlpha: function SVGGraphics_setFillAlpha(fillAlpha) {
|
@@ -734,6 +898,7 @@ var SVGGraphics = function SVGGraphics() {
|
|
734
898
|
},
|
735
899
|
setFillRGBColor: function SVGGraphics_setFillRGBColor(r, g, b) {
|
736
900
|
var color = _util.Util.makeCssRgb(r, g, b);
|
901
|
+
|
737
902
|
this.current.fillColor = color;
|
738
903
|
this.current.tspan = this.svgFactory.createElement('svg:tspan');
|
739
904
|
this.current.xcoords = [];
|
@@ -749,6 +914,7 @@ var SVGGraphics = function SVGGraphics() {
|
|
749
914
|
current.path = this.svgFactory.createElement('svg:path');
|
750
915
|
var d = [];
|
751
916
|
var opLength = ops.length;
|
917
|
+
|
752
918
|
for (var i = 0, j = 0; i < opLength; i++) {
|
753
919
|
switch (ops[i] | 0) {
|
754
920
|
case _util.OPS.rectangle:
|
@@ -760,42 +926,51 @@ var SVGGraphics = function SVGGraphics() {
|
|
760
926
|
var yh = y + height;
|
761
927
|
d.push('M', pf(x), pf(y), 'L', pf(xw), pf(y), 'L', pf(xw), pf(yh), 'L', pf(x), pf(yh), 'Z');
|
762
928
|
break;
|
929
|
+
|
763
930
|
case _util.OPS.moveTo:
|
764
931
|
x = args[j++];
|
765
932
|
y = args[j++];
|
766
933
|
d.push('M', pf(x), pf(y));
|
767
934
|
break;
|
935
|
+
|
768
936
|
case _util.OPS.lineTo:
|
769
937
|
x = args[j++];
|
770
938
|
y = args[j++];
|
771
939
|
d.push('L', pf(x), pf(y));
|
772
940
|
break;
|
941
|
+
|
773
942
|
case _util.OPS.curveTo:
|
774
943
|
x = args[j + 4];
|
775
944
|
y = args[j + 5];
|
776
945
|
d.push('C', pf(args[j]), pf(args[j + 1]), pf(args[j + 2]), pf(args[j + 3]), pf(x), pf(y));
|
777
946
|
j += 6;
|
778
947
|
break;
|
948
|
+
|
779
949
|
case _util.OPS.curveTo2:
|
780
950
|
x = args[j + 2];
|
781
951
|
y = args[j + 3];
|
782
952
|
d.push('C', pf(x), pf(y), pf(args[j]), pf(args[j + 1]), pf(args[j + 2]), pf(args[j + 3]));
|
783
953
|
j += 4;
|
784
954
|
break;
|
955
|
+
|
785
956
|
case _util.OPS.curveTo3:
|
786
957
|
x = args[j + 2];
|
787
958
|
y = args[j + 3];
|
788
959
|
d.push('C', pf(args[j]), pf(args[j + 1]), pf(x), pf(y), pf(x), pf(y));
|
789
960
|
j += 4;
|
790
961
|
break;
|
962
|
+
|
791
963
|
case _util.OPS.closePath:
|
792
964
|
d.push('Z');
|
793
965
|
break;
|
794
966
|
}
|
795
967
|
}
|
968
|
+
|
796
969
|
current.path.setAttributeNS(null, 'd', d.join(' '));
|
797
970
|
current.path.setAttributeNS(null, 'fill', 'none');
|
971
|
+
|
798
972
|
this._ensureTransformGroup().appendChild(current.path);
|
973
|
+
|
799
974
|
current.element = current.path;
|
800
975
|
current.setCurrentPoint(x, y);
|
801
976
|
},
|
@@ -803,27 +978,33 @@ var SVGGraphics = function SVGGraphics() {
|
|
803
978
|
if (!this.pendingClip) {
|
804
979
|
return;
|
805
980
|
}
|
981
|
+
|
806
982
|
var current = this.current;
|
807
983
|
var clipId = 'clippath' + clipCount;
|
808
984
|
clipCount++;
|
809
985
|
var clipPath = this.svgFactory.createElement('svg:clipPath');
|
810
986
|
clipPath.setAttributeNS(null, 'id', clipId);
|
811
987
|
clipPath.setAttributeNS(null, 'transform', pm(this.transformMatrix));
|
812
|
-
var clipElement = current.element.cloneNode();
|
988
|
+
var clipElement = current.element.cloneNode(true);
|
989
|
+
|
813
990
|
if (this.pendingClip === 'evenodd') {
|
814
991
|
clipElement.setAttributeNS(null, 'clip-rule', 'evenodd');
|
815
992
|
} else {
|
816
993
|
clipElement.setAttributeNS(null, 'clip-rule', 'nonzero');
|
817
994
|
}
|
995
|
+
|
818
996
|
this.pendingClip = null;
|
819
997
|
clipPath.appendChild(clipElement);
|
820
998
|
this.defs.appendChild(clipPath);
|
999
|
+
|
821
1000
|
if (current.activeClipUrl) {
|
822
1001
|
current.clipGroup = null;
|
823
1002
|
this.extraStack.forEach(function (prev) {
|
824
1003
|
prev.clipGroup = null;
|
825
1004
|
});
|
1005
|
+
clipPath.setAttributeNS(null, 'clip-path', current.activeClipUrl);
|
826
1006
|
}
|
1007
|
+
|
827
1008
|
current.activeClipUrl = 'url(#' + clipId + ')';
|
828
1009
|
this.tgrp = null;
|
829
1010
|
},
|
@@ -832,6 +1013,7 @@ var SVGGraphics = function SVGGraphics() {
|
|
832
1013
|
},
|
833
1014
|
closePath: function SVGGraphics_closePath() {
|
834
1015
|
var current = this.current;
|
1016
|
+
|
835
1017
|
if (current.path) {
|
836
1018
|
var d = current.path.getAttributeNS(null, 'd');
|
837
1019
|
d += 'Z';
|
@@ -844,6 +1026,9 @@ var SVGGraphics = function SVGGraphics() {
|
|
844
1026
|
setTextRise: function SVGGraphics_setTextRise(textRise) {
|
845
1027
|
this.current.textRise = textRise;
|
846
1028
|
},
|
1029
|
+
setTextRenderingMode: function setTextRenderingMode(textRenderingMode) {
|
1030
|
+
this.current.textRenderingMode = textRenderingMode;
|
1031
|
+
},
|
847
1032
|
setHScale: function SVGGraphics_setHScale(scale) {
|
848
1033
|
this.current.textHScale = scale / 100;
|
849
1034
|
},
|
@@ -852,31 +1037,40 @@ var SVGGraphics = function SVGGraphics() {
|
|
852
1037
|
var state = states[i];
|
853
1038
|
var key = state[0];
|
854
1039
|
var value = state[1];
|
1040
|
+
|
855
1041
|
switch (key) {
|
856
1042
|
case 'LW':
|
857
1043
|
this.setLineWidth(value);
|
858
1044
|
break;
|
1045
|
+
|
859
1046
|
case 'LC':
|
860
1047
|
this.setLineCap(value);
|
861
1048
|
break;
|
1049
|
+
|
862
1050
|
case 'LJ':
|
863
1051
|
this.setLineJoin(value);
|
864
1052
|
break;
|
1053
|
+
|
865
1054
|
case 'ML':
|
866
1055
|
this.setMiterLimit(value);
|
867
1056
|
break;
|
1057
|
+
|
868
1058
|
case 'D':
|
869
1059
|
this.setDash(value[0], value[1]);
|
870
1060
|
break;
|
1061
|
+
|
871
1062
|
case 'Font':
|
872
1063
|
this.setFont(value);
|
873
1064
|
break;
|
1065
|
+
|
874
1066
|
case 'CA':
|
875
1067
|
this.setStrokeAlpha(value);
|
876
1068
|
break;
|
1069
|
+
|
877
1070
|
case 'ca':
|
878
1071
|
this.setFillAlpha(value);
|
879
1072
|
break;
|
1073
|
+
|
880
1074
|
default:
|
881
1075
|
(0, _util.warn)('Unimplemented graphic state ' + key);
|
882
1076
|
break;
|
@@ -885,29 +1079,39 @@ var SVGGraphics = function SVGGraphics() {
|
|
885
1079
|
},
|
886
1080
|
fill: function SVGGraphics_fill() {
|
887
1081
|
var current = this.current;
|
1082
|
+
|
888
1083
|
if (current.element) {
|
889
1084
|
current.element.setAttributeNS(null, 'fill', current.fillColor);
|
890
1085
|
current.element.setAttributeNS(null, 'fill-opacity', current.fillAlpha);
|
1086
|
+
this.endPath();
|
891
1087
|
}
|
892
1088
|
},
|
893
1089
|
stroke: function SVGGraphics_stroke() {
|
894
1090
|
var current = this.current;
|
1091
|
+
|
895
1092
|
if (current.element) {
|
896
|
-
|
897
|
-
|
898
|
-
current.element.setAttributeNS(null, 'stroke-miterlimit', pf(current.miterLimit));
|
899
|
-
current.element.setAttributeNS(null, 'stroke-linecap', current.lineCap);
|
900
|
-
current.element.setAttributeNS(null, 'stroke-linejoin', current.lineJoin);
|
901
|
-
current.element.setAttributeNS(null, 'stroke-width', pf(current.lineWidth) + 'px');
|
902
|
-
current.element.setAttributeNS(null, 'stroke-dasharray', current.dashArray.map(pf).join(' '));
|
903
|
-
current.element.setAttributeNS(null, 'stroke-dashoffset', pf(current.dashPhase) + 'px');
|
1093
|
+
this._setStrokeAttributes(current.element);
|
1094
|
+
|
904
1095
|
current.element.setAttributeNS(null, 'fill', 'none');
|
1096
|
+
this.endPath();
|
905
1097
|
}
|
906
1098
|
},
|
1099
|
+
_setStrokeAttributes: function _setStrokeAttributes(element) {
|
1100
|
+
var current = this.current;
|
1101
|
+
element.setAttributeNS(null, 'stroke', current.strokeColor);
|
1102
|
+
element.setAttributeNS(null, 'stroke-opacity', current.strokeAlpha);
|
1103
|
+
element.setAttributeNS(null, 'stroke-miterlimit', pf(current.miterLimit));
|
1104
|
+
element.setAttributeNS(null, 'stroke-linecap', current.lineCap);
|
1105
|
+
element.setAttributeNS(null, 'stroke-linejoin', current.lineJoin);
|
1106
|
+
element.setAttributeNS(null, 'stroke-width', pf(current.lineWidth) + 'px');
|
1107
|
+
element.setAttributeNS(null, 'stroke-dasharray', current.dashArray.map(pf).join(' '));
|
1108
|
+
element.setAttributeNS(null, 'stroke-dashoffset', pf(current.dashPhase) + 'px');
|
1109
|
+
},
|
907
1110
|
eoFill: function SVGGraphics_eoFill() {
|
908
1111
|
if (this.current.element) {
|
909
1112
|
this.current.element.setAttributeNS(null, 'fill-rule', 'evenodd');
|
910
1113
|
}
|
1114
|
+
|
911
1115
|
this.fill();
|
912
1116
|
},
|
913
1117
|
fillStroke: function SVGGraphics_fillStroke() {
|
@@ -918,6 +1122,7 @@ var SVGGraphics = function SVGGraphics() {
|
|
918
1122
|
if (this.current.element) {
|
919
1123
|
this.current.element.setAttributeNS(null, 'fill-rule', 'evenodd');
|
920
1124
|
}
|
1125
|
+
|
921
1126
|
this.fillStroke();
|
922
1127
|
},
|
923
1128
|
closeStroke: function SVGGraphics_closeStroke() {
|
@@ -932,7 +1137,6 @@ var SVGGraphics = function SVGGraphics() {
|
|
932
1137
|
this.closePath();
|
933
1138
|
this.eoFillStroke();
|
934
1139
|
},
|
935
|
-
|
936
1140
|
paintSolidColorImageMask: function SVGGraphics_paintSolidColorImageMask() {
|
937
1141
|
var current = this.current;
|
938
1142
|
var rect = this.svgFactory.createElement('svg:rect');
|
@@ -941,6 +1145,7 @@ var SVGGraphics = function SVGGraphics() {
|
|
941
1145
|
rect.setAttributeNS(null, 'width', '1px');
|
942
1146
|
rect.setAttributeNS(null, 'height', '1px');
|
943
1147
|
rect.setAttributeNS(null, 'fill', current.fillColor);
|
1148
|
+
|
944
1149
|
this._ensureTransformGroup().appendChild(rect);
|
945
1150
|
},
|
946
1151
|
paintJpegXObject: function SVGGraphics_paintJpegXObject(objId, w, h) {
|
@@ -952,14 +1157,17 @@ var SVGGraphics = function SVGGraphics() {
|
|
952
1157
|
imgEl.setAttributeNS(null, 'x', '0');
|
953
1158
|
imgEl.setAttributeNS(null, 'y', pf(-h));
|
954
1159
|
imgEl.setAttributeNS(null, 'transform', 'scale(' + pf(1 / w) + ' ' + pf(-1 / h) + ')');
|
1160
|
+
|
955
1161
|
this._ensureTransformGroup().appendChild(imgEl);
|
956
1162
|
},
|
957
1163
|
paintImageXObject: function SVGGraphics_paintImageXObject(objId) {
|
958
1164
|
var imgData = this.objs.get(objId);
|
1165
|
+
|
959
1166
|
if (!imgData) {
|
960
1167
|
(0, _util.warn)('Dependent image isn\'t ready yet');
|
961
1168
|
return;
|
962
1169
|
}
|
1170
|
+
|
963
1171
|
this.paintInlineImageXObject(imgData);
|
964
1172
|
},
|
965
1173
|
paintInlineImageXObject: function SVGGraphics_paintInlineImageXObject(imgData, mask) {
|
@@ -980,6 +1188,7 @@ var SVGGraphics = function SVGGraphics() {
|
|
980
1188
|
imgEl.setAttributeNS(null, 'width', pf(width) + 'px');
|
981
1189
|
imgEl.setAttributeNS(null, 'height', pf(height) + 'px');
|
982
1190
|
imgEl.setAttributeNS(null, 'transform', 'scale(' + pf(1 / width) + ' ' + pf(-1 / height) + ')');
|
1191
|
+
|
983
1192
|
if (mask) {
|
984
1193
|
mask.appendChild(imgEl);
|
985
1194
|
} else {
|
@@ -1002,14 +1211,17 @@ var SVGGraphics = function SVGGraphics() {
|
|
1002
1211
|
rect.setAttributeNS(null, 'fill', fillColor);
|
1003
1212
|
rect.setAttributeNS(null, 'mask', 'url(#' + current.maskId + ')');
|
1004
1213
|
this.defs.appendChild(mask);
|
1214
|
+
|
1005
1215
|
this._ensureTransformGroup().appendChild(rect);
|
1216
|
+
|
1006
1217
|
this.paintInlineImageXObject(imgData, mask);
|
1007
1218
|
},
|
1008
1219
|
paintFormXObjectBegin: function SVGGraphics_paintFormXObjectBegin(matrix, bbox) {
|
1009
1220
|
if (Array.isArray(matrix) && matrix.length === 6) {
|
1010
1221
|
this.transform(matrix[0], matrix[1], matrix[2], matrix[3], matrix[4], matrix[5]);
|
1011
1222
|
}
|
1012
|
-
|
1223
|
+
|
1224
|
+
if (bbox) {
|
1013
1225
|
var width = bbox[2] - bbox[0];
|
1014
1226
|
var height = bbox[3] - bbox[1];
|
1015
1227
|
var cliprect = this.svgFactory.createElement('svg:rect');
|
@@ -1034,7 +1246,6 @@ var SVGGraphics = function SVGGraphics() {
|
|
1034
1246
|
this.svg = rootGroup;
|
1035
1247
|
return svg;
|
1036
1248
|
},
|
1037
|
-
|
1038
1249
|
_ensureClipGroup: function SVGGraphics_ensureClipGroup() {
|
1039
1250
|
if (!this.current.clipGroup) {
|
1040
1251
|
var clipGroup = this.svgFactory.createElement('svg:g');
|
@@ -1042,22 +1253,24 @@ var SVGGraphics = function SVGGraphics() {
|
|
1042
1253
|
this.svg.appendChild(clipGroup);
|
1043
1254
|
this.current.clipGroup = clipGroup;
|
1044
1255
|
}
|
1256
|
+
|
1045
1257
|
return this.current.clipGroup;
|
1046
1258
|
},
|
1047
1259
|
_ensureTransformGroup: function SVGGraphics_ensureTransformGroup() {
|
1048
1260
|
if (!this.tgrp) {
|
1049
1261
|
this.tgrp = this.svgFactory.createElement('svg:g');
|
1050
1262
|
this.tgrp.setAttributeNS(null, 'transform', pm(this.transformMatrix));
|
1263
|
+
|
1051
1264
|
if (this.current.activeClipUrl) {
|
1052
1265
|
this._ensureClipGroup().appendChild(this.tgrp);
|
1053
1266
|
} else {
|
1054
1267
|
this.svg.appendChild(this.tgrp);
|
1055
1268
|
}
|
1056
1269
|
}
|
1270
|
+
|
1057
1271
|
return this.tgrp;
|
1058
1272
|
}
|
1059
1273
|
};
|
1060
1274
|
return SVGGraphics;
|
1061
1275
|
}();
|
1062
|
-
}
|
1063
|
-
exports.SVGGraphics = SVGGraphics;
|
1276
|
+
}
|