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
package/lib/display/svg.js
CHANGED
@@ -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;
|
@@ -245,6 +280,7 @@ var SVGGraphics = function SVGGraphics() {
|
|
245
280
|
this.clipGroup = null;
|
246
281
|
this.maskId = '';
|
247
282
|
}
|
283
|
+
|
248
284
|
SVGExtraState.prototype = {
|
249
285
|
clone: function SVGExtraState_clone() {
|
250
286
|
return Object.create(this);
|
@@ -256,11 +292,13 @@ var SVGGraphics = function SVGGraphics() {
|
|
256
292
|
};
|
257
293
|
return SVGExtraState;
|
258
294
|
}();
|
295
|
+
|
259
296
|
exports.SVGGraphics = SVGGraphics = function SVGGraphicsClosure() {
|
260
297
|
function opListToTree(opList) {
|
261
298
|
var opTree = [];
|
262
299
|
var tmp = [];
|
263
300
|
var opListLen = opList.length;
|
301
|
+
|
264
302
|
for (var x = 0; x < opListLen; x++) {
|
265
303
|
if (opList[x].fn === 'save') {
|
266
304
|
opTree.push({
|
@@ -272,36 +310,46 @@ var SVGGraphics = function SVGGraphics() {
|
|
272
310
|
opTree = opTree[opTree.length - 1].items;
|
273
311
|
continue;
|
274
312
|
}
|
313
|
+
|
275
314
|
if (opList[x].fn === 'restore') {
|
276
315
|
opTree = tmp.pop();
|
277
316
|
} else {
|
278
317
|
opTree.push(opList[x]);
|
279
318
|
}
|
280
319
|
}
|
320
|
+
|
281
321
|
return opTree;
|
282
322
|
}
|
323
|
+
|
283
324
|
function pf(value) {
|
284
325
|
if (Number.isInteger(value)) {
|
285
326
|
return value.toString();
|
286
327
|
}
|
328
|
+
|
287
329
|
var s = value.toFixed(10);
|
288
330
|
var i = s.length - 1;
|
331
|
+
|
289
332
|
if (s[i] !== '0') {
|
290
333
|
return s;
|
291
334
|
}
|
335
|
+
|
292
336
|
do {
|
293
337
|
i--;
|
294
338
|
} while (s[i] === '0');
|
339
|
+
|
295
340
|
return s.substring(0, s[i] === '.' ? i : i + 1);
|
296
341
|
}
|
342
|
+
|
297
343
|
function pm(m) {
|
298
344
|
if (m[4] === 0 && m[5] === 0) {
|
299
345
|
if (m[1] === 0 && m[2] === 0) {
|
300
346
|
if (m[0] === 1 && m[3] === 1) {
|
301
347
|
return '';
|
302
348
|
}
|
349
|
+
|
303
350
|
return 'scale(' + pf(m[0]) + ' ' + pf(m[3]) + ')';
|
304
351
|
}
|
352
|
+
|
305
353
|
if (m[0] === m[3] && m[1] === -m[2]) {
|
306
354
|
var a = Math.acos(m[0]) * 180 / Math.PI;
|
307
355
|
return 'rotate(' + pf(a) + ')';
|
@@ -311,8 +359,10 @@ var SVGGraphics = function SVGGraphics() {
|
|
311
359
|
return 'translate(' + pf(m[4]) + ' ' + pf(m[5]) + ')';
|
312
360
|
}
|
313
361
|
}
|
362
|
+
|
314
363
|
return 'matrix(' + pf(m[0]) + ' ' + pf(m[1]) + ' ' + pf(m[2]) + ' ' + pf(m[3]) + ' ' + pf(m[4]) + ' ' + pf(m[5]) + ')';
|
315
364
|
}
|
365
|
+
|
316
366
|
function SVGGraphics(commonObjs, objs, forceDataSchema) {
|
317
367
|
this.svgFactory = new _dom_utils.DOMSVGFactory();
|
318
368
|
this.current = new SVGExtraState();
|
@@ -328,6 +378,7 @@ var SVGGraphics = function SVGGraphics() {
|
|
328
378
|
this.cssStyle = null;
|
329
379
|
this.forceDataSchema = !!forceDataSchema;
|
330
380
|
}
|
381
|
+
|
331
382
|
var XML_NS = 'http://www.w3.org/XML/1998/namespace';
|
332
383
|
var XLINK_NS = 'http://www.w3.org/1999/xlink';
|
333
384
|
var LINE_CAP_STYLES = ['butt', 'round', 'square'];
|
@@ -358,13 +409,16 @@ var SVGGraphics = function SVGGraphics() {
|
|
358
409
|
var fnArray = operatorList.fnArray;
|
359
410
|
var fnArrayLen = fnArray.length;
|
360
411
|
var argsArray = operatorList.argsArray;
|
412
|
+
|
361
413
|
for (var i = 0; i < fnArrayLen; i++) {
|
362
414
|
if (_util.OPS.dependency === fnArray[i]) {
|
363
415
|
var deps = argsArray[i];
|
416
|
+
|
364
417
|
for (var n = 0, nn = deps.length; n < nn; n++) {
|
365
418
|
var obj = deps[n];
|
366
419
|
var common = obj.substring(0, 2) === 'g_';
|
367
420
|
var promise;
|
421
|
+
|
368
422
|
if (common) {
|
369
423
|
promise = new Promise(function (resolve) {
|
370
424
|
_this.commonObjs.get(obj, resolve);
|
@@ -374,10 +428,12 @@ var SVGGraphics = function SVGGraphics() {
|
|
374
428
|
_this.objs.get(obj, resolve);
|
375
429
|
});
|
376
430
|
}
|
431
|
+
|
377
432
|
this.current.dependencies.push(promise);
|
378
433
|
}
|
379
434
|
}
|
380
435
|
}
|
436
|
+
|
381
437
|
return Promise.all(this.current.dependencies);
|
382
438
|
},
|
383
439
|
transform: function SVGGraphics_transform(a, b, c, d, e, f) {
|
@@ -389,11 +445,16 @@ var SVGGraphics = function SVGGraphics() {
|
|
389
445
|
var _this2 = this;
|
390
446
|
|
391
447
|
this.viewport = viewport;
|
448
|
+
|
392
449
|
var svgElement = this._initialize(viewport);
|
450
|
+
|
393
451
|
return this.loadDependencies(operatorList).then(function () {
|
394
452
|
_this2.transformMatrix = _util.IDENTITY_MATRIX;
|
453
|
+
|
395
454
|
var opTree = _this2.convertOpList(operatorList);
|
455
|
+
|
396
456
|
_this2.executeOpTree(opTree);
|
457
|
+
|
397
458
|
return svgElement;
|
398
459
|
});
|
399
460
|
},
|
@@ -403,9 +464,11 @@ var SVGGraphics = function SVGGraphics() {
|
|
403
464
|
var fnArrayLen = fnArray.length;
|
404
465
|
var REVOPS = [];
|
405
466
|
var opList = [];
|
467
|
+
|
406
468
|
for (var op in _util.OPS) {
|
407
469
|
REVOPS[_util.OPS[op]] = op;
|
408
470
|
}
|
471
|
+
|
409
472
|
for (var x = 0; x < fnArrayLen; x++) {
|
410
473
|
var fnId = fnArray[x];
|
411
474
|
opList.push({
|
@@ -414,152 +477,201 @@ var SVGGraphics = function SVGGraphics() {
|
|
414
477
|
'args': argsArray[x]
|
415
478
|
});
|
416
479
|
}
|
480
|
+
|
417
481
|
return opListToTree(opList);
|
418
482
|
},
|
419
483
|
executeOpTree: function SVGGraphics_executeOpTree(opTree) {
|
420
484
|
var opTreeLen = opTree.length;
|
485
|
+
|
421
486
|
for (var x = 0; x < opTreeLen; x++) {
|
422
487
|
var fn = opTree[x].fn;
|
423
488
|
var fnId = opTree[x].fnId;
|
424
489
|
var args = opTree[x].args;
|
490
|
+
|
425
491
|
switch (fnId | 0) {
|
426
492
|
case _util.OPS.beginText:
|
427
493
|
this.beginText();
|
428
494
|
break;
|
495
|
+
|
429
496
|
case _util.OPS.dependency:
|
430
497
|
break;
|
498
|
+
|
431
499
|
case _util.OPS.setLeading:
|
432
500
|
this.setLeading(args);
|
433
501
|
break;
|
502
|
+
|
434
503
|
case _util.OPS.setLeadingMoveText:
|
435
504
|
this.setLeadingMoveText(args[0], args[1]);
|
436
505
|
break;
|
506
|
+
|
437
507
|
case _util.OPS.setFont:
|
438
508
|
this.setFont(args);
|
439
509
|
break;
|
510
|
+
|
440
511
|
case _util.OPS.showText:
|
441
512
|
this.showText(args[0]);
|
442
513
|
break;
|
514
|
+
|
443
515
|
case _util.OPS.showSpacedText:
|
444
516
|
this.showText(args[0]);
|
445
517
|
break;
|
518
|
+
|
446
519
|
case _util.OPS.endText:
|
447
520
|
this.endText();
|
448
521
|
break;
|
522
|
+
|
449
523
|
case _util.OPS.moveText:
|
450
524
|
this.moveText(args[0], args[1]);
|
451
525
|
break;
|
526
|
+
|
452
527
|
case _util.OPS.setCharSpacing:
|
453
528
|
this.setCharSpacing(args[0]);
|
454
529
|
break;
|
530
|
+
|
455
531
|
case _util.OPS.setWordSpacing:
|
456
532
|
this.setWordSpacing(args[0]);
|
457
533
|
break;
|
534
|
+
|
458
535
|
case _util.OPS.setHScale:
|
459
536
|
this.setHScale(args[0]);
|
460
537
|
break;
|
538
|
+
|
461
539
|
case _util.OPS.setTextMatrix:
|
462
540
|
this.setTextMatrix(args[0], args[1], args[2], args[3], args[4], args[5]);
|
463
541
|
break;
|
542
|
+
|
464
543
|
case _util.OPS.setTextRise:
|
465
544
|
this.setTextRise(args[0]);
|
466
545
|
break;
|
546
|
+
|
467
547
|
case _util.OPS.setTextRenderingMode:
|
468
548
|
this.setTextRenderingMode(args[0]);
|
469
549
|
break;
|
550
|
+
|
470
551
|
case _util.OPS.setLineWidth:
|
471
552
|
this.setLineWidth(args[0]);
|
472
553
|
break;
|
554
|
+
|
473
555
|
case _util.OPS.setLineJoin:
|
474
556
|
this.setLineJoin(args[0]);
|
475
557
|
break;
|
558
|
+
|
476
559
|
case _util.OPS.setLineCap:
|
477
560
|
this.setLineCap(args[0]);
|
478
561
|
break;
|
562
|
+
|
479
563
|
case _util.OPS.setMiterLimit:
|
480
564
|
this.setMiterLimit(args[0]);
|
481
565
|
break;
|
566
|
+
|
482
567
|
case _util.OPS.setFillRGBColor:
|
483
568
|
this.setFillRGBColor(args[0], args[1], args[2]);
|
484
569
|
break;
|
570
|
+
|
485
571
|
case _util.OPS.setStrokeRGBColor:
|
486
572
|
this.setStrokeRGBColor(args[0], args[1], args[2]);
|
487
573
|
break;
|
574
|
+
|
488
575
|
case _util.OPS.setDash:
|
489
576
|
this.setDash(args[0], args[1]);
|
490
577
|
break;
|
578
|
+
|
491
579
|
case _util.OPS.setGState:
|
492
580
|
this.setGState(args[0]);
|
493
581
|
break;
|
582
|
+
|
494
583
|
case _util.OPS.fill:
|
495
584
|
this.fill();
|
496
585
|
break;
|
586
|
+
|
497
587
|
case _util.OPS.eoFill:
|
498
588
|
this.eoFill();
|
499
589
|
break;
|
590
|
+
|
500
591
|
case _util.OPS.stroke:
|
501
592
|
this.stroke();
|
502
593
|
break;
|
594
|
+
|
503
595
|
case _util.OPS.fillStroke:
|
504
596
|
this.fillStroke();
|
505
597
|
break;
|
598
|
+
|
506
599
|
case _util.OPS.eoFillStroke:
|
507
600
|
this.eoFillStroke();
|
508
601
|
break;
|
602
|
+
|
509
603
|
case _util.OPS.clip:
|
510
604
|
this.clip('nonzero');
|
511
605
|
break;
|
606
|
+
|
512
607
|
case _util.OPS.eoClip:
|
513
608
|
this.clip('evenodd');
|
514
609
|
break;
|
610
|
+
|
515
611
|
case _util.OPS.paintSolidColorImageMask:
|
516
612
|
this.paintSolidColorImageMask();
|
517
613
|
break;
|
614
|
+
|
518
615
|
case _util.OPS.paintJpegXObject:
|
519
616
|
this.paintJpegXObject(args[0], args[1], args[2]);
|
520
617
|
break;
|
618
|
+
|
521
619
|
case _util.OPS.paintImageXObject:
|
522
620
|
this.paintImageXObject(args[0]);
|
523
621
|
break;
|
622
|
+
|
524
623
|
case _util.OPS.paintInlineImageXObject:
|
525
624
|
this.paintInlineImageXObject(args[0]);
|
526
625
|
break;
|
626
|
+
|
527
627
|
case _util.OPS.paintImageMaskXObject:
|
528
628
|
this.paintImageMaskXObject(args[0]);
|
529
629
|
break;
|
630
|
+
|
530
631
|
case _util.OPS.paintFormXObjectBegin:
|
531
632
|
this.paintFormXObjectBegin(args[0], args[1]);
|
532
633
|
break;
|
634
|
+
|
533
635
|
case _util.OPS.paintFormXObjectEnd:
|
534
636
|
this.paintFormXObjectEnd();
|
535
637
|
break;
|
638
|
+
|
536
639
|
case _util.OPS.closePath:
|
537
640
|
this.closePath();
|
538
641
|
break;
|
642
|
+
|
539
643
|
case _util.OPS.closeStroke:
|
540
644
|
this.closeStroke();
|
541
645
|
break;
|
646
|
+
|
542
647
|
case _util.OPS.closeFillStroke:
|
543
648
|
this.closeFillStroke();
|
544
649
|
break;
|
650
|
+
|
545
651
|
case _util.OPS.closeEOFillStroke:
|
546
652
|
this.closeEOFillStroke();
|
547
653
|
break;
|
654
|
+
|
548
655
|
case _util.OPS.nextLine:
|
549
656
|
this.nextLine();
|
550
657
|
break;
|
658
|
+
|
551
659
|
case _util.OPS.transform:
|
552
660
|
this.transform(args[0], args[1], args[2], args[3], args[4], args[5]);
|
553
661
|
break;
|
662
|
+
|
554
663
|
case _util.OPS.constructPath:
|
555
664
|
this.constructPath(args[0], args[1]);
|
556
665
|
break;
|
666
|
+
|
557
667
|
case _util.OPS.endPath:
|
558
668
|
this.endPath();
|
559
669
|
break;
|
670
|
+
|
560
671
|
case 92:
|
561
672
|
this.group(opTree[x].items);
|
562
673
|
break;
|
674
|
+
|
563
675
|
default:
|
564
676
|
(0, _util.warn)('Unimplemented operator ' + fn);
|
565
677
|
break;
|
@@ -612,9 +724,11 @@ var SVGGraphics = function SVGGraphics() {
|
|
612
724
|
var current = this.current;
|
613
725
|
var font = current.font;
|
614
726
|
var fontSize = current.fontSize;
|
727
|
+
|
615
728
|
if (fontSize === 0) {
|
616
729
|
return;
|
617
730
|
}
|
731
|
+
|
618
732
|
var charSpacing = current.charSpacing;
|
619
733
|
var wordSpacing = current.wordSpacing;
|
620
734
|
var fontDirection = current.fontDirection;
|
@@ -624,8 +738,10 @@ var SVGGraphics = function SVGGraphics() {
|
|
624
738
|
var widthAdvanceScale = fontSize * current.fontMatrix[0];
|
625
739
|
var x = 0,
|
626
740
|
i;
|
741
|
+
|
627
742
|
for (i = 0; i < glyphsLength; ++i) {
|
628
743
|
var glyph = glyphs[i];
|
744
|
+
|
629
745
|
if (glyph === null) {
|
630
746
|
x += fontDirection * wordSpacing;
|
631
747
|
continue;
|
@@ -633,38 +749,48 @@ var SVGGraphics = function SVGGraphics() {
|
|
633
749
|
x += -glyph * fontSize * 0.001;
|
634
750
|
continue;
|
635
751
|
}
|
752
|
+
|
636
753
|
var width = glyph.width;
|
637
754
|
var character = glyph.fontChar;
|
638
755
|
var spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;
|
639
756
|
var charWidth = width * widthAdvanceScale + spacing * fontDirection;
|
757
|
+
|
640
758
|
if (!glyph.isInFont && !font.missingFile) {
|
641
759
|
x += charWidth;
|
642
760
|
continue;
|
643
761
|
}
|
762
|
+
|
644
763
|
current.xcoords.push(current.x + x * textHScale);
|
645
764
|
current.tspan.textContent += character;
|
646
765
|
x += charWidth;
|
647
766
|
}
|
767
|
+
|
648
768
|
if (vertical) {
|
649
769
|
current.y -= x * textHScale;
|
650
770
|
} else {
|
651
771
|
current.x += x * textHScale;
|
652
772
|
}
|
773
|
+
|
653
774
|
current.tspan.setAttributeNS(null, 'x', current.xcoords.map(pf).join(' '));
|
654
775
|
current.tspan.setAttributeNS(null, 'y', pf(-current.y));
|
655
776
|
current.tspan.setAttributeNS(null, 'font-family', current.fontFamily);
|
656
777
|
current.tspan.setAttributeNS(null, 'font-size', pf(current.fontSize) + 'px');
|
778
|
+
|
657
779
|
if (current.fontStyle !== SVG_DEFAULTS.fontStyle) {
|
658
780
|
current.tspan.setAttributeNS(null, 'font-style', current.fontStyle);
|
659
781
|
}
|
782
|
+
|
660
783
|
if (current.fontWeight !== SVG_DEFAULTS.fontWeight) {
|
661
784
|
current.tspan.setAttributeNS(null, 'font-weight', current.fontWeight);
|
662
785
|
}
|
786
|
+
|
663
787
|
var fillStrokeMode = current.textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK;
|
788
|
+
|
664
789
|
if (fillStrokeMode === _util.TextRenderingMode.FILL || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {
|
665
790
|
if (current.fillColor !== SVG_DEFAULTS.fillColor) {
|
666
791
|
current.tspan.setAttributeNS(null, 'fill', current.fillColor);
|
667
792
|
}
|
793
|
+
|
668
794
|
if (current.fillAlpha < 1) {
|
669
795
|
current.tspan.setAttributeNS(null, 'fill-opacity', current.fillAlpha);
|
670
796
|
}
|
@@ -673,18 +799,23 @@ var SVGGraphics = function SVGGraphics() {
|
|
673
799
|
} else {
|
674
800
|
current.tspan.setAttributeNS(null, 'fill', 'none');
|
675
801
|
}
|
802
|
+
|
676
803
|
if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {
|
677
804
|
this._setStrokeAttributes(current.tspan);
|
678
805
|
}
|
806
|
+
|
679
807
|
var textMatrix = current.textMatrix;
|
808
|
+
|
680
809
|
if (current.textRise !== 0) {
|
681
810
|
textMatrix = textMatrix.slice();
|
682
811
|
textMatrix[5] += current.textRise;
|
683
812
|
}
|
813
|
+
|
684
814
|
current.txtElement.setAttributeNS(null, 'transform', pm(textMatrix) + ' scale(1, -1)');
|
685
815
|
current.txtElement.setAttributeNS(XML_NS, 'xml:space', 'preserve');
|
686
816
|
current.txtElement.appendChild(current.tspan);
|
687
817
|
current.txtgrp.appendChild(current.txtElement);
|
818
|
+
|
688
819
|
this._ensureTransformGroup().appendChild(current.txtElement);
|
689
820
|
},
|
690
821
|
setLeadingMoveText: function SVGGraphics_setLeadingMoveText(x, y) {
|
@@ -697,6 +828,7 @@ var SVGGraphics = function SVGGraphics() {
|
|
697
828
|
this.cssStyle.setAttributeNS(null, 'type', 'text/css');
|
698
829
|
this.defs.appendChild(this.cssStyle);
|
699
830
|
}
|
831
|
+
|
700
832
|
var url = (0, _util.createObjectURL)(fontObj.data, fontObj.mimetype, this.forceDataSchema);
|
701
833
|
this.cssStyle.textContent += '@font-face { font-family: "' + fontObj.loadedName + '";' + ' src: url(' + url + '); }\n';
|
702
834
|
},
|
@@ -705,19 +837,23 @@ var SVGGraphics = function SVGGraphics() {
|
|
705
837
|
var fontObj = this.commonObjs.get(details[0]);
|
706
838
|
var size = details[1];
|
707
839
|
this.current.font = fontObj;
|
840
|
+
|
708
841
|
if (this.embedFonts && fontObj.data && !this.embeddedFonts[fontObj.loadedName]) {
|
709
842
|
this.addFontStyle(fontObj);
|
710
843
|
this.embeddedFonts[fontObj.loadedName] = fontObj;
|
711
844
|
}
|
845
|
+
|
712
846
|
current.fontMatrix = fontObj.fontMatrix ? fontObj.fontMatrix : _util.FONT_IDENTITY_MATRIX;
|
713
847
|
var bold = fontObj.black ? fontObj.bold ? 'bolder' : 'bold' : fontObj.bold ? 'bold' : 'normal';
|
714
848
|
var italic = fontObj.italic ? 'italic' : 'normal';
|
849
|
+
|
715
850
|
if (size < 0) {
|
716
851
|
size = -size;
|
717
852
|
current.fontDirection = -1;
|
718
853
|
} else {
|
719
854
|
current.fontDirection = 1;
|
720
855
|
}
|
856
|
+
|
721
857
|
current.fontSize = size;
|
722
858
|
current.fontFamily = fontObj.loadedName;
|
723
859
|
current.fontWeight = bold;
|
@@ -728,15 +864,17 @@ var SVGGraphics = function SVGGraphics() {
|
|
728
864
|
},
|
729
865
|
endText: function endText() {
|
730
866
|
var current = this.current;
|
867
|
+
|
731
868
|
if (current.textRenderingMode & _util.TextRenderingMode.ADD_TO_PATH_FLAG && current.txtElement && current.txtElement.hasChildNodes()) {
|
732
869
|
current.element = current.txtElement;
|
733
870
|
this.clip('nonzero');
|
734
871
|
this.endPath();
|
735
872
|
}
|
736
873
|
},
|
737
|
-
|
738
874
|
setLineWidth: function SVGGraphics_setLineWidth(width) {
|
739
|
-
|
875
|
+
if (width > 0) {
|
876
|
+
this.current.lineWidth = width;
|
877
|
+
}
|
740
878
|
},
|
741
879
|
setLineCap: function SVGGraphics_setLineCap(style) {
|
742
880
|
this.current.lineCap = LINE_CAP_STYLES[style];
|
@@ -752,6 +890,7 @@ var SVGGraphics = function SVGGraphics() {
|
|
752
890
|
},
|
753
891
|
setStrokeRGBColor: function SVGGraphics_setStrokeRGBColor(r, g, b) {
|
754
892
|
var color = _util.Util.makeCssRgb(r, g, b);
|
893
|
+
|
755
894
|
this.current.strokeColor = color;
|
756
895
|
},
|
757
896
|
setFillAlpha: function SVGGraphics_setFillAlpha(fillAlpha) {
|
@@ -759,6 +898,7 @@ var SVGGraphics = function SVGGraphics() {
|
|
759
898
|
},
|
760
899
|
setFillRGBColor: function SVGGraphics_setFillRGBColor(r, g, b) {
|
761
900
|
var color = _util.Util.makeCssRgb(r, g, b);
|
901
|
+
|
762
902
|
this.current.fillColor = color;
|
763
903
|
this.current.tspan = this.svgFactory.createElement('svg:tspan');
|
764
904
|
this.current.xcoords = [];
|
@@ -774,6 +914,7 @@ var SVGGraphics = function SVGGraphics() {
|
|
774
914
|
current.path = this.svgFactory.createElement('svg:path');
|
775
915
|
var d = [];
|
776
916
|
var opLength = ops.length;
|
917
|
+
|
777
918
|
for (var i = 0, j = 0; i < opLength; i++) {
|
778
919
|
switch (ops[i] | 0) {
|
779
920
|
case _util.OPS.rectangle:
|
@@ -785,42 +926,51 @@ var SVGGraphics = function SVGGraphics() {
|
|
785
926
|
var yh = y + height;
|
786
927
|
d.push('M', pf(x), pf(y), 'L', pf(xw), pf(y), 'L', pf(xw), pf(yh), 'L', pf(x), pf(yh), 'Z');
|
787
928
|
break;
|
929
|
+
|
788
930
|
case _util.OPS.moveTo:
|
789
931
|
x = args[j++];
|
790
932
|
y = args[j++];
|
791
933
|
d.push('M', pf(x), pf(y));
|
792
934
|
break;
|
935
|
+
|
793
936
|
case _util.OPS.lineTo:
|
794
937
|
x = args[j++];
|
795
938
|
y = args[j++];
|
796
939
|
d.push('L', pf(x), pf(y));
|
797
940
|
break;
|
941
|
+
|
798
942
|
case _util.OPS.curveTo:
|
799
943
|
x = args[j + 4];
|
800
944
|
y = args[j + 5];
|
801
945
|
d.push('C', pf(args[j]), pf(args[j + 1]), pf(args[j + 2]), pf(args[j + 3]), pf(x), pf(y));
|
802
946
|
j += 6;
|
803
947
|
break;
|
948
|
+
|
804
949
|
case _util.OPS.curveTo2:
|
805
950
|
x = args[j + 2];
|
806
951
|
y = args[j + 3];
|
807
952
|
d.push('C', pf(x), pf(y), pf(args[j]), pf(args[j + 1]), pf(args[j + 2]), pf(args[j + 3]));
|
808
953
|
j += 4;
|
809
954
|
break;
|
955
|
+
|
810
956
|
case _util.OPS.curveTo3:
|
811
957
|
x = args[j + 2];
|
812
958
|
y = args[j + 3];
|
813
959
|
d.push('C', pf(args[j]), pf(args[j + 1]), pf(x), pf(y), pf(x), pf(y));
|
814
960
|
j += 4;
|
815
961
|
break;
|
962
|
+
|
816
963
|
case _util.OPS.closePath:
|
817
964
|
d.push('Z');
|
818
965
|
break;
|
819
966
|
}
|
820
967
|
}
|
968
|
+
|
821
969
|
current.path.setAttributeNS(null, 'd', d.join(' '));
|
822
970
|
current.path.setAttributeNS(null, 'fill', 'none');
|
971
|
+
|
823
972
|
this._ensureTransformGroup().appendChild(current.path);
|
973
|
+
|
824
974
|
current.element = current.path;
|
825
975
|
current.setCurrentPoint(x, y);
|
826
976
|
},
|
@@ -828,6 +978,7 @@ var SVGGraphics = function SVGGraphics() {
|
|
828
978
|
if (!this.pendingClip) {
|
829
979
|
return;
|
830
980
|
}
|
981
|
+
|
831
982
|
var current = this.current;
|
832
983
|
var clipId = 'clippath' + clipCount;
|
833
984
|
clipCount++;
|
@@ -835,14 +986,17 @@ var SVGGraphics = function SVGGraphics() {
|
|
835
986
|
clipPath.setAttributeNS(null, 'id', clipId);
|
836
987
|
clipPath.setAttributeNS(null, 'transform', pm(this.transformMatrix));
|
837
988
|
var clipElement = current.element.cloneNode(true);
|
989
|
+
|
838
990
|
if (this.pendingClip === 'evenodd') {
|
839
991
|
clipElement.setAttributeNS(null, 'clip-rule', 'evenodd');
|
840
992
|
} else {
|
841
993
|
clipElement.setAttributeNS(null, 'clip-rule', 'nonzero');
|
842
994
|
}
|
995
|
+
|
843
996
|
this.pendingClip = null;
|
844
997
|
clipPath.appendChild(clipElement);
|
845
998
|
this.defs.appendChild(clipPath);
|
999
|
+
|
846
1000
|
if (current.activeClipUrl) {
|
847
1001
|
current.clipGroup = null;
|
848
1002
|
this.extraStack.forEach(function (prev) {
|
@@ -850,6 +1004,7 @@ var SVGGraphics = function SVGGraphics() {
|
|
850
1004
|
});
|
851
1005
|
clipPath.setAttributeNS(null, 'clip-path', current.activeClipUrl);
|
852
1006
|
}
|
1007
|
+
|
853
1008
|
current.activeClipUrl = 'url(#' + clipId + ')';
|
854
1009
|
this.tgrp = null;
|
855
1010
|
},
|
@@ -858,6 +1013,7 @@ var SVGGraphics = function SVGGraphics() {
|
|
858
1013
|
},
|
859
1014
|
closePath: function SVGGraphics_closePath() {
|
860
1015
|
var current = this.current;
|
1016
|
+
|
861
1017
|
if (current.path) {
|
862
1018
|
var d = current.path.getAttributeNS(null, 'd');
|
863
1019
|
d += 'Z';
|
@@ -873,7 +1029,6 @@ var SVGGraphics = function SVGGraphics() {
|
|
873
1029
|
setTextRenderingMode: function setTextRenderingMode(textRenderingMode) {
|
874
1030
|
this.current.textRenderingMode = textRenderingMode;
|
875
1031
|
},
|
876
|
-
|
877
1032
|
setHScale: function SVGGraphics_setHScale(scale) {
|
878
1033
|
this.current.textHScale = scale / 100;
|
879
1034
|
},
|
@@ -882,31 +1037,40 @@ var SVGGraphics = function SVGGraphics() {
|
|
882
1037
|
var state = states[i];
|
883
1038
|
var key = state[0];
|
884
1039
|
var value = state[1];
|
1040
|
+
|
885
1041
|
switch (key) {
|
886
1042
|
case 'LW':
|
887
1043
|
this.setLineWidth(value);
|
888
1044
|
break;
|
1045
|
+
|
889
1046
|
case 'LC':
|
890
1047
|
this.setLineCap(value);
|
891
1048
|
break;
|
1049
|
+
|
892
1050
|
case 'LJ':
|
893
1051
|
this.setLineJoin(value);
|
894
1052
|
break;
|
1053
|
+
|
895
1054
|
case 'ML':
|
896
1055
|
this.setMiterLimit(value);
|
897
1056
|
break;
|
1057
|
+
|
898
1058
|
case 'D':
|
899
1059
|
this.setDash(value[0], value[1]);
|
900
1060
|
break;
|
1061
|
+
|
901
1062
|
case 'Font':
|
902
1063
|
this.setFont(value);
|
903
1064
|
break;
|
1065
|
+
|
904
1066
|
case 'CA':
|
905
1067
|
this.setStrokeAlpha(value);
|
906
1068
|
break;
|
1069
|
+
|
907
1070
|
case 'ca':
|
908
1071
|
this.setFillAlpha(value);
|
909
1072
|
break;
|
1073
|
+
|
910
1074
|
default:
|
911
1075
|
(0, _util.warn)('Unimplemented graphic state ' + key);
|
912
1076
|
break;
|
@@ -915,6 +1079,7 @@ var SVGGraphics = function SVGGraphics() {
|
|
915
1079
|
},
|
916
1080
|
fill: function SVGGraphics_fill() {
|
917
1081
|
var current = this.current;
|
1082
|
+
|
918
1083
|
if (current.element) {
|
919
1084
|
current.element.setAttributeNS(null, 'fill', current.fillColor);
|
920
1085
|
current.element.setAttributeNS(null, 'fill-opacity', current.fillAlpha);
|
@@ -923,8 +1088,10 @@ var SVGGraphics = function SVGGraphics() {
|
|
923
1088
|
},
|
924
1089
|
stroke: function SVGGraphics_stroke() {
|
925
1090
|
var current = this.current;
|
1091
|
+
|
926
1092
|
if (current.element) {
|
927
1093
|
this._setStrokeAttributes(current.element);
|
1094
|
+
|
928
1095
|
current.element.setAttributeNS(null, 'fill', 'none');
|
929
1096
|
this.endPath();
|
930
1097
|
}
|
@@ -940,11 +1107,11 @@ var SVGGraphics = function SVGGraphics() {
|
|
940
1107
|
element.setAttributeNS(null, 'stroke-dasharray', current.dashArray.map(pf).join(' '));
|
941
1108
|
element.setAttributeNS(null, 'stroke-dashoffset', pf(current.dashPhase) + 'px');
|
942
1109
|
},
|
943
|
-
|
944
1110
|
eoFill: function SVGGraphics_eoFill() {
|
945
1111
|
if (this.current.element) {
|
946
1112
|
this.current.element.setAttributeNS(null, 'fill-rule', 'evenodd');
|
947
1113
|
}
|
1114
|
+
|
948
1115
|
this.fill();
|
949
1116
|
},
|
950
1117
|
fillStroke: function SVGGraphics_fillStroke() {
|
@@ -955,6 +1122,7 @@ var SVGGraphics = function SVGGraphics() {
|
|
955
1122
|
if (this.current.element) {
|
956
1123
|
this.current.element.setAttributeNS(null, 'fill-rule', 'evenodd');
|
957
1124
|
}
|
1125
|
+
|
958
1126
|
this.fillStroke();
|
959
1127
|
},
|
960
1128
|
closeStroke: function SVGGraphics_closeStroke() {
|
@@ -969,7 +1137,6 @@ var SVGGraphics = function SVGGraphics() {
|
|
969
1137
|
this.closePath();
|
970
1138
|
this.eoFillStroke();
|
971
1139
|
},
|
972
|
-
|
973
1140
|
paintSolidColorImageMask: function SVGGraphics_paintSolidColorImageMask() {
|
974
1141
|
var current = this.current;
|
975
1142
|
var rect = this.svgFactory.createElement('svg:rect');
|
@@ -978,6 +1145,7 @@ var SVGGraphics = function SVGGraphics() {
|
|
978
1145
|
rect.setAttributeNS(null, 'width', '1px');
|
979
1146
|
rect.setAttributeNS(null, 'height', '1px');
|
980
1147
|
rect.setAttributeNS(null, 'fill', current.fillColor);
|
1148
|
+
|
981
1149
|
this._ensureTransformGroup().appendChild(rect);
|
982
1150
|
},
|
983
1151
|
paintJpegXObject: function SVGGraphics_paintJpegXObject(objId, w, h) {
|
@@ -989,14 +1157,17 @@ var SVGGraphics = function SVGGraphics() {
|
|
989
1157
|
imgEl.setAttributeNS(null, 'x', '0');
|
990
1158
|
imgEl.setAttributeNS(null, 'y', pf(-h));
|
991
1159
|
imgEl.setAttributeNS(null, 'transform', 'scale(' + pf(1 / w) + ' ' + pf(-1 / h) + ')');
|
1160
|
+
|
992
1161
|
this._ensureTransformGroup().appendChild(imgEl);
|
993
1162
|
},
|
994
1163
|
paintImageXObject: function SVGGraphics_paintImageXObject(objId) {
|
995
1164
|
var imgData = this.objs.get(objId);
|
1165
|
+
|
996
1166
|
if (!imgData) {
|
997
1167
|
(0, _util.warn)('Dependent image isn\'t ready yet');
|
998
1168
|
return;
|
999
1169
|
}
|
1170
|
+
|
1000
1171
|
this.paintInlineImageXObject(imgData);
|
1001
1172
|
},
|
1002
1173
|
paintInlineImageXObject: function SVGGraphics_paintInlineImageXObject(imgData, mask) {
|
@@ -1017,6 +1188,7 @@ var SVGGraphics = function SVGGraphics() {
|
|
1017
1188
|
imgEl.setAttributeNS(null, 'width', pf(width) + 'px');
|
1018
1189
|
imgEl.setAttributeNS(null, 'height', pf(height) + 'px');
|
1019
1190
|
imgEl.setAttributeNS(null, 'transform', 'scale(' + pf(1 / width) + ' ' + pf(-1 / height) + ')');
|
1191
|
+
|
1020
1192
|
if (mask) {
|
1021
1193
|
mask.appendChild(imgEl);
|
1022
1194
|
} else {
|
@@ -1039,14 +1211,17 @@ var SVGGraphics = function SVGGraphics() {
|
|
1039
1211
|
rect.setAttributeNS(null, 'fill', fillColor);
|
1040
1212
|
rect.setAttributeNS(null, 'mask', 'url(#' + current.maskId + ')');
|
1041
1213
|
this.defs.appendChild(mask);
|
1214
|
+
|
1042
1215
|
this._ensureTransformGroup().appendChild(rect);
|
1216
|
+
|
1043
1217
|
this.paintInlineImageXObject(imgData, mask);
|
1044
1218
|
},
|
1045
1219
|
paintFormXObjectBegin: function SVGGraphics_paintFormXObjectBegin(matrix, bbox) {
|
1046
1220
|
if (Array.isArray(matrix) && matrix.length === 6) {
|
1047
1221
|
this.transform(matrix[0], matrix[1], matrix[2], matrix[3], matrix[4], matrix[5]);
|
1048
1222
|
}
|
1049
|
-
|
1223
|
+
|
1224
|
+
if (bbox) {
|
1050
1225
|
var width = bbox[2] - bbox[0];
|
1051
1226
|
var height = bbox[3] - bbox[1];
|
1052
1227
|
var cliprect = this.svgFactory.createElement('svg:rect');
|
@@ -1071,7 +1246,6 @@ var SVGGraphics = function SVGGraphics() {
|
|
1071
1246
|
this.svg = rootGroup;
|
1072
1247
|
return svg;
|
1073
1248
|
},
|
1074
|
-
|
1075
1249
|
_ensureClipGroup: function SVGGraphics_ensureClipGroup() {
|
1076
1250
|
if (!this.current.clipGroup) {
|
1077
1251
|
var clipGroup = this.svgFactory.createElement('svg:g');
|
@@ -1079,22 +1253,24 @@ var SVGGraphics = function SVGGraphics() {
|
|
1079
1253
|
this.svg.appendChild(clipGroup);
|
1080
1254
|
this.current.clipGroup = clipGroup;
|
1081
1255
|
}
|
1256
|
+
|
1082
1257
|
return this.current.clipGroup;
|
1083
1258
|
},
|
1084
1259
|
_ensureTransformGroup: function SVGGraphics_ensureTransformGroup() {
|
1085
1260
|
if (!this.tgrp) {
|
1086
1261
|
this.tgrp = this.svgFactory.createElement('svg:g');
|
1087
1262
|
this.tgrp.setAttributeNS(null, 'transform', pm(this.transformMatrix));
|
1263
|
+
|
1088
1264
|
if (this.current.activeClipUrl) {
|
1089
1265
|
this._ensureClipGroup().appendChild(this.tgrp);
|
1090
1266
|
} else {
|
1091
1267
|
this.svg.appendChild(this.tgrp);
|
1092
1268
|
}
|
1093
1269
|
}
|
1270
|
+
|
1094
1271
|
return this.tgrp;
|
1095
1272
|
}
|
1096
1273
|
};
|
1097
1274
|
return SVGGraphics;
|
1098
1275
|
}();
|
1099
|
-
}
|
1100
|
-
exports.SVGGraphics = SVGGraphics;
|
1276
|
+
}
|