pdfjs-dist 2.0.550 → 2.3.200
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of pdfjs-dist might be problematic. Click here for more details.
- package/CODE_OF_CONDUCT.md +15 -0
- package/bower.json +1 -1
- package/build/pdf.js +21618 -14369
- package/build/pdf.js.map +1 -1
- package/build/pdf.min.js +1 -1
- package/build/pdf.worker.js +22758 -11399
- package/build/pdf.worker.js.map +1 -1
- package/build/pdf.worker.min.js +1 -1
- package/image_decoders/pdf.image_decoders.js +11500 -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 +767 -258
- package/lib/core/arithmetic_decoder.js +275 -245
- package/lib/core/bidi.js +65 -6
- package/lib/core/ccitt.js +173 -18
- package/lib/core/ccitt_stream.js +15 -6
- package/lib/core/cff_parser.js +433 -61
- package/lib/core/charsets.js +5 -4
- package/lib/core/chunked_stream.js +428 -157
- package/lib/core/cmap.js +326 -87
- package/lib/core/colorspace.js +874 -594
- package/lib/core/core_utils.js +173 -0
- package/lib/core/crypto.js +290 -45
- package/lib/core/document.js +575 -272
- package/lib/core/encodings.js +19 -10
- package/lib/core/evaluator.js +1032 -351
- package/lib/core/font_renderer.js +331 -97
- package/lib/core/fonts.js +813 -196
- package/lib/core/function.js +253 -27
- package/lib/core/glyphlist.js +5 -3
- package/lib/core/image.js +169 -62
- package/lib/core/image_utils.js +111 -0
- package/lib/core/jbig2.js +502 -72
- package/lib/core/jbig2_stream.js +19 -8
- package/lib/core/jpeg_stream.js +38 -13
- package/lib/core/jpg.js +293 -52
- package/lib/core/jpx.js +419 -12
- package/lib/core/jpx_stream.js +18 -6
- package/lib/core/metrics.js +15 -15
- package/lib/core/murmurhash3.js +56 -34
- package/lib/core/obj.js +1368 -500
- package/lib/core/operator_list.js +159 -43
- package/lib/core/parser.js +544 -199
- package/lib/core/pattern.js +170 -21
- package/lib/core/pdf_manager.js +324 -134
- package/lib/core/primitives.js +169 -61
- package/lib/core/ps_parser.js +134 -45
- package/lib/core/standard_fonts.js +17 -17
- package/lib/core/stream.js +327 -34
- package/lib/core/type1_parser.js +148 -8
- package/lib/core/unicode.js +32 -5
- package/lib/core/worker.js +215 -229
- package/lib/core/worker_stream.js +277 -0
- package/lib/display/annotation_layer.js +618 -192
- package/lib/display/api.js +1798 -882
- package/lib/display/api_compatibility.js +5 -10
- package/lib/display/canvas.js +366 -45
- package/lib/display/content_disposition.js +71 -24
- package/lib/display/display_utils.js +777 -0
- package/lib/display/fetch_stream.js +205 -87
- package/lib/display/font_loader.js +468 -236
- package/lib/display/metadata.js +38 -16
- package/lib/display/network.js +635 -428
- package/lib/display/network_utils.js +38 -19
- package/lib/display/node_stream.js +367 -175
- package/lib/display/pattern_helper.js +103 -36
- package/lib/display/svg.js +1232 -519
- package/lib/display/text_layer.js +208 -75
- package/lib/display/transport_stream.js +345 -94
- package/lib/display/webgl.js +64 -18
- package/lib/display/worker_options.js +5 -4
- package/lib/display/xml_parser.js +166 -53
- package/lib/examples/node/domstubs.js +60 -4
- package/lib/pdf.js +35 -14
- package/lib/pdf.worker.js +5 -3
- package/lib/shared/compatibility.js +170 -572
- package/lib/shared/global_scope.js +2 -2
- package/lib/shared/is_node.js +4 -4
- package/lib/shared/message_handler.js +216 -163
- package/lib/shared/streams_polyfill.js +21 -17
- package/lib/shared/util.js +495 -385
- package/lib/test/unit/annotation_spec.js +1464 -401
- package/lib/test/unit/api_spec.js +718 -361
- package/lib/test/unit/bidi_spec.js +7 -7
- package/lib/test/unit/cff_parser_spec.js +54 -11
- package/lib/test/unit/clitests_helper.js +9 -10
- package/lib/test/unit/cmap_spec.js +95 -41
- package/lib/test/unit/colorspace_spec.js +115 -63
- package/lib/test/unit/core_utils_spec.js +191 -0
- package/lib/test/unit/crypto_spec.js +17 -5
- package/lib/test/unit/custom_spec.js +43 -55
- package/lib/test/unit/display_svg_spec.js +34 -18
- package/lib/test/unit/display_utils_spec.js +273 -0
- package/lib/test/unit/document_spec.js +8 -13
- package/lib/test/unit/encodings_spec.js +25 -45
- package/lib/test/unit/evaluator_spec.js +59 -20
- package/lib/test/unit/fetch_stream_spec.js +111 -0
- package/lib/test/unit/function_spec.js +17 -5
- package/lib/test/unit/jasmine-boot.js +33 -20
- package/lib/test/unit/message_handler_spec.js +30 -13
- 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 +22 -55
- package/lib/test/unit/network_utils_spec.js +105 -14
- package/lib/test/unit/node_stream_spec.js +58 -34
- package/lib/test/unit/parser_spec.js +162 -71
- package/lib/test/unit/pdf_find_controller_spec.js +230 -0
- package/lib/test/unit/pdf_find_utils_spec.js +63 -0
- package/lib/test/unit/pdf_history_spec.js +21 -9
- package/lib/test/unit/primitives_spec.js +55 -22
- package/lib/test/unit/stream_spec.js +12 -4
- package/lib/test/unit/test_utils.js +273 -56
- package/lib/test/unit/testreporter.js +21 -3
- package/lib/test/unit/type1_parser_spec.js +9 -7
- package/lib/test/unit/ui_utils_spec.js +236 -36
- package/lib/test/unit/unicode_spec.js +18 -15
- package/lib/test/unit/util_spec.js +87 -128
- package/lib/web/annotation_layer_builder.js +39 -22
- package/lib/web/app.js +1252 -609
- package/lib/web/app_options.js +103 -65
- package/lib/web/base_viewer.js +522 -242
- package/lib/web/chromecom.js +259 -117
- package/lib/web/debugger.js +166 -22
- package/lib/web/download_manager.js +31 -12
- package/lib/web/firefox_print_service.js +27 -14
- package/lib/web/firefoxcom.js +318 -78
- package/lib/web/genericcom.js +89 -30
- package/lib/web/genericl10n.js +142 -30
- package/lib/web/grab_to_pan.js +28 -4
- package/lib/web/interfaces.js +174 -47
- package/lib/web/overlay_manager.js +235 -85
- package/lib/web/password_prompt.js +22 -14
- package/lib/web/pdf_attachment_viewer.js +38 -18
- package/lib/web/pdf_cursor_tools.js +39 -16
- package/lib/web/pdf_document_properties.js +255 -136
- package/lib/web/pdf_find_bar.js +84 -40
- package/lib/web/pdf_find_controller.js +495 -184
- package/lib/web/pdf_find_utils.js +111 -0
- package/lib/web/pdf_history.js +190 -53
- package/lib/web/pdf_link_service.js +144 -79
- package/lib/web/pdf_outline_viewer.js +124 -47
- package/lib/web/pdf_page_view.js +194 -74
- package/lib/web/pdf_presentation_mode.js +99 -34
- package/lib/web/pdf_print_service.js +59 -13
- package/lib/web/pdf_rendering_queue.js +28 -9
- package/lib/web/pdf_sidebar.js +144 -81
- package/lib/web/pdf_sidebar_resizer.js +42 -16
- package/lib/web/pdf_single_page_viewer.js +74 -66
- package/lib/web/pdf_thumbnail_view.js +104 -33
- package/lib/web/pdf_thumbnail_viewer.js +66 -26
- package/lib/web/pdf_viewer.component.js +112 -32
- package/lib/web/pdf_viewer.js +82 -87
- package/lib/web/preferences.js +284 -91
- package/lib/web/secondary_toolbar.js +132 -59
- package/lib/web/text_layer_builder.js +134 -59
- package/lib/web/toolbar.js +80 -43
- package/lib/web/ui_utils.js +400 -134
- package/lib/web/view_history.js +215 -67
- package/lib/web/viewer_compatibility.js +3 -8
- package/package.json +3 -2
- package/web/pdf_viewer.css +23 -15
- package/web/pdf_viewer.js +3429 -1245
- package/web/pdf_viewer.js.map +1 -1
- package/external/streams/streams-lib.js +0 -3962
- package/lib/display/dom_utils.js +0 -429
- package/lib/test/unit/dom_utils_spec.js +0 -89
- package/lib/test/unit/fonts_spec.js +0 -81
- package/lib/web/dom_events.js +0 -137
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 2019 Mozilla Foundation
|
6
6
|
*
|
7
7
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
8
8
|
* you may not use this file except in compliance with the License.
|
@@ -19,38 +19,155 @@
|
|
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
|
31
|
+
var _display_utils = require("./display_utils");
|
32
32
|
|
33
|
-
var _is_node = require(
|
33
|
+
var _is_node = _interopRequireDefault(require("../shared/is_node"));
|
34
34
|
|
35
|
-
|
35
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
36
36
|
|
37
|
-
function
|
37
|
+
function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); }
|
38
|
+
|
39
|
+
function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); }
|
40
|
+
|
41
|
+
function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); }
|
42
|
+
|
43
|
+
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } }
|
44
|
+
|
45
|
+
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }
|
46
|
+
|
47
|
+
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); }
|
48
|
+
|
49
|
+
function _iterableToArrayLimit(arr, i) { if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === "[object Arguments]")) { return; } var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
|
50
|
+
|
51
|
+
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
|
52
|
+
|
53
|
+
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
54
|
+
|
55
|
+
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
|
56
|
+
|
57
|
+
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
|
38
58
|
|
39
59
|
var SVGGraphics = function SVGGraphics() {
|
40
60
|
throw new Error('Not implemented: SVGGraphics');
|
41
61
|
};
|
62
|
+
|
63
|
+
exports.SVGGraphics = SVGGraphics;
|
42
64
|
{
|
65
|
+
var opListToTree = function opListToTree(opList) {
|
66
|
+
var opTree = [];
|
67
|
+
var tmp = [];
|
68
|
+
var _iteratorNormalCompletion = true;
|
69
|
+
var _didIteratorError = false;
|
70
|
+
var _iteratorError = undefined;
|
71
|
+
|
72
|
+
try {
|
73
|
+
for (var _iterator = opList[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
|
74
|
+
var opListElement = _step.value;
|
75
|
+
|
76
|
+
if (opListElement.fn === 'save') {
|
77
|
+
opTree.push({
|
78
|
+
'fnId': 92,
|
79
|
+
'fn': 'group',
|
80
|
+
'items': []
|
81
|
+
});
|
82
|
+
tmp.push(opTree);
|
83
|
+
opTree = opTree[opTree.length - 1].items;
|
84
|
+
continue;
|
85
|
+
}
|
86
|
+
|
87
|
+
if (opListElement.fn === 'restore') {
|
88
|
+
opTree = tmp.pop();
|
89
|
+
} else {
|
90
|
+
opTree.push(opListElement);
|
91
|
+
}
|
92
|
+
}
|
93
|
+
} catch (err) {
|
94
|
+
_didIteratorError = true;
|
95
|
+
_iteratorError = err;
|
96
|
+
} finally {
|
97
|
+
try {
|
98
|
+
if (!_iteratorNormalCompletion && _iterator["return"] != null) {
|
99
|
+
_iterator["return"]();
|
100
|
+
}
|
101
|
+
} finally {
|
102
|
+
if (_didIteratorError) {
|
103
|
+
throw _iteratorError;
|
104
|
+
}
|
105
|
+
}
|
106
|
+
}
|
107
|
+
|
108
|
+
return opTree;
|
109
|
+
};
|
110
|
+
|
111
|
+
var pf = function pf(value) {
|
112
|
+
if (Number.isInteger(value)) {
|
113
|
+
return value.toString();
|
114
|
+
}
|
115
|
+
|
116
|
+
var s = value.toFixed(10);
|
117
|
+
var i = s.length - 1;
|
118
|
+
|
119
|
+
if (s[i] !== '0') {
|
120
|
+
return s;
|
121
|
+
}
|
122
|
+
|
123
|
+
do {
|
124
|
+
i--;
|
125
|
+
} while (s[i] === '0');
|
126
|
+
|
127
|
+
return s.substring(0, s[i] === '.' ? i : i + 1);
|
128
|
+
};
|
129
|
+
|
130
|
+
var pm = function pm(m) {
|
131
|
+
if (m[4] === 0 && m[5] === 0) {
|
132
|
+
if (m[1] === 0 && m[2] === 0) {
|
133
|
+
if (m[0] === 1 && m[3] === 1) {
|
134
|
+
return '';
|
135
|
+
}
|
136
|
+
|
137
|
+
return "scale(".concat(pf(m[0]), " ").concat(pf(m[3]), ")");
|
138
|
+
}
|
139
|
+
|
140
|
+
if (m[0] === m[3] && m[1] === -m[2]) {
|
141
|
+
var a = Math.acos(m[0]) * 180 / Math.PI;
|
142
|
+
return "rotate(".concat(pf(a), ")");
|
143
|
+
}
|
144
|
+
} else {
|
145
|
+
if (m[0] === 1 && m[1] === 0 && m[2] === 0 && m[3] === 1) {
|
146
|
+
return "translate(".concat(pf(m[4]), " ").concat(pf(m[5]), ")");
|
147
|
+
}
|
148
|
+
}
|
149
|
+
|
150
|
+
return "matrix(".concat(pf(m[0]), " ").concat(pf(m[1]), " ").concat(pf(m[2]), " ").concat(pf(m[3]), " ").concat(pf(m[4]), " ") + "".concat(pf(m[5]), ")");
|
151
|
+
};
|
152
|
+
|
43
153
|
var SVG_DEFAULTS = {
|
44
154
|
fontStyle: 'normal',
|
45
155
|
fontWeight: 'normal',
|
46
156
|
fillColor: '#000000'
|
47
157
|
};
|
48
|
-
var
|
158
|
+
var XML_NS = 'http://www.w3.org/XML/1998/namespace';
|
159
|
+
var XLINK_NS = 'http://www.w3.org/1999/xlink';
|
160
|
+
var LINE_CAP_STYLES = ['butt', 'round', 'square'];
|
161
|
+
var LINE_JOIN_STYLES = ['miter', 'round', 'bevel'];
|
162
|
+
|
163
|
+
var convertImgDataToPng = function () {
|
49
164
|
var PNG_HEADER = new Uint8Array([0x89, 0x50, 0x4e, 0x47, 0x0d, 0x0a, 0x1a, 0x0a]);
|
50
165
|
var CHUNK_WRAPPER_SIZE = 12;
|
51
166
|
var crcTable = new Int32Array(256);
|
167
|
+
|
52
168
|
for (var i = 0; i < 256; i++) {
|
53
169
|
var c = i;
|
170
|
+
|
54
171
|
for (var h = 0; h < 8; h++) {
|
55
172
|
if (c & 1) {
|
56
173
|
c = 0xedB88320 ^ c >> 1 & 0x7fffffff;
|
@@ -58,17 +175,22 @@ var SVGGraphics = function SVGGraphics() {
|
|
58
175
|
c = c >> 1 & 0x7fffffff;
|
59
176
|
}
|
60
177
|
}
|
178
|
+
|
61
179
|
crcTable[i] = c;
|
62
180
|
}
|
181
|
+
|
63
182
|
function crc32(data, start, end) {
|
64
183
|
var crc = -1;
|
65
|
-
|
66
|
-
|
184
|
+
|
185
|
+
for (var _i = start; _i < end; _i++) {
|
186
|
+
var a = (crc ^ data[_i]) & 0xff;
|
67
187
|
var b = crcTable[a];
|
68
188
|
crc = crc >>> 8 ^ b;
|
69
189
|
}
|
190
|
+
|
70
191
|
return crc ^ -1;
|
71
192
|
}
|
193
|
+
|
72
194
|
function writePngChunk(type, body, data, offset) {
|
73
195
|
var p = offset;
|
74
196
|
var len = body.length;
|
@@ -90,33 +212,45 @@ var SVGGraphics = function SVGGraphics() {
|
|
90
212
|
data[p + 2] = crc >> 8 & 0xff;
|
91
213
|
data[p + 3] = crc & 0xff;
|
92
214
|
}
|
215
|
+
|
93
216
|
function adler32(data, start, end) {
|
94
217
|
var a = 1;
|
95
218
|
var b = 0;
|
96
|
-
|
97
|
-
|
219
|
+
|
220
|
+
for (var _i2 = start; _i2 < end; ++_i2) {
|
221
|
+
a = (a + (data[_i2] & 0xff)) % 65521;
|
98
222
|
b = (b + a) % 65521;
|
99
223
|
}
|
224
|
+
|
100
225
|
return b << 16 | a;
|
101
226
|
}
|
227
|
+
|
102
228
|
function deflateSync(literals) {
|
103
|
-
if (!(0,
|
229
|
+
if (!(0, _is_node["default"])()) {
|
104
230
|
return deflateSyncUncompressed(literals);
|
105
231
|
}
|
232
|
+
|
106
233
|
try {
|
107
234
|
var input;
|
235
|
+
|
108
236
|
if (parseInt(process.versions.node) >= 8) {
|
109
237
|
input = literals;
|
110
238
|
} else {
|
111
239
|
input = new Buffer(literals);
|
112
240
|
}
|
113
|
-
|
241
|
+
|
242
|
+
var output = require('zlib').deflateSync(input, {
|
243
|
+
level: 9
|
244
|
+
});
|
245
|
+
|
114
246
|
return output instanceof Uint8Array ? output : new Uint8Array(output);
|
115
247
|
} catch (e) {
|
116
248
|
(0, _util.warn)('Not compressing PNG because zlib.deflateSync is unavailable: ' + e);
|
117
249
|
}
|
250
|
+
|
118
251
|
return deflateSyncUncompressed(literals);
|
119
252
|
}
|
253
|
+
|
120
254
|
function deflateSyncUncompressed(literals) {
|
121
255
|
var len = literals.length;
|
122
256
|
var maxBlockLength = 0xFFFF;
|
@@ -126,6 +260,7 @@ var SVGGraphics = function SVGGraphics() {
|
|
126
260
|
idat[pi++] = 0x78;
|
127
261
|
idat[pi++] = 0x9c;
|
128
262
|
var pos = 0;
|
263
|
+
|
129
264
|
while (len > maxBlockLength) {
|
130
265
|
idat[pi++] = 0x00;
|
131
266
|
idat[pi++] = 0xff;
|
@@ -137,6 +272,7 @@ var SVGGraphics = function SVGGraphics() {
|
|
137
272
|
pos += maxBlockLength;
|
138
273
|
len -= maxBlockLength;
|
139
274
|
}
|
275
|
+
|
140
276
|
idat[pi++] = 0x01;
|
141
277
|
idat[pi++] = len & 0xff;
|
142
278
|
idat[pi++] = len >> 8 & 0xff;
|
@@ -151,49 +287,59 @@ var SVGGraphics = function SVGGraphics() {
|
|
151
287
|
idat[pi++] = adler & 0xff;
|
152
288
|
return idat;
|
153
289
|
}
|
290
|
+
|
154
291
|
function encode(imgData, kind, forceDataSchema, isMask) {
|
155
292
|
var width = imgData.width;
|
156
293
|
var height = imgData.height;
|
157
294
|
var bitDepth, colorType, lineSize;
|
158
295
|
var bytes = imgData.data;
|
296
|
+
|
159
297
|
switch (kind) {
|
160
298
|
case _util.ImageKind.GRAYSCALE_1BPP:
|
161
299
|
colorType = 0;
|
162
300
|
bitDepth = 1;
|
163
301
|
lineSize = width + 7 >> 3;
|
164
302
|
break;
|
303
|
+
|
165
304
|
case _util.ImageKind.RGB_24BPP:
|
166
305
|
colorType = 2;
|
167
306
|
bitDepth = 8;
|
168
307
|
lineSize = width * 3;
|
169
308
|
break;
|
309
|
+
|
170
310
|
case _util.ImageKind.RGBA_32BPP:
|
171
311
|
colorType = 6;
|
172
312
|
bitDepth = 8;
|
173
313
|
lineSize = width * 4;
|
174
314
|
break;
|
315
|
+
|
175
316
|
default:
|
176
317
|
throw new Error('invalid format');
|
177
318
|
}
|
319
|
+
|
178
320
|
var literals = new Uint8Array((1 + lineSize) * height);
|
179
321
|
var offsetLiterals = 0,
|
180
322
|
offsetBytes = 0;
|
181
|
-
|
182
|
-
for (y = 0; y < height; ++y) {
|
323
|
+
|
324
|
+
for (var y = 0; y < height; ++y) {
|
183
325
|
literals[offsetLiterals++] = 0;
|
184
326
|
literals.set(bytes.subarray(offsetBytes, offsetBytes + lineSize), offsetLiterals);
|
185
327
|
offsetBytes += lineSize;
|
186
328
|
offsetLiterals += lineSize;
|
187
329
|
}
|
330
|
+
|
188
331
|
if (kind === _util.ImageKind.GRAYSCALE_1BPP && isMask) {
|
189
332
|
offsetLiterals = 0;
|
190
|
-
|
333
|
+
|
334
|
+
for (var _y = 0; _y < height; _y++) {
|
191
335
|
offsetLiterals++;
|
192
|
-
|
336
|
+
|
337
|
+
for (var _i3 = 0; _i3 < lineSize; _i3++) {
|
193
338
|
literals[offsetLiterals++] ^= 0xFF;
|
194
339
|
}
|
195
340
|
}
|
196
341
|
}
|
342
|
+
|
197
343
|
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
344
|
var idat = deflateSync(literals);
|
199
345
|
var pngLength = PNG_HEADER.length + CHUNK_WRAPPER_SIZE * 3 + ihdr.length + idat.length;
|
@@ -208,19 +354,27 @@ var SVGGraphics = function SVGGraphics() {
|
|
208
354
|
writePngChunk('IEND', new Uint8Array(0), data, offset);
|
209
355
|
return (0, _util.createObjectURL)(data, 'image/png', forceDataSchema);
|
210
356
|
}
|
357
|
+
|
211
358
|
return function convertImgDataToPng(imgData, forceDataSchema, isMask) {
|
212
359
|
var kind = imgData.kind === undefined ? _util.ImageKind.GRAYSCALE_1BPP : imgData.kind;
|
213
360
|
return encode(imgData, kind, forceDataSchema, isMask);
|
214
361
|
};
|
215
362
|
}();
|
216
|
-
|
363
|
+
|
364
|
+
var SVGExtraState =
|
365
|
+
/*#__PURE__*/
|
366
|
+
function () {
|
217
367
|
function SVGExtraState() {
|
368
|
+
_classCallCheck(this, SVGExtraState);
|
369
|
+
|
218
370
|
this.fontSizeScale = 1;
|
219
371
|
this.fontWeight = SVG_DEFAULTS.fontWeight;
|
220
372
|
this.fontSize = 0;
|
221
373
|
this.textMatrix = _util.IDENTITY_MATRIX;
|
222
374
|
this.fontMatrix = _util.FONT_IDENTITY_MATRIX;
|
223
375
|
this.leading = 0;
|
376
|
+
this.textRenderingMode = _util.TextRenderingMode.FILL;
|
377
|
+
this.textMatrixScale = 1;
|
224
378
|
this.x = 0;
|
225
379
|
this.y = 0;
|
226
380
|
this.lineX = 0;
|
@@ -244,76 +398,34 @@ var SVGGraphics = function SVGGraphics() {
|
|
244
398
|
this.clipGroup = null;
|
245
399
|
this.maskId = '';
|
246
400
|
}
|
247
|
-
|
248
|
-
|
401
|
+
|
402
|
+
_createClass(SVGExtraState, [{
|
403
|
+
key: "clone",
|
404
|
+
value: function clone() {
|
249
405
|
return Object.create(this);
|
250
|
-
}
|
251
|
-
|
406
|
+
}
|
407
|
+
}, {
|
408
|
+
key: "setCurrentPoint",
|
409
|
+
value: function setCurrentPoint(x, y) {
|
252
410
|
this.x = x;
|
253
411
|
this.y = y;
|
254
412
|
}
|
255
|
-
};
|
413
|
+
}]);
|
414
|
+
|
256
415
|
return SVGExtraState;
|
257
416
|
}();
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
|
266
|
-
'fnId': 92,
|
267
|
-
'fn': 'group',
|
268
|
-
'items': []
|
269
|
-
});
|
270
|
-
tmp.push(opTree);
|
271
|
-
opTree = opTree[opTree.length - 1].items;
|
272
|
-
continue;
|
273
|
-
}
|
274
|
-
if (opList[x].fn === 'restore') {
|
275
|
-
opTree = tmp.pop();
|
276
|
-
} else {
|
277
|
-
opTree.push(opList[x]);
|
278
|
-
}
|
279
|
-
}
|
280
|
-
return opTree;
|
281
|
-
}
|
282
|
-
function pf(value) {
|
283
|
-
if (Number.isInteger(value)) {
|
284
|
-
return value.toString();
|
285
|
-
}
|
286
|
-
var s = value.toFixed(10);
|
287
|
-
var i = s.length - 1;
|
288
|
-
if (s[i] !== '0') {
|
289
|
-
return s;
|
290
|
-
}
|
291
|
-
do {
|
292
|
-
i--;
|
293
|
-
} while (s[i] === '0');
|
294
|
-
return s.substr(0, s[i] === '.' ? i : i + 1);
|
295
|
-
}
|
296
|
-
function pm(m) {
|
297
|
-
if (m[4] === 0 && m[5] === 0) {
|
298
|
-
if (m[1] === 0 && m[2] === 0) {
|
299
|
-
if (m[0] === 1 && m[3] === 1) {
|
300
|
-
return '';
|
301
|
-
}
|
302
|
-
return 'scale(' + pf(m[0]) + ' ' + pf(m[3]) + ')';
|
303
|
-
}
|
304
|
-
if (m[0] === m[3] && m[1] === -m[2]) {
|
305
|
-
var a = Math.acos(m[0]) * 180 / Math.PI;
|
306
|
-
return 'rotate(' + pf(a) + ')';
|
307
|
-
}
|
308
|
-
} else {
|
309
|
-
if (m[0] === 1 && m[1] === 0 && m[2] === 0 && m[3] === 1) {
|
310
|
-
return 'translate(' + pf(m[4]) + ' ' + pf(m[5]) + ')';
|
311
|
-
}
|
312
|
-
}
|
313
|
-
return 'matrix(' + pf(m[0]) + ' ' + pf(m[1]) + ' ' + pf(m[2]) + ' ' + pf(m[3]) + ' ' + pf(m[4]) + ' ' + pf(m[5]) + ')';
|
314
|
-
}
|
417
|
+
|
418
|
+
var clipCount = 0;
|
419
|
+
var maskCount = 0;
|
420
|
+
var shadingCount = 0;
|
421
|
+
|
422
|
+
exports.SVGGraphics = SVGGraphics =
|
423
|
+
/*#__PURE__*/
|
424
|
+
function () {
|
315
425
|
function SVGGraphics(commonObjs, objs, forceDataSchema) {
|
316
|
-
this
|
426
|
+
_classCallCheck(this, SVGGraphics);
|
427
|
+
|
428
|
+
this.svgFactory = new _display_utils.DOMSVGFactory();
|
317
429
|
this.current = new SVGExtraState();
|
318
430
|
this.transformMatrix = _util.IDENTITY_MATRIX;
|
319
431
|
this.transformStack = [];
|
@@ -326,381 +438,583 @@ var SVGGraphics = function SVGGraphics() {
|
|
326
438
|
this.embeddedFonts = Object.create(null);
|
327
439
|
this.cssStyle = null;
|
328
440
|
this.forceDataSchema = !!forceDataSchema;
|
441
|
+
this._operatorIdMapping = [];
|
442
|
+
|
443
|
+
for (var op in _util.OPS) {
|
444
|
+
this._operatorIdMapping[_util.OPS[op]] = op;
|
445
|
+
}
|
329
446
|
}
|
330
|
-
|
331
|
-
|
332
|
-
|
333
|
-
|
334
|
-
var clipCount = 0;
|
335
|
-
var maskCount = 0;
|
336
|
-
SVGGraphics.prototype = {
|
337
|
-
save: function SVGGraphics_save() {
|
447
|
+
|
448
|
+
_createClass(SVGGraphics, [{
|
449
|
+
key: "save",
|
450
|
+
value: function save() {
|
338
451
|
this.transformStack.push(this.transformMatrix);
|
339
452
|
var old = this.current;
|
340
453
|
this.extraStack.push(old);
|
341
454
|
this.current = old.clone();
|
342
|
-
}
|
343
|
-
|
455
|
+
}
|
456
|
+
}, {
|
457
|
+
key: "restore",
|
458
|
+
value: function restore() {
|
344
459
|
this.transformMatrix = this.transformStack.pop();
|
345
460
|
this.current = this.extraStack.pop();
|
346
461
|
this.pendingClip = null;
|
347
462
|
this.tgrp = null;
|
348
|
-
}
|
349
|
-
|
463
|
+
}
|
464
|
+
}, {
|
465
|
+
key: "group",
|
466
|
+
value: function group(items) {
|
350
467
|
this.save();
|
351
468
|
this.executeOpTree(items);
|
352
469
|
this.restore();
|
353
|
-
}
|
354
|
-
|
470
|
+
}
|
471
|
+
}, {
|
472
|
+
key: "loadDependencies",
|
473
|
+
value: function loadDependencies(operatorList) {
|
355
474
|
var _this = this;
|
356
475
|
|
357
476
|
var fnArray = operatorList.fnArray;
|
358
|
-
var fnArrayLen = fnArray.length;
|
359
477
|
var argsArray = operatorList.argsArray;
|
360
|
-
|
361
|
-
|
362
|
-
|
363
|
-
|
364
|
-
|
365
|
-
|
366
|
-
|
367
|
-
|
368
|
-
|
369
|
-
|
370
|
-
|
371
|
-
|
372
|
-
|
373
|
-
|
374
|
-
|
478
|
+
|
479
|
+
for (var i = 0, ii = fnArray.length; i < ii; i++) {
|
480
|
+
if (fnArray[i] !== _util.OPS.dependency) {
|
481
|
+
continue;
|
482
|
+
}
|
483
|
+
|
484
|
+
var _iteratorNormalCompletion2 = true;
|
485
|
+
var _didIteratorError2 = false;
|
486
|
+
var _iteratorError2 = undefined;
|
487
|
+
|
488
|
+
try {
|
489
|
+
var _loop = function _loop() {
|
490
|
+
var obj = _step2.value;
|
491
|
+
var objsPool = obj.startsWith('g_') ? _this.commonObjs : _this.objs;
|
492
|
+
var promise = new Promise(function (resolve) {
|
493
|
+
objsPool.get(obj, resolve);
|
494
|
+
});
|
495
|
+
|
496
|
+
_this.current.dependencies.push(promise);
|
497
|
+
};
|
498
|
+
|
499
|
+
for (var _iterator2 = argsArray[i][Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {
|
500
|
+
_loop();
|
501
|
+
}
|
502
|
+
} catch (err) {
|
503
|
+
_didIteratorError2 = true;
|
504
|
+
_iteratorError2 = err;
|
505
|
+
} finally {
|
506
|
+
try {
|
507
|
+
if (!_iteratorNormalCompletion2 && _iterator2["return"] != null) {
|
508
|
+
_iterator2["return"]();
|
509
|
+
}
|
510
|
+
} finally {
|
511
|
+
if (_didIteratorError2) {
|
512
|
+
throw _iteratorError2;
|
375
513
|
}
|
376
|
-
this.current.dependencies.push(promise);
|
377
514
|
}
|
378
515
|
}
|
379
516
|
}
|
517
|
+
|
380
518
|
return Promise.all(this.current.dependencies);
|
381
|
-
}
|
382
|
-
|
519
|
+
}
|
520
|
+
}, {
|
521
|
+
key: "transform",
|
522
|
+
value: function transform(a, b, c, d, e, f) {
|
383
523
|
var transformMatrix = [a, b, c, d, e, f];
|
384
524
|
this.transformMatrix = _util.Util.transform(this.transformMatrix, transformMatrix);
|
385
525
|
this.tgrp = null;
|
386
|
-
}
|
387
|
-
|
526
|
+
}
|
527
|
+
}, {
|
528
|
+
key: "getSVG",
|
529
|
+
value: function getSVG(operatorList, viewport) {
|
388
530
|
var _this2 = this;
|
389
531
|
|
390
532
|
this.viewport = viewport;
|
533
|
+
|
391
534
|
var svgElement = this._initialize(viewport);
|
535
|
+
|
392
536
|
return this.loadDependencies(operatorList).then(function () {
|
393
537
|
_this2.transformMatrix = _util.IDENTITY_MATRIX;
|
394
|
-
|
395
|
-
_this2.executeOpTree(
|
538
|
+
|
539
|
+
_this2.executeOpTree(_this2.convertOpList(operatorList));
|
540
|
+
|
396
541
|
return svgElement;
|
397
542
|
});
|
398
|
-
}
|
399
|
-
|
543
|
+
}
|
544
|
+
}, {
|
545
|
+
key: "convertOpList",
|
546
|
+
value: function convertOpList(operatorList) {
|
547
|
+
var operatorIdMapping = this._operatorIdMapping;
|
400
548
|
var argsArray = operatorList.argsArray;
|
401
549
|
var fnArray = operatorList.fnArray;
|
402
|
-
var fnArrayLen = fnArray.length;
|
403
|
-
var REVOPS = [];
|
404
550
|
var opList = [];
|
405
|
-
|
406
|
-
|
407
|
-
|
408
|
-
for (var x = 0; x < fnArrayLen; x++) {
|
409
|
-
var fnId = fnArray[x];
|
551
|
+
|
552
|
+
for (var i = 0, ii = fnArray.length; i < ii; i++) {
|
553
|
+
var fnId = fnArray[i];
|
410
554
|
opList.push({
|
411
555
|
'fnId': fnId,
|
412
|
-
'fn':
|
413
|
-
'args': argsArray[
|
556
|
+
'fn': operatorIdMapping[fnId],
|
557
|
+
'args': argsArray[i]
|
414
558
|
});
|
415
559
|
}
|
560
|
+
|
416
561
|
return opListToTree(opList);
|
417
|
-
}
|
418
|
-
|
419
|
-
|
420
|
-
|
421
|
-
|
422
|
-
|
423
|
-
|
424
|
-
|
425
|
-
|
426
|
-
|
427
|
-
|
428
|
-
|
429
|
-
|
430
|
-
|
431
|
-
|
432
|
-
|
433
|
-
|
434
|
-
|
435
|
-
|
436
|
-
|
437
|
-
|
438
|
-
|
439
|
-
|
440
|
-
|
441
|
-
|
442
|
-
|
443
|
-
|
444
|
-
|
445
|
-
|
446
|
-
|
447
|
-
|
448
|
-
|
449
|
-
|
450
|
-
|
451
|
-
|
452
|
-
|
453
|
-
|
454
|
-
|
455
|
-
|
456
|
-
|
457
|
-
|
458
|
-
|
459
|
-
|
460
|
-
|
461
|
-
|
462
|
-
|
463
|
-
|
464
|
-
|
465
|
-
|
466
|
-
|
467
|
-
|
468
|
-
|
469
|
-
|
470
|
-
|
471
|
-
|
472
|
-
|
473
|
-
|
474
|
-
|
475
|
-
|
476
|
-
|
477
|
-
|
478
|
-
|
479
|
-
|
480
|
-
|
481
|
-
|
482
|
-
|
483
|
-
|
484
|
-
|
485
|
-
|
486
|
-
|
487
|
-
|
488
|
-
|
489
|
-
|
490
|
-
|
491
|
-
|
492
|
-
|
493
|
-
|
494
|
-
|
495
|
-
|
496
|
-
|
497
|
-
|
498
|
-
|
499
|
-
|
500
|
-
|
501
|
-
|
502
|
-
|
503
|
-
|
504
|
-
|
505
|
-
|
506
|
-
|
507
|
-
|
508
|
-
|
509
|
-
|
510
|
-
|
511
|
-
|
512
|
-
|
513
|
-
|
514
|
-
|
515
|
-
|
516
|
-
|
517
|
-
|
518
|
-
|
519
|
-
|
520
|
-
|
521
|
-
|
522
|
-
|
523
|
-
|
524
|
-
|
525
|
-
|
526
|
-
|
527
|
-
|
528
|
-
|
529
|
-
|
530
|
-
|
531
|
-
|
532
|
-
|
533
|
-
|
534
|
-
|
535
|
-
|
536
|
-
|
537
|
-
|
538
|
-
|
539
|
-
|
540
|
-
|
541
|
-
|
542
|
-
|
543
|
-
|
544
|
-
|
545
|
-
|
546
|
-
|
547
|
-
|
548
|
-
|
549
|
-
|
550
|
-
|
551
|
-
|
552
|
-
|
553
|
-
|
554
|
-
|
555
|
-
|
556
|
-
|
557
|
-
|
558
|
-
|
559
|
-
|
560
|
-
|
561
|
-
|
562
|
+
}
|
563
|
+
}, {
|
564
|
+
key: "executeOpTree",
|
565
|
+
value: function executeOpTree(opTree) {
|
566
|
+
var _iteratorNormalCompletion3 = true;
|
567
|
+
var _didIteratorError3 = false;
|
568
|
+
var _iteratorError3 = undefined;
|
569
|
+
|
570
|
+
try {
|
571
|
+
for (var _iterator3 = opTree[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {
|
572
|
+
var opTreeElement = _step3.value;
|
573
|
+
var fn = opTreeElement.fn;
|
574
|
+
var fnId = opTreeElement.fnId;
|
575
|
+
var args = opTreeElement.args;
|
576
|
+
|
577
|
+
switch (fnId | 0) {
|
578
|
+
case _util.OPS.beginText:
|
579
|
+
this.beginText();
|
580
|
+
break;
|
581
|
+
|
582
|
+
case _util.OPS.dependency:
|
583
|
+
break;
|
584
|
+
|
585
|
+
case _util.OPS.setLeading:
|
586
|
+
this.setLeading(args);
|
587
|
+
break;
|
588
|
+
|
589
|
+
case _util.OPS.setLeadingMoveText:
|
590
|
+
this.setLeadingMoveText(args[0], args[1]);
|
591
|
+
break;
|
592
|
+
|
593
|
+
case _util.OPS.setFont:
|
594
|
+
this.setFont(args);
|
595
|
+
break;
|
596
|
+
|
597
|
+
case _util.OPS.showText:
|
598
|
+
this.showText(args[0]);
|
599
|
+
break;
|
600
|
+
|
601
|
+
case _util.OPS.showSpacedText:
|
602
|
+
this.showText(args[0]);
|
603
|
+
break;
|
604
|
+
|
605
|
+
case _util.OPS.endText:
|
606
|
+
this.endText();
|
607
|
+
break;
|
608
|
+
|
609
|
+
case _util.OPS.moveText:
|
610
|
+
this.moveText(args[0], args[1]);
|
611
|
+
break;
|
612
|
+
|
613
|
+
case _util.OPS.setCharSpacing:
|
614
|
+
this.setCharSpacing(args[0]);
|
615
|
+
break;
|
616
|
+
|
617
|
+
case _util.OPS.setWordSpacing:
|
618
|
+
this.setWordSpacing(args[0]);
|
619
|
+
break;
|
620
|
+
|
621
|
+
case _util.OPS.setHScale:
|
622
|
+
this.setHScale(args[0]);
|
623
|
+
break;
|
624
|
+
|
625
|
+
case _util.OPS.setTextMatrix:
|
626
|
+
this.setTextMatrix(args[0], args[1], args[2], args[3], args[4], args[5]);
|
627
|
+
break;
|
628
|
+
|
629
|
+
case _util.OPS.setTextRise:
|
630
|
+
this.setTextRise(args[0]);
|
631
|
+
break;
|
632
|
+
|
633
|
+
case _util.OPS.setTextRenderingMode:
|
634
|
+
this.setTextRenderingMode(args[0]);
|
635
|
+
break;
|
636
|
+
|
637
|
+
case _util.OPS.setLineWidth:
|
638
|
+
this.setLineWidth(args[0]);
|
639
|
+
break;
|
640
|
+
|
641
|
+
case _util.OPS.setLineJoin:
|
642
|
+
this.setLineJoin(args[0]);
|
643
|
+
break;
|
644
|
+
|
645
|
+
case _util.OPS.setLineCap:
|
646
|
+
this.setLineCap(args[0]);
|
647
|
+
break;
|
648
|
+
|
649
|
+
case _util.OPS.setMiterLimit:
|
650
|
+
this.setMiterLimit(args[0]);
|
651
|
+
break;
|
652
|
+
|
653
|
+
case _util.OPS.setFillRGBColor:
|
654
|
+
this.setFillRGBColor(args[0], args[1], args[2]);
|
655
|
+
break;
|
656
|
+
|
657
|
+
case _util.OPS.setStrokeRGBColor:
|
658
|
+
this.setStrokeRGBColor(args[0], args[1], args[2]);
|
659
|
+
break;
|
660
|
+
|
661
|
+
case _util.OPS.setStrokeColorN:
|
662
|
+
this.setStrokeColorN(args);
|
663
|
+
break;
|
664
|
+
|
665
|
+
case _util.OPS.setFillColorN:
|
666
|
+
this.setFillColorN(args);
|
667
|
+
break;
|
668
|
+
|
669
|
+
case _util.OPS.shadingFill:
|
670
|
+
this.shadingFill(args[0]);
|
671
|
+
break;
|
672
|
+
|
673
|
+
case _util.OPS.setDash:
|
674
|
+
this.setDash(args[0], args[1]);
|
675
|
+
break;
|
676
|
+
|
677
|
+
case _util.OPS.setRenderingIntent:
|
678
|
+
this.setRenderingIntent(args[0]);
|
679
|
+
break;
|
680
|
+
|
681
|
+
case _util.OPS.setFlatness:
|
682
|
+
this.setFlatness(args[0]);
|
683
|
+
break;
|
684
|
+
|
685
|
+
case _util.OPS.setGState:
|
686
|
+
this.setGState(args[0]);
|
687
|
+
break;
|
688
|
+
|
689
|
+
case _util.OPS.fill:
|
690
|
+
this.fill();
|
691
|
+
break;
|
692
|
+
|
693
|
+
case _util.OPS.eoFill:
|
694
|
+
this.eoFill();
|
695
|
+
break;
|
696
|
+
|
697
|
+
case _util.OPS.stroke:
|
698
|
+
this.stroke();
|
699
|
+
break;
|
700
|
+
|
701
|
+
case _util.OPS.fillStroke:
|
702
|
+
this.fillStroke();
|
703
|
+
break;
|
704
|
+
|
705
|
+
case _util.OPS.eoFillStroke:
|
706
|
+
this.eoFillStroke();
|
707
|
+
break;
|
708
|
+
|
709
|
+
case _util.OPS.clip:
|
710
|
+
this.clip('nonzero');
|
711
|
+
break;
|
712
|
+
|
713
|
+
case _util.OPS.eoClip:
|
714
|
+
this.clip('evenodd');
|
715
|
+
break;
|
716
|
+
|
717
|
+
case _util.OPS.paintSolidColorImageMask:
|
718
|
+
this.paintSolidColorImageMask();
|
719
|
+
break;
|
720
|
+
|
721
|
+
case _util.OPS.paintJpegXObject:
|
722
|
+
this.paintJpegXObject(args[0], args[1], args[2]);
|
723
|
+
break;
|
724
|
+
|
725
|
+
case _util.OPS.paintImageXObject:
|
726
|
+
this.paintImageXObject(args[0]);
|
727
|
+
break;
|
728
|
+
|
729
|
+
case _util.OPS.paintInlineImageXObject:
|
730
|
+
this.paintInlineImageXObject(args[0]);
|
731
|
+
break;
|
732
|
+
|
733
|
+
case _util.OPS.paintImageMaskXObject:
|
734
|
+
this.paintImageMaskXObject(args[0]);
|
735
|
+
break;
|
736
|
+
|
737
|
+
case _util.OPS.paintFormXObjectBegin:
|
738
|
+
this.paintFormXObjectBegin(args[0], args[1]);
|
739
|
+
break;
|
740
|
+
|
741
|
+
case _util.OPS.paintFormXObjectEnd:
|
742
|
+
this.paintFormXObjectEnd();
|
743
|
+
break;
|
744
|
+
|
745
|
+
case _util.OPS.closePath:
|
746
|
+
this.closePath();
|
747
|
+
break;
|
748
|
+
|
749
|
+
case _util.OPS.closeStroke:
|
750
|
+
this.closeStroke();
|
751
|
+
break;
|
752
|
+
|
753
|
+
case _util.OPS.closeFillStroke:
|
754
|
+
this.closeFillStroke();
|
755
|
+
break;
|
756
|
+
|
757
|
+
case _util.OPS.closeEOFillStroke:
|
758
|
+
this.closeEOFillStroke();
|
759
|
+
break;
|
760
|
+
|
761
|
+
case _util.OPS.nextLine:
|
762
|
+
this.nextLine();
|
763
|
+
break;
|
764
|
+
|
765
|
+
case _util.OPS.transform:
|
766
|
+
this.transform(args[0], args[1], args[2], args[3], args[4], args[5]);
|
767
|
+
break;
|
768
|
+
|
769
|
+
case _util.OPS.constructPath:
|
770
|
+
this.constructPath(args[0], args[1]);
|
771
|
+
break;
|
772
|
+
|
773
|
+
case _util.OPS.endPath:
|
774
|
+
this.endPath();
|
775
|
+
break;
|
776
|
+
|
777
|
+
case 92:
|
778
|
+
this.group(opTreeElement.items);
|
779
|
+
break;
|
780
|
+
|
781
|
+
default:
|
782
|
+
(0, _util.warn)("Unimplemented operator ".concat(fn));
|
783
|
+
break;
|
784
|
+
}
|
785
|
+
}
|
786
|
+
} catch (err) {
|
787
|
+
_didIteratorError3 = true;
|
788
|
+
_iteratorError3 = err;
|
789
|
+
} finally {
|
790
|
+
try {
|
791
|
+
if (!_iteratorNormalCompletion3 && _iterator3["return"] != null) {
|
792
|
+
_iterator3["return"]();
|
793
|
+
}
|
794
|
+
} finally {
|
795
|
+
if (_didIteratorError3) {
|
796
|
+
throw _iteratorError3;
|
797
|
+
}
|
562
798
|
}
|
563
799
|
}
|
564
|
-
}
|
565
|
-
|
800
|
+
}
|
801
|
+
}, {
|
802
|
+
key: "setWordSpacing",
|
803
|
+
value: function setWordSpacing(wordSpacing) {
|
566
804
|
this.current.wordSpacing = wordSpacing;
|
567
|
-
}
|
568
|
-
|
805
|
+
}
|
806
|
+
}, {
|
807
|
+
key: "setCharSpacing",
|
808
|
+
value: function setCharSpacing(charSpacing) {
|
569
809
|
this.current.charSpacing = charSpacing;
|
570
|
-
}
|
571
|
-
|
810
|
+
}
|
811
|
+
}, {
|
812
|
+
key: "nextLine",
|
813
|
+
value: function nextLine() {
|
572
814
|
this.moveText(0, this.current.leading);
|
573
|
-
}
|
574
|
-
|
815
|
+
}
|
816
|
+
}, {
|
817
|
+
key: "setTextMatrix",
|
818
|
+
value: function setTextMatrix(a, b, c, d, e, f) {
|
575
819
|
var current = this.current;
|
576
|
-
|
577
|
-
|
578
|
-
|
820
|
+
current.textMatrix = current.lineMatrix = [a, b, c, d, e, f];
|
821
|
+
current.textMatrixScale = Math.sqrt(a * a + b * b);
|
822
|
+
current.x = current.lineX = 0;
|
823
|
+
current.y = current.lineY = 0;
|
579
824
|
current.xcoords = [];
|
580
825
|
current.tspan = this.svgFactory.createElement('svg:tspan');
|
581
826
|
current.tspan.setAttributeNS(null, 'font-family', current.fontFamily);
|
582
|
-
current.tspan.setAttributeNS(null, 'font-size', pf(current.fontSize)
|
827
|
+
current.tspan.setAttributeNS(null, 'font-size', "".concat(pf(current.fontSize), "px"));
|
583
828
|
current.tspan.setAttributeNS(null, 'y', pf(-current.y));
|
584
829
|
current.txtElement = this.svgFactory.createElement('svg:text');
|
585
830
|
current.txtElement.appendChild(current.tspan);
|
586
|
-
}
|
587
|
-
|
588
|
-
|
589
|
-
|
590
|
-
|
591
|
-
|
592
|
-
|
593
|
-
|
594
|
-
|
595
|
-
|
596
|
-
|
597
|
-
|
831
|
+
}
|
832
|
+
}, {
|
833
|
+
key: "beginText",
|
834
|
+
value: function beginText() {
|
835
|
+
var current = this.current;
|
836
|
+
current.x = current.lineX = 0;
|
837
|
+
current.y = current.lineY = 0;
|
838
|
+
current.textMatrix = _util.IDENTITY_MATRIX;
|
839
|
+
current.lineMatrix = _util.IDENTITY_MATRIX;
|
840
|
+
current.textMatrixScale = 1;
|
841
|
+
current.tspan = this.svgFactory.createElement('svg:tspan');
|
842
|
+
current.txtElement = this.svgFactory.createElement('svg:text');
|
843
|
+
current.txtgrp = this.svgFactory.createElement('svg:g');
|
844
|
+
current.xcoords = [];
|
845
|
+
}
|
846
|
+
}, {
|
847
|
+
key: "moveText",
|
848
|
+
value: function moveText(x, y) {
|
598
849
|
var current = this.current;
|
599
|
-
|
600
|
-
|
850
|
+
current.x = current.lineX += x;
|
851
|
+
current.y = current.lineY += y;
|
601
852
|
current.xcoords = [];
|
602
853
|
current.tspan = this.svgFactory.createElement('svg:tspan');
|
603
854
|
current.tspan.setAttributeNS(null, 'font-family', current.fontFamily);
|
604
|
-
current.tspan.setAttributeNS(null, 'font-size', pf(current.fontSize)
|
855
|
+
current.tspan.setAttributeNS(null, 'font-size', "".concat(pf(current.fontSize), "px"));
|
605
856
|
current.tspan.setAttributeNS(null, 'y', pf(-current.y));
|
606
|
-
}
|
607
|
-
|
857
|
+
}
|
858
|
+
}, {
|
859
|
+
key: "showText",
|
860
|
+
value: function showText(glyphs) {
|
608
861
|
var current = this.current;
|
609
862
|
var font = current.font;
|
610
863
|
var fontSize = current.fontSize;
|
864
|
+
|
611
865
|
if (fontSize === 0) {
|
612
866
|
return;
|
613
867
|
}
|
868
|
+
|
614
869
|
var charSpacing = current.charSpacing;
|
615
870
|
var wordSpacing = current.wordSpacing;
|
616
871
|
var fontDirection = current.fontDirection;
|
617
872
|
var textHScale = current.textHScale * fontDirection;
|
618
|
-
var glyphsLength = glyphs.length;
|
619
873
|
var vertical = font.vertical;
|
620
874
|
var widthAdvanceScale = fontSize * current.fontMatrix[0];
|
621
|
-
var x = 0
|
622
|
-
|
623
|
-
|
624
|
-
|
625
|
-
|
626
|
-
|
627
|
-
|
628
|
-
|
629
|
-
|
630
|
-
|
631
|
-
|
632
|
-
|
633
|
-
|
634
|
-
|
635
|
-
|
636
|
-
|
875
|
+
var x = 0;
|
876
|
+
var _iteratorNormalCompletion4 = true;
|
877
|
+
var _didIteratorError4 = false;
|
878
|
+
var _iteratorError4 = undefined;
|
879
|
+
|
880
|
+
try {
|
881
|
+
for (var _iterator4 = glyphs[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {
|
882
|
+
var glyph = _step4.value;
|
883
|
+
|
884
|
+
if (glyph === null) {
|
885
|
+
x += fontDirection * wordSpacing;
|
886
|
+
continue;
|
887
|
+
} else if ((0, _util.isNum)(glyph)) {
|
888
|
+
x += -glyph * fontSize * 0.001;
|
889
|
+
continue;
|
890
|
+
}
|
891
|
+
|
892
|
+
var width = glyph.width;
|
893
|
+
var character = glyph.fontChar;
|
894
|
+
var spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;
|
895
|
+
var charWidth = width * widthAdvanceScale + spacing * fontDirection;
|
896
|
+
|
897
|
+
if (!glyph.isInFont && !font.missingFile) {
|
898
|
+
x += charWidth;
|
899
|
+
continue;
|
900
|
+
}
|
901
|
+
|
902
|
+
current.xcoords.push(current.x + x * textHScale);
|
903
|
+
current.tspan.textContent += character;
|
637
904
|
x += charWidth;
|
638
|
-
continue;
|
639
905
|
}
|
640
|
-
|
641
|
-
|
642
|
-
|
906
|
+
} catch (err) {
|
907
|
+
_didIteratorError4 = true;
|
908
|
+
_iteratorError4 = err;
|
909
|
+
} finally {
|
910
|
+
try {
|
911
|
+
if (!_iteratorNormalCompletion4 && _iterator4["return"] != null) {
|
912
|
+
_iterator4["return"]();
|
913
|
+
}
|
914
|
+
} finally {
|
915
|
+
if (_didIteratorError4) {
|
916
|
+
throw _iteratorError4;
|
917
|
+
}
|
918
|
+
}
|
643
919
|
}
|
920
|
+
|
644
921
|
if (vertical) {
|
645
922
|
current.y -= x * textHScale;
|
646
923
|
} else {
|
647
924
|
current.x += x * textHScale;
|
648
925
|
}
|
926
|
+
|
649
927
|
current.tspan.setAttributeNS(null, 'x', current.xcoords.map(pf).join(' '));
|
650
928
|
current.tspan.setAttributeNS(null, 'y', pf(-current.y));
|
651
929
|
current.tspan.setAttributeNS(null, 'font-family', current.fontFamily);
|
652
|
-
current.tspan.setAttributeNS(null, 'font-size', pf(current.fontSize)
|
930
|
+
current.tspan.setAttributeNS(null, 'font-size', "".concat(pf(current.fontSize), "px"));
|
931
|
+
|
653
932
|
if (current.fontStyle !== SVG_DEFAULTS.fontStyle) {
|
654
933
|
current.tspan.setAttributeNS(null, 'font-style', current.fontStyle);
|
655
934
|
}
|
935
|
+
|
656
936
|
if (current.fontWeight !== SVG_DEFAULTS.fontWeight) {
|
657
937
|
current.tspan.setAttributeNS(null, 'font-weight', current.fontWeight);
|
658
938
|
}
|
659
|
-
|
660
|
-
|
939
|
+
|
940
|
+
var fillStrokeMode = current.textRenderingMode & _util.TextRenderingMode.FILL_STROKE_MASK;
|
941
|
+
|
942
|
+
if (fillStrokeMode === _util.TextRenderingMode.FILL || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {
|
943
|
+
if (current.fillColor !== SVG_DEFAULTS.fillColor) {
|
944
|
+
current.tspan.setAttributeNS(null, 'fill', current.fillColor);
|
945
|
+
}
|
946
|
+
|
947
|
+
if (current.fillAlpha < 1) {
|
948
|
+
current.tspan.setAttributeNS(null, 'fill-opacity', current.fillAlpha);
|
949
|
+
}
|
950
|
+
} else if (current.textRenderingMode === _util.TextRenderingMode.ADD_TO_PATH) {
|
951
|
+
current.tspan.setAttributeNS(null, 'fill', 'transparent');
|
952
|
+
} else {
|
953
|
+
current.tspan.setAttributeNS(null, 'fill', 'none');
|
954
|
+
}
|
955
|
+
|
956
|
+
if (fillStrokeMode === _util.TextRenderingMode.STROKE || fillStrokeMode === _util.TextRenderingMode.FILL_STROKE) {
|
957
|
+
var lineWidthScale = 1 / (current.textMatrixScale || 1);
|
958
|
+
|
959
|
+
this._setStrokeAttributes(current.tspan, lineWidthScale);
|
661
960
|
}
|
961
|
+
|
662
962
|
var textMatrix = current.textMatrix;
|
963
|
+
|
663
964
|
if (current.textRise !== 0) {
|
664
965
|
textMatrix = textMatrix.slice();
|
665
966
|
textMatrix[5] += current.textRise;
|
666
967
|
}
|
667
|
-
|
968
|
+
|
969
|
+
current.txtElement.setAttributeNS(null, 'transform', "".concat(pm(textMatrix), " scale(1, -1)"));
|
668
970
|
current.txtElement.setAttributeNS(XML_NS, 'xml:space', 'preserve');
|
669
971
|
current.txtElement.appendChild(current.tspan);
|
670
972
|
current.txtgrp.appendChild(current.txtElement);
|
973
|
+
|
671
974
|
this._ensureTransformGroup().appendChild(current.txtElement);
|
672
|
-
}
|
673
|
-
|
975
|
+
}
|
976
|
+
}, {
|
977
|
+
key: "setLeadingMoveText",
|
978
|
+
value: function setLeadingMoveText(x, y) {
|
674
979
|
this.setLeading(-y);
|
675
980
|
this.moveText(x, y);
|
676
|
-
}
|
677
|
-
|
981
|
+
}
|
982
|
+
}, {
|
983
|
+
key: "addFontStyle",
|
984
|
+
value: function addFontStyle(fontObj) {
|
678
985
|
if (!this.cssStyle) {
|
679
986
|
this.cssStyle = this.svgFactory.createElement('svg:style');
|
680
987
|
this.cssStyle.setAttributeNS(null, 'type', 'text/css');
|
681
988
|
this.defs.appendChild(this.cssStyle);
|
682
989
|
}
|
990
|
+
|
683
991
|
var url = (0, _util.createObjectURL)(fontObj.data, fontObj.mimetype, this.forceDataSchema);
|
684
|
-
this.cssStyle.textContent +=
|
685
|
-
}
|
686
|
-
|
992
|
+
this.cssStyle.textContent += "@font-face { font-family: \"".concat(fontObj.loadedName, "\";") + " src: url(".concat(url, "); }\n");
|
993
|
+
}
|
994
|
+
}, {
|
995
|
+
key: "setFont",
|
996
|
+
value: function setFont(details) {
|
687
997
|
var current = this.current;
|
688
998
|
var fontObj = this.commonObjs.get(details[0]);
|
689
999
|
var size = details[1];
|
690
|
-
|
1000
|
+
current.font = fontObj;
|
1001
|
+
|
691
1002
|
if (this.embedFonts && fontObj.data && !this.embeddedFonts[fontObj.loadedName]) {
|
692
1003
|
this.addFontStyle(fontObj);
|
693
1004
|
this.embeddedFonts[fontObj.loadedName] = fontObj;
|
694
1005
|
}
|
1006
|
+
|
695
1007
|
current.fontMatrix = fontObj.fontMatrix ? fontObj.fontMatrix : _util.FONT_IDENTITY_MATRIX;
|
696
1008
|
var bold = fontObj.black ? fontObj.bold ? 'bolder' : 'bold' : fontObj.bold ? 'bold' : 'normal';
|
697
1009
|
var italic = fontObj.italic ? 'italic' : 'normal';
|
1010
|
+
|
698
1011
|
if (size < 0) {
|
699
1012
|
size = -size;
|
700
1013
|
current.fontDirection = -1;
|
701
1014
|
} else {
|
702
1015
|
current.fontDirection = 1;
|
703
1016
|
}
|
1017
|
+
|
704
1018
|
current.fontSize = size;
|
705
1019
|
current.fontFamily = fontObj.loadedName;
|
706
1020
|
current.fontWeight = bold;
|
@@ -708,116 +1022,391 @@ var SVGGraphics = function SVGGraphics() {
|
|
708
1022
|
current.tspan = this.svgFactory.createElement('svg:tspan');
|
709
1023
|
current.tspan.setAttributeNS(null, 'y', pf(-current.y));
|
710
1024
|
current.xcoords = [];
|
711
|
-
}
|
712
|
-
|
713
|
-
|
714
|
-
|
715
|
-
|
716
|
-
|
1025
|
+
}
|
1026
|
+
}, {
|
1027
|
+
key: "endText",
|
1028
|
+
value: function endText() {
|
1029
|
+
var current = this.current;
|
1030
|
+
|
1031
|
+
if (current.textRenderingMode & _util.TextRenderingMode.ADD_TO_PATH_FLAG && current.txtElement && current.txtElement.hasChildNodes()) {
|
1032
|
+
current.element = current.txtElement;
|
1033
|
+
this.clip('nonzero');
|
1034
|
+
this.endPath();
|
1035
|
+
}
|
1036
|
+
}
|
1037
|
+
}, {
|
1038
|
+
key: "setLineWidth",
|
1039
|
+
value: function setLineWidth(width) {
|
1040
|
+
if (width > 0) {
|
1041
|
+
this.current.lineWidth = width;
|
1042
|
+
}
|
1043
|
+
}
|
1044
|
+
}, {
|
1045
|
+
key: "setLineCap",
|
1046
|
+
value: function setLineCap(style) {
|
717
1047
|
this.current.lineCap = LINE_CAP_STYLES[style];
|
718
|
-
}
|
719
|
-
|
1048
|
+
}
|
1049
|
+
}, {
|
1050
|
+
key: "setLineJoin",
|
1051
|
+
value: function setLineJoin(style) {
|
720
1052
|
this.current.lineJoin = LINE_JOIN_STYLES[style];
|
721
|
-
}
|
722
|
-
|
1053
|
+
}
|
1054
|
+
}, {
|
1055
|
+
key: "setMiterLimit",
|
1056
|
+
value: function setMiterLimit(limit) {
|
723
1057
|
this.current.miterLimit = limit;
|
724
|
-
}
|
725
|
-
|
1058
|
+
}
|
1059
|
+
}, {
|
1060
|
+
key: "setStrokeAlpha",
|
1061
|
+
value: function setStrokeAlpha(strokeAlpha) {
|
726
1062
|
this.current.strokeAlpha = strokeAlpha;
|
727
|
-
}
|
728
|
-
|
729
|
-
|
730
|
-
|
731
|
-
|
732
|
-
|
1063
|
+
}
|
1064
|
+
}, {
|
1065
|
+
key: "setStrokeRGBColor",
|
1066
|
+
value: function setStrokeRGBColor(r, g, b) {
|
1067
|
+
this.current.strokeColor = _util.Util.makeCssRgb(r, g, b);
|
1068
|
+
}
|
1069
|
+
}, {
|
1070
|
+
key: "setFillAlpha",
|
1071
|
+
value: function setFillAlpha(fillAlpha) {
|
733
1072
|
this.current.fillAlpha = fillAlpha;
|
734
|
-
}
|
735
|
-
|
736
|
-
|
737
|
-
|
1073
|
+
}
|
1074
|
+
}, {
|
1075
|
+
key: "setFillRGBColor",
|
1076
|
+
value: function setFillRGBColor(r, g, b) {
|
1077
|
+
this.current.fillColor = _util.Util.makeCssRgb(r, g, b);
|
738
1078
|
this.current.tspan = this.svgFactory.createElement('svg:tspan');
|
739
1079
|
this.current.xcoords = [];
|
740
|
-
}
|
741
|
-
|
1080
|
+
}
|
1081
|
+
}, {
|
1082
|
+
key: "setStrokeColorN",
|
1083
|
+
value: function setStrokeColorN(args) {
|
1084
|
+
this.current.strokeColor = this._makeColorN_Pattern(args);
|
1085
|
+
}
|
1086
|
+
}, {
|
1087
|
+
key: "setFillColorN",
|
1088
|
+
value: function setFillColorN(args) {
|
1089
|
+
this.current.fillColor = this._makeColorN_Pattern(args);
|
1090
|
+
}
|
1091
|
+
}, {
|
1092
|
+
key: "shadingFill",
|
1093
|
+
value: function shadingFill(args) {
|
1094
|
+
var width = this.viewport.width;
|
1095
|
+
var height = this.viewport.height;
|
1096
|
+
|
1097
|
+
var inv = _util.Util.inverseTransform(this.transformMatrix);
|
1098
|
+
|
1099
|
+
var bl = _util.Util.applyTransform([0, 0], inv);
|
1100
|
+
|
1101
|
+
var br = _util.Util.applyTransform([0, height], inv);
|
1102
|
+
|
1103
|
+
var ul = _util.Util.applyTransform([width, 0], inv);
|
1104
|
+
|
1105
|
+
var ur = _util.Util.applyTransform([width, height], inv);
|
1106
|
+
|
1107
|
+
var x0 = Math.min(bl[0], br[0], ul[0], ur[0]);
|
1108
|
+
var y0 = Math.min(bl[1], br[1], ul[1], ur[1]);
|
1109
|
+
var x1 = Math.max(bl[0], br[0], ul[0], ur[0]);
|
1110
|
+
var y1 = Math.max(bl[1], br[1], ul[1], ur[1]);
|
1111
|
+
var rect = this.svgFactory.createElement('svg:rect');
|
1112
|
+
rect.setAttributeNS(null, 'x', x0);
|
1113
|
+
rect.setAttributeNS(null, 'y', y0);
|
1114
|
+
rect.setAttributeNS(null, 'width', x1 - x0);
|
1115
|
+
rect.setAttributeNS(null, 'height', y1 - y0);
|
1116
|
+
rect.setAttributeNS(null, 'fill', this._makeShadingPattern(args));
|
1117
|
+
|
1118
|
+
this._ensureTransformGroup().appendChild(rect);
|
1119
|
+
}
|
1120
|
+
}, {
|
1121
|
+
key: "_makeColorN_Pattern",
|
1122
|
+
value: function _makeColorN_Pattern(args) {
|
1123
|
+
if (args[0] === 'TilingPattern') {
|
1124
|
+
return this._makeTilingPattern(args);
|
1125
|
+
}
|
1126
|
+
|
1127
|
+
return this._makeShadingPattern(args);
|
1128
|
+
}
|
1129
|
+
}, {
|
1130
|
+
key: "_makeTilingPattern",
|
1131
|
+
value: function _makeTilingPattern(args) {
|
1132
|
+
var color = args[1];
|
1133
|
+
var operatorList = args[2];
|
1134
|
+
var matrix = args[3] || _util.IDENTITY_MATRIX;
|
1135
|
+
|
1136
|
+
var _args$ = _slicedToArray(args[4], 4),
|
1137
|
+
x0 = _args$[0],
|
1138
|
+
y0 = _args$[1],
|
1139
|
+
x1 = _args$[2],
|
1140
|
+
y1 = _args$[3];
|
1141
|
+
|
1142
|
+
var xstep = args[5];
|
1143
|
+
var ystep = args[6];
|
1144
|
+
var paintType = args[7];
|
1145
|
+
var tilingId = "shading".concat(shadingCount++);
|
1146
|
+
|
1147
|
+
var _Util$applyTransform = _util.Util.applyTransform([x0, y0], matrix),
|
1148
|
+
_Util$applyTransform2 = _slicedToArray(_Util$applyTransform, 2),
|
1149
|
+
tx0 = _Util$applyTransform2[0],
|
1150
|
+
ty0 = _Util$applyTransform2[1];
|
1151
|
+
|
1152
|
+
var _Util$applyTransform3 = _util.Util.applyTransform([x1, y1], matrix),
|
1153
|
+
_Util$applyTransform4 = _slicedToArray(_Util$applyTransform3, 2),
|
1154
|
+
tx1 = _Util$applyTransform4[0],
|
1155
|
+
ty1 = _Util$applyTransform4[1];
|
1156
|
+
|
1157
|
+
var _Util$singularValueDe = _util.Util.singularValueDecompose2dScale(matrix),
|
1158
|
+
_Util$singularValueDe2 = _slicedToArray(_Util$singularValueDe, 2),
|
1159
|
+
xscale = _Util$singularValueDe2[0],
|
1160
|
+
yscale = _Util$singularValueDe2[1];
|
1161
|
+
|
1162
|
+
var txstep = xstep * xscale;
|
1163
|
+
var tystep = ystep * yscale;
|
1164
|
+
var tiling = this.svgFactory.createElement('svg:pattern');
|
1165
|
+
tiling.setAttributeNS(null, 'id', tilingId);
|
1166
|
+
tiling.setAttributeNS(null, 'patternUnits', 'userSpaceOnUse');
|
1167
|
+
tiling.setAttributeNS(null, 'width', txstep);
|
1168
|
+
tiling.setAttributeNS(null, 'height', tystep);
|
1169
|
+
tiling.setAttributeNS(null, 'x', "".concat(tx0));
|
1170
|
+
tiling.setAttributeNS(null, 'y', "".concat(ty0));
|
1171
|
+
var svg = this.svg;
|
1172
|
+
var transformMatrix = this.transformMatrix;
|
1173
|
+
var fillColor = this.current.fillColor;
|
1174
|
+
var strokeColor = this.current.strokeColor;
|
1175
|
+
var bbox = this.svgFactory.create(tx1 - tx0, ty1 - ty0);
|
1176
|
+
this.svg = bbox;
|
1177
|
+
this.transformMatrix = matrix;
|
1178
|
+
|
1179
|
+
if (paintType === 2) {
|
1180
|
+
var cssColor = _util.Util.makeCssRgb.apply(_util.Util, _toConsumableArray(color));
|
1181
|
+
|
1182
|
+
this.current.fillColor = cssColor;
|
1183
|
+
this.current.strokeColor = cssColor;
|
1184
|
+
}
|
1185
|
+
|
1186
|
+
this.executeOpTree(this.convertOpList(operatorList));
|
1187
|
+
this.svg = svg;
|
1188
|
+
this.transformMatrix = transformMatrix;
|
1189
|
+
this.current.fillColor = fillColor;
|
1190
|
+
this.current.strokeColor = strokeColor;
|
1191
|
+
tiling.appendChild(bbox.childNodes[0]);
|
1192
|
+
this.defs.appendChild(tiling);
|
1193
|
+
return "url(#".concat(tilingId, ")");
|
1194
|
+
}
|
1195
|
+
}, {
|
1196
|
+
key: "_makeShadingPattern",
|
1197
|
+
value: function _makeShadingPattern(args) {
|
1198
|
+
switch (args[0]) {
|
1199
|
+
case 'RadialAxial':
|
1200
|
+
var shadingId = "shading".concat(shadingCount++);
|
1201
|
+
var colorStops = args[2];
|
1202
|
+
var gradient;
|
1203
|
+
|
1204
|
+
switch (args[1]) {
|
1205
|
+
case 'axial':
|
1206
|
+
var point0 = args[3];
|
1207
|
+
var point1 = args[4];
|
1208
|
+
gradient = this.svgFactory.createElement('svg:linearGradient');
|
1209
|
+
gradient.setAttributeNS(null, 'id', shadingId);
|
1210
|
+
gradient.setAttributeNS(null, 'gradientUnits', 'userSpaceOnUse');
|
1211
|
+
gradient.setAttributeNS(null, 'x1', point0[0]);
|
1212
|
+
gradient.setAttributeNS(null, 'y1', point0[1]);
|
1213
|
+
gradient.setAttributeNS(null, 'x2', point1[0]);
|
1214
|
+
gradient.setAttributeNS(null, 'y2', point1[1]);
|
1215
|
+
break;
|
1216
|
+
|
1217
|
+
case 'radial':
|
1218
|
+
var focalPoint = args[3];
|
1219
|
+
var circlePoint = args[4];
|
1220
|
+
var focalRadius = args[5];
|
1221
|
+
var circleRadius = args[6];
|
1222
|
+
gradient = this.svgFactory.createElement('svg:radialGradient');
|
1223
|
+
gradient.setAttributeNS(null, 'id', shadingId);
|
1224
|
+
gradient.setAttributeNS(null, 'gradientUnits', 'userSpaceOnUse');
|
1225
|
+
gradient.setAttributeNS(null, 'cx', circlePoint[0]);
|
1226
|
+
gradient.setAttributeNS(null, 'cy', circlePoint[1]);
|
1227
|
+
gradient.setAttributeNS(null, 'r', circleRadius);
|
1228
|
+
gradient.setAttributeNS(null, 'fx', focalPoint[0]);
|
1229
|
+
gradient.setAttributeNS(null, 'fy', focalPoint[1]);
|
1230
|
+
gradient.setAttributeNS(null, 'fr', focalRadius);
|
1231
|
+
break;
|
1232
|
+
|
1233
|
+
default:
|
1234
|
+
throw new Error("Unknown RadialAxial type: ".concat(args[1]));
|
1235
|
+
}
|
1236
|
+
|
1237
|
+
var _iteratorNormalCompletion5 = true;
|
1238
|
+
var _didIteratorError5 = false;
|
1239
|
+
var _iteratorError5 = undefined;
|
1240
|
+
|
1241
|
+
try {
|
1242
|
+
for (var _iterator5 = colorStops[Symbol.iterator](), _step5; !(_iteratorNormalCompletion5 = (_step5 = _iterator5.next()).done); _iteratorNormalCompletion5 = true) {
|
1243
|
+
var colorStop = _step5.value;
|
1244
|
+
var stop = this.svgFactory.createElement('svg:stop');
|
1245
|
+
stop.setAttributeNS(null, 'offset', colorStop[0]);
|
1246
|
+
stop.setAttributeNS(null, 'stop-color', colorStop[1]);
|
1247
|
+
gradient.appendChild(stop);
|
1248
|
+
}
|
1249
|
+
} catch (err) {
|
1250
|
+
_didIteratorError5 = true;
|
1251
|
+
_iteratorError5 = err;
|
1252
|
+
} finally {
|
1253
|
+
try {
|
1254
|
+
if (!_iteratorNormalCompletion5 && _iterator5["return"] != null) {
|
1255
|
+
_iterator5["return"]();
|
1256
|
+
}
|
1257
|
+
} finally {
|
1258
|
+
if (_didIteratorError5) {
|
1259
|
+
throw _iteratorError5;
|
1260
|
+
}
|
1261
|
+
}
|
1262
|
+
}
|
1263
|
+
|
1264
|
+
this.defs.appendChild(gradient);
|
1265
|
+
return "url(#".concat(shadingId, ")");
|
1266
|
+
|
1267
|
+
case 'Mesh':
|
1268
|
+
(0, _util.warn)('Unimplemented pattern Mesh');
|
1269
|
+
return null;
|
1270
|
+
|
1271
|
+
case 'Dummy':
|
1272
|
+
return 'hotpink';
|
1273
|
+
|
1274
|
+
default:
|
1275
|
+
throw new Error("Unknown IR type: ".concat(args[0]));
|
1276
|
+
}
|
1277
|
+
}
|
1278
|
+
}, {
|
1279
|
+
key: "setDash",
|
1280
|
+
value: function setDash(dashArray, dashPhase) {
|
742
1281
|
this.current.dashArray = dashArray;
|
743
1282
|
this.current.dashPhase = dashPhase;
|
744
|
-
}
|
745
|
-
|
1283
|
+
}
|
1284
|
+
}, {
|
1285
|
+
key: "constructPath",
|
1286
|
+
value: function constructPath(ops, args) {
|
746
1287
|
var current = this.current;
|
747
1288
|
var x = current.x,
|
748
1289
|
y = current.y;
|
749
|
-
current.path = this.svgFactory.createElement('svg:path');
|
750
1290
|
var d = [];
|
751
|
-
var
|
752
|
-
|
753
|
-
|
754
|
-
|
755
|
-
|
756
|
-
|
757
|
-
|
758
|
-
|
759
|
-
|
760
|
-
|
761
|
-
|
762
|
-
|
763
|
-
|
764
|
-
|
765
|
-
|
766
|
-
|
767
|
-
|
768
|
-
|
769
|
-
|
770
|
-
|
771
|
-
|
772
|
-
|
773
|
-
|
774
|
-
|
775
|
-
|
776
|
-
|
777
|
-
|
778
|
-
|
779
|
-
|
780
|
-
|
781
|
-
|
782
|
-
|
783
|
-
|
784
|
-
|
785
|
-
|
786
|
-
|
787
|
-
|
788
|
-
|
789
|
-
|
790
|
-
|
791
|
-
|
792
|
-
|
793
|
-
|
1291
|
+
var j = 0;
|
1292
|
+
var _iteratorNormalCompletion6 = true;
|
1293
|
+
var _didIteratorError6 = false;
|
1294
|
+
var _iteratorError6 = undefined;
|
1295
|
+
|
1296
|
+
try {
|
1297
|
+
for (var _iterator6 = ops[Symbol.iterator](), _step6; !(_iteratorNormalCompletion6 = (_step6 = _iterator6.next()).done); _iteratorNormalCompletion6 = true) {
|
1298
|
+
var op = _step6.value;
|
1299
|
+
|
1300
|
+
switch (op | 0) {
|
1301
|
+
case _util.OPS.rectangle:
|
1302
|
+
x = args[j++];
|
1303
|
+
y = args[j++];
|
1304
|
+
var width = args[j++];
|
1305
|
+
var height = args[j++];
|
1306
|
+
var xw = x + width;
|
1307
|
+
var yh = y + height;
|
1308
|
+
d.push('M', pf(x), pf(y), 'L', pf(xw), pf(y), 'L', pf(xw), pf(yh), 'L', pf(x), pf(yh), 'Z');
|
1309
|
+
break;
|
1310
|
+
|
1311
|
+
case _util.OPS.moveTo:
|
1312
|
+
x = args[j++];
|
1313
|
+
y = args[j++];
|
1314
|
+
d.push('M', pf(x), pf(y));
|
1315
|
+
break;
|
1316
|
+
|
1317
|
+
case _util.OPS.lineTo:
|
1318
|
+
x = args[j++];
|
1319
|
+
y = args[j++];
|
1320
|
+
d.push('L', pf(x), pf(y));
|
1321
|
+
break;
|
1322
|
+
|
1323
|
+
case _util.OPS.curveTo:
|
1324
|
+
x = args[j + 4];
|
1325
|
+
y = args[j + 5];
|
1326
|
+
d.push('C', pf(args[j]), pf(args[j + 1]), pf(args[j + 2]), pf(args[j + 3]), pf(x), pf(y));
|
1327
|
+
j += 6;
|
1328
|
+
break;
|
1329
|
+
|
1330
|
+
case _util.OPS.curveTo2:
|
1331
|
+
x = args[j + 2];
|
1332
|
+
y = args[j + 3];
|
1333
|
+
d.push('C', pf(x), pf(y), pf(args[j]), pf(args[j + 1]), pf(args[j + 2]), pf(args[j + 3]));
|
1334
|
+
j += 4;
|
1335
|
+
break;
|
1336
|
+
|
1337
|
+
case _util.OPS.curveTo3:
|
1338
|
+
x = args[j + 2];
|
1339
|
+
y = args[j + 3];
|
1340
|
+
d.push('C', pf(args[j]), pf(args[j + 1]), pf(x), pf(y), pf(x), pf(y));
|
1341
|
+
j += 4;
|
1342
|
+
break;
|
1343
|
+
|
1344
|
+
case _util.OPS.closePath:
|
1345
|
+
d.push('Z');
|
1346
|
+
break;
|
1347
|
+
}
|
1348
|
+
}
|
1349
|
+
} catch (err) {
|
1350
|
+
_didIteratorError6 = true;
|
1351
|
+
_iteratorError6 = err;
|
1352
|
+
} finally {
|
1353
|
+
try {
|
1354
|
+
if (!_iteratorNormalCompletion6 && _iterator6["return"] != null) {
|
1355
|
+
_iterator6["return"]();
|
1356
|
+
}
|
1357
|
+
} finally {
|
1358
|
+
if (_didIteratorError6) {
|
1359
|
+
throw _iteratorError6;
|
1360
|
+
}
|
794
1361
|
}
|
795
1362
|
}
|
796
|
-
|
1363
|
+
|
1364
|
+
d = d.join(' ');
|
1365
|
+
|
1366
|
+
if (current.path && ops.length > 0 && ops[0] !== _util.OPS.rectangle && ops[0] !== _util.OPS.moveTo) {
|
1367
|
+
d = current.path.getAttributeNS(null, 'd') + d;
|
1368
|
+
} else {
|
1369
|
+
current.path = this.svgFactory.createElement('svg:path');
|
1370
|
+
|
1371
|
+
this._ensureTransformGroup().appendChild(current.path);
|
1372
|
+
}
|
1373
|
+
|
1374
|
+
current.path.setAttributeNS(null, 'd', d);
|
797
1375
|
current.path.setAttributeNS(null, 'fill', 'none');
|
798
|
-
this._ensureTransformGroup().appendChild(current.path);
|
799
1376
|
current.element = current.path;
|
800
1377
|
current.setCurrentPoint(x, y);
|
801
|
-
}
|
802
|
-
|
1378
|
+
}
|
1379
|
+
}, {
|
1380
|
+
key: "endPath",
|
1381
|
+
value: function endPath() {
|
1382
|
+
var current = this.current;
|
1383
|
+
current.path = null;
|
1384
|
+
|
803
1385
|
if (!this.pendingClip) {
|
804
1386
|
return;
|
805
1387
|
}
|
806
|
-
|
807
|
-
|
808
|
-
|
1388
|
+
|
1389
|
+
if (!current.element) {
|
1390
|
+
this.pendingClip = null;
|
1391
|
+
return;
|
1392
|
+
}
|
1393
|
+
|
1394
|
+
var clipId = "clippath".concat(clipCount++);
|
809
1395
|
var clipPath = this.svgFactory.createElement('svg:clipPath');
|
810
1396
|
clipPath.setAttributeNS(null, 'id', clipId);
|
811
1397
|
clipPath.setAttributeNS(null, 'transform', pm(this.transformMatrix));
|
812
|
-
var clipElement = current.element.cloneNode();
|
1398
|
+
var clipElement = current.element.cloneNode(true);
|
1399
|
+
|
813
1400
|
if (this.pendingClip === 'evenodd') {
|
814
1401
|
clipElement.setAttributeNS(null, 'clip-rule', 'evenodd');
|
815
1402
|
} else {
|
816
1403
|
clipElement.setAttributeNS(null, 'clip-rule', 'nonzero');
|
817
1404
|
}
|
1405
|
+
|
818
1406
|
this.pendingClip = null;
|
819
1407
|
clipPath.appendChild(clipElement);
|
820
1408
|
this.defs.appendChild(clipPath);
|
1409
|
+
|
821
1410
|
if (current.activeClipUrl) {
|
822
1411
|
current.clipGroup = null;
|
823
1412
|
this.extraStack.forEach(function (prev) {
|
@@ -825,128 +1414,227 @@ var SVGGraphics = function SVGGraphics() {
|
|
825
1414
|
});
|
826
1415
|
clipPath.setAttributeNS(null, 'clip-path', current.activeClipUrl);
|
827
1416
|
}
|
828
|
-
|
1417
|
+
|
1418
|
+
current.activeClipUrl = "url(#".concat(clipId, ")");
|
829
1419
|
this.tgrp = null;
|
830
|
-
}
|
831
|
-
|
1420
|
+
}
|
1421
|
+
}, {
|
1422
|
+
key: "clip",
|
1423
|
+
value: function clip(type) {
|
832
1424
|
this.pendingClip = type;
|
833
|
-
}
|
834
|
-
|
1425
|
+
}
|
1426
|
+
}, {
|
1427
|
+
key: "closePath",
|
1428
|
+
value: function closePath() {
|
835
1429
|
var current = this.current;
|
1430
|
+
|
836
1431
|
if (current.path) {
|
837
|
-
var d = current.path.getAttributeNS(null, 'd');
|
838
|
-
d += 'Z';
|
1432
|
+
var d = "".concat(current.path.getAttributeNS(null, 'd'), "Z");
|
839
1433
|
current.path.setAttributeNS(null, 'd', d);
|
840
1434
|
}
|
841
|
-
}
|
842
|
-
|
1435
|
+
}
|
1436
|
+
}, {
|
1437
|
+
key: "setLeading",
|
1438
|
+
value: function setLeading(leading) {
|
843
1439
|
this.current.leading = -leading;
|
844
|
-
}
|
845
|
-
|
1440
|
+
}
|
1441
|
+
}, {
|
1442
|
+
key: "setTextRise",
|
1443
|
+
value: function setTextRise(textRise) {
|
846
1444
|
this.current.textRise = textRise;
|
847
|
-
}
|
848
|
-
|
1445
|
+
}
|
1446
|
+
}, {
|
1447
|
+
key: "setTextRenderingMode",
|
1448
|
+
value: function setTextRenderingMode(textRenderingMode) {
|
1449
|
+
this.current.textRenderingMode = textRenderingMode;
|
1450
|
+
}
|
1451
|
+
}, {
|
1452
|
+
key: "setHScale",
|
1453
|
+
value: function setHScale(scale) {
|
849
1454
|
this.current.textHScale = scale / 100;
|
850
|
-
}
|
851
|
-
|
852
|
-
|
853
|
-
|
854
|
-
|
855
|
-
|
856
|
-
|
857
|
-
|
858
|
-
|
859
|
-
|
860
|
-
|
861
|
-
|
862
|
-
|
863
|
-
|
864
|
-
|
865
|
-
|
866
|
-
|
867
|
-
|
868
|
-
|
869
|
-
|
870
|
-
|
871
|
-
|
872
|
-
|
873
|
-
|
874
|
-
|
875
|
-
|
876
|
-
|
877
|
-
|
878
|
-
|
879
|
-
|
880
|
-
|
881
|
-
|
882
|
-
|
883
|
-
|
1455
|
+
}
|
1456
|
+
}, {
|
1457
|
+
key: "setRenderingIntent",
|
1458
|
+
value: function setRenderingIntent(intent) {}
|
1459
|
+
}, {
|
1460
|
+
key: "setFlatness",
|
1461
|
+
value: function setFlatness(flatness) {}
|
1462
|
+
}, {
|
1463
|
+
key: "setGState",
|
1464
|
+
value: function setGState(states) {
|
1465
|
+
var _iteratorNormalCompletion7 = true;
|
1466
|
+
var _didIteratorError7 = false;
|
1467
|
+
var _iteratorError7 = undefined;
|
1468
|
+
|
1469
|
+
try {
|
1470
|
+
for (var _iterator7 = states[Symbol.iterator](), _step7; !(_iteratorNormalCompletion7 = (_step7 = _iterator7.next()).done); _iteratorNormalCompletion7 = true) {
|
1471
|
+
var _step7$value = _slicedToArray(_step7.value, 2),
|
1472
|
+
key = _step7$value[0],
|
1473
|
+
value = _step7$value[1];
|
1474
|
+
|
1475
|
+
switch (key) {
|
1476
|
+
case 'LW':
|
1477
|
+
this.setLineWidth(value);
|
1478
|
+
break;
|
1479
|
+
|
1480
|
+
case 'LC':
|
1481
|
+
this.setLineCap(value);
|
1482
|
+
break;
|
1483
|
+
|
1484
|
+
case 'LJ':
|
1485
|
+
this.setLineJoin(value);
|
1486
|
+
break;
|
1487
|
+
|
1488
|
+
case 'ML':
|
1489
|
+
this.setMiterLimit(value);
|
1490
|
+
break;
|
1491
|
+
|
1492
|
+
case 'D':
|
1493
|
+
this.setDash(value[0], value[1]);
|
1494
|
+
break;
|
1495
|
+
|
1496
|
+
case 'RI':
|
1497
|
+
this.setRenderingIntent(value);
|
1498
|
+
break;
|
1499
|
+
|
1500
|
+
case 'FL':
|
1501
|
+
this.setFlatness(value);
|
1502
|
+
break;
|
1503
|
+
|
1504
|
+
case 'Font':
|
1505
|
+
this.setFont(value);
|
1506
|
+
break;
|
1507
|
+
|
1508
|
+
case 'CA':
|
1509
|
+
this.setStrokeAlpha(value);
|
1510
|
+
break;
|
1511
|
+
|
1512
|
+
case 'ca':
|
1513
|
+
this.setFillAlpha(value);
|
1514
|
+
break;
|
1515
|
+
|
1516
|
+
default:
|
1517
|
+
(0, _util.warn)("Unimplemented graphic state operator ".concat(key));
|
1518
|
+
break;
|
1519
|
+
}
|
1520
|
+
}
|
1521
|
+
} catch (err) {
|
1522
|
+
_didIteratorError7 = true;
|
1523
|
+
_iteratorError7 = err;
|
1524
|
+
} finally {
|
1525
|
+
try {
|
1526
|
+
if (!_iteratorNormalCompletion7 && _iterator7["return"] != null) {
|
1527
|
+
_iterator7["return"]();
|
1528
|
+
}
|
1529
|
+
} finally {
|
1530
|
+
if (_didIteratorError7) {
|
1531
|
+
throw _iteratorError7;
|
1532
|
+
}
|
884
1533
|
}
|
885
1534
|
}
|
886
|
-
}
|
887
|
-
|
1535
|
+
}
|
1536
|
+
}, {
|
1537
|
+
key: "fill",
|
1538
|
+
value: function fill() {
|
888
1539
|
var current = this.current;
|
1540
|
+
|
889
1541
|
if (current.element) {
|
890
1542
|
current.element.setAttributeNS(null, 'fill', current.fillColor);
|
891
1543
|
current.element.setAttributeNS(null, 'fill-opacity', current.fillAlpha);
|
892
1544
|
this.endPath();
|
893
1545
|
}
|
894
|
-
}
|
895
|
-
|
1546
|
+
}
|
1547
|
+
}, {
|
1548
|
+
key: "stroke",
|
1549
|
+
value: function stroke() {
|
896
1550
|
var current = this.current;
|
1551
|
+
|
897
1552
|
if (current.element) {
|
898
|
-
|
899
|
-
|
900
|
-
current.element.setAttributeNS(null, 'stroke-miterlimit', pf(current.miterLimit));
|
901
|
-
current.element.setAttributeNS(null, 'stroke-linecap', current.lineCap);
|
902
|
-
current.element.setAttributeNS(null, 'stroke-linejoin', current.lineJoin);
|
903
|
-
current.element.setAttributeNS(null, 'stroke-width', pf(current.lineWidth) + 'px');
|
904
|
-
current.element.setAttributeNS(null, 'stroke-dasharray', current.dashArray.map(pf).join(' '));
|
905
|
-
current.element.setAttributeNS(null, 'stroke-dashoffset', pf(current.dashPhase) + 'px');
|
1553
|
+
this._setStrokeAttributes(current.element);
|
1554
|
+
|
906
1555
|
current.element.setAttributeNS(null, 'fill', 'none');
|
907
1556
|
this.endPath();
|
908
1557
|
}
|
909
|
-
}
|
910
|
-
|
1558
|
+
}
|
1559
|
+
}, {
|
1560
|
+
key: "_setStrokeAttributes",
|
1561
|
+
value: function _setStrokeAttributes(element) {
|
1562
|
+
var lineWidthScale = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
|
1563
|
+
var current = this.current;
|
1564
|
+
var dashArray = current.dashArray;
|
1565
|
+
|
1566
|
+
if (lineWidthScale !== 1 && dashArray.length > 0) {
|
1567
|
+
dashArray = dashArray.map(function (value) {
|
1568
|
+
return lineWidthScale * value;
|
1569
|
+
});
|
1570
|
+
}
|
1571
|
+
|
1572
|
+
element.setAttributeNS(null, 'stroke', current.strokeColor);
|
1573
|
+
element.setAttributeNS(null, 'stroke-opacity', current.strokeAlpha);
|
1574
|
+
element.setAttributeNS(null, 'stroke-miterlimit', pf(current.miterLimit));
|
1575
|
+
element.setAttributeNS(null, 'stroke-linecap', current.lineCap);
|
1576
|
+
element.setAttributeNS(null, 'stroke-linejoin', current.lineJoin);
|
1577
|
+
element.setAttributeNS(null, 'stroke-width', pf(lineWidthScale * current.lineWidth) + 'px');
|
1578
|
+
element.setAttributeNS(null, 'stroke-dasharray', dashArray.map(pf).join(' '));
|
1579
|
+
element.setAttributeNS(null, 'stroke-dashoffset', pf(lineWidthScale * current.dashPhase) + 'px');
|
1580
|
+
}
|
1581
|
+
}, {
|
1582
|
+
key: "eoFill",
|
1583
|
+
value: function eoFill() {
|
911
1584
|
if (this.current.element) {
|
912
1585
|
this.current.element.setAttributeNS(null, 'fill-rule', 'evenodd');
|
913
1586
|
}
|
1587
|
+
|
914
1588
|
this.fill();
|
915
|
-
}
|
916
|
-
|
1589
|
+
}
|
1590
|
+
}, {
|
1591
|
+
key: "fillStroke",
|
1592
|
+
value: function fillStroke() {
|
917
1593
|
this.stroke();
|
918
1594
|
this.fill();
|
919
|
-
}
|
920
|
-
|
1595
|
+
}
|
1596
|
+
}, {
|
1597
|
+
key: "eoFillStroke",
|
1598
|
+
value: function eoFillStroke() {
|
921
1599
|
if (this.current.element) {
|
922
1600
|
this.current.element.setAttributeNS(null, 'fill-rule', 'evenodd');
|
923
1601
|
}
|
1602
|
+
|
924
1603
|
this.fillStroke();
|
925
|
-
}
|
926
|
-
|
1604
|
+
}
|
1605
|
+
}, {
|
1606
|
+
key: "closeStroke",
|
1607
|
+
value: function closeStroke() {
|
927
1608
|
this.closePath();
|
928
1609
|
this.stroke();
|
929
|
-
}
|
930
|
-
|
1610
|
+
}
|
1611
|
+
}, {
|
1612
|
+
key: "closeFillStroke",
|
1613
|
+
value: function closeFillStroke() {
|
931
1614
|
this.closePath();
|
932
1615
|
this.fillStroke();
|
933
|
-
}
|
934
|
-
|
1616
|
+
}
|
1617
|
+
}, {
|
1618
|
+
key: "closeEOFillStroke",
|
1619
|
+
value: function closeEOFillStroke() {
|
935
1620
|
this.closePath();
|
936
1621
|
this.eoFillStroke();
|
937
|
-
}
|
938
|
-
|
939
|
-
|
940
|
-
|
1622
|
+
}
|
1623
|
+
}, {
|
1624
|
+
key: "paintSolidColorImageMask",
|
1625
|
+
value: function paintSolidColorImageMask() {
|
941
1626
|
var rect = this.svgFactory.createElement('svg:rect');
|
942
1627
|
rect.setAttributeNS(null, 'x', '0');
|
943
1628
|
rect.setAttributeNS(null, 'y', '0');
|
944
1629
|
rect.setAttributeNS(null, 'width', '1px');
|
945
1630
|
rect.setAttributeNS(null, 'height', '1px');
|
946
|
-
rect.setAttributeNS(null, 'fill', current.fillColor);
|
1631
|
+
rect.setAttributeNS(null, 'fill', this.current.fillColor);
|
1632
|
+
|
947
1633
|
this._ensureTransformGroup().appendChild(rect);
|
948
|
-
}
|
949
|
-
|
1634
|
+
}
|
1635
|
+
}, {
|
1636
|
+
key: "paintJpegXObject",
|
1637
|
+
value: function paintJpegXObject(objId, w, h) {
|
950
1638
|
var imgObj = this.objs.get(objId);
|
951
1639
|
var imgEl = this.svgFactory.createElement('svg:image');
|
952
1640
|
imgEl.setAttributeNS(XLINK_NS, 'xlink:href', imgObj.src);
|
@@ -954,18 +1642,25 @@ var SVGGraphics = function SVGGraphics() {
|
|
954
1642
|
imgEl.setAttributeNS(null, 'height', pf(h));
|
955
1643
|
imgEl.setAttributeNS(null, 'x', '0');
|
956
1644
|
imgEl.setAttributeNS(null, 'y', pf(-h));
|
957
|
-
imgEl.setAttributeNS(null, 'transform',
|
1645
|
+
imgEl.setAttributeNS(null, 'transform', "scale(".concat(pf(1 / w), " ").concat(pf(-1 / h), ")"));
|
1646
|
+
|
958
1647
|
this._ensureTransformGroup().appendChild(imgEl);
|
959
|
-
}
|
960
|
-
|
1648
|
+
}
|
1649
|
+
}, {
|
1650
|
+
key: "paintImageXObject",
|
1651
|
+
value: function paintImageXObject(objId) {
|
961
1652
|
var imgData = this.objs.get(objId);
|
1653
|
+
|
962
1654
|
if (!imgData) {
|
963
|
-
(0, _util.warn)(
|
1655
|
+
(0, _util.warn)("Dependent image with object ID ".concat(objId, " is not ready yet"));
|
964
1656
|
return;
|
965
1657
|
}
|
1658
|
+
|
966
1659
|
this.paintInlineImageXObject(imgData);
|
967
|
-
}
|
968
|
-
|
1660
|
+
}
|
1661
|
+
}, {
|
1662
|
+
key: "paintInlineImageXObject",
|
1663
|
+
value: function paintInlineImageXObject(imgData, mask) {
|
969
1664
|
var width = imgData.width;
|
970
1665
|
var height = imgData.height;
|
971
1666
|
var imgSrc = convertImgDataToPng(imgData, this.forceDataSchema, !!mask);
|
@@ -982,19 +1677,22 @@ var SVGGraphics = function SVGGraphics() {
|
|
982
1677
|
imgEl.setAttributeNS(null, 'y', pf(-height));
|
983
1678
|
imgEl.setAttributeNS(null, 'width', pf(width) + 'px');
|
984
1679
|
imgEl.setAttributeNS(null, 'height', pf(height) + 'px');
|
985
|
-
imgEl.setAttributeNS(null, 'transform',
|
1680
|
+
imgEl.setAttributeNS(null, 'transform', "scale(".concat(pf(1 / width), " ").concat(pf(-1 / height), ")"));
|
1681
|
+
|
986
1682
|
if (mask) {
|
987
1683
|
mask.appendChild(imgEl);
|
988
1684
|
} else {
|
989
1685
|
this._ensureTransformGroup().appendChild(imgEl);
|
990
1686
|
}
|
991
|
-
}
|
992
|
-
|
1687
|
+
}
|
1688
|
+
}, {
|
1689
|
+
key: "paintImageMaskXObject",
|
1690
|
+
value: function paintImageMaskXObject(imgData) {
|
993
1691
|
var current = this.current;
|
994
1692
|
var width = imgData.width;
|
995
1693
|
var height = imgData.height;
|
996
1694
|
var fillColor = current.fillColor;
|
997
|
-
current.maskId =
|
1695
|
+
current.maskId = "mask".concat(maskCount++);
|
998
1696
|
var mask = this.svgFactory.createElement('svg:mask');
|
999
1697
|
mask.setAttributeNS(null, 'id', current.maskId);
|
1000
1698
|
var rect = this.svgFactory.createElement('svg:rect');
|
@@ -1003,16 +1701,21 @@ var SVGGraphics = function SVGGraphics() {
|
|
1003
1701
|
rect.setAttributeNS(null, 'width', pf(width));
|
1004
1702
|
rect.setAttributeNS(null, 'height', pf(height));
|
1005
1703
|
rect.setAttributeNS(null, 'fill', fillColor);
|
1006
|
-
rect.setAttributeNS(null, 'mask',
|
1704
|
+
rect.setAttributeNS(null, 'mask', "url(#".concat(current.maskId, ")"));
|
1007
1705
|
this.defs.appendChild(mask);
|
1706
|
+
|
1008
1707
|
this._ensureTransformGroup().appendChild(rect);
|
1708
|
+
|
1009
1709
|
this.paintInlineImageXObject(imgData, mask);
|
1010
|
-
}
|
1011
|
-
|
1710
|
+
}
|
1711
|
+
}, {
|
1712
|
+
key: "paintFormXObjectBegin",
|
1713
|
+
value: function paintFormXObjectBegin(matrix, bbox) {
|
1012
1714
|
if (Array.isArray(matrix) && matrix.length === 6) {
|
1013
1715
|
this.transform(matrix[0], matrix[1], matrix[2], matrix[3], matrix[4], matrix[5]);
|
1014
1716
|
}
|
1015
|
-
|
1717
|
+
|
1718
|
+
if (bbox) {
|
1016
1719
|
var width = bbox[2] - bbox[0];
|
1017
1720
|
var height = bbox[3] - bbox[1];
|
1018
1721
|
var cliprect = this.svgFactory.createElement('svg:rect');
|
@@ -1024,9 +1727,13 @@ var SVGGraphics = function SVGGraphics() {
|
|
1024
1727
|
this.clip('nonzero');
|
1025
1728
|
this.endPath();
|
1026
1729
|
}
|
1027
|
-
}
|
1028
|
-
|
1029
|
-
|
1730
|
+
}
|
1731
|
+
}, {
|
1732
|
+
key: "paintFormXObjectEnd",
|
1733
|
+
value: function paintFormXObjectEnd() {}
|
1734
|
+
}, {
|
1735
|
+
key: "_initialize",
|
1736
|
+
value: function _initialize(viewport) {
|
1030
1737
|
var svg = this.svgFactory.create(viewport.width, viewport.height);
|
1031
1738
|
var definitions = this.svgFactory.createElement('svg:defs');
|
1032
1739
|
svg.appendChild(definitions);
|
@@ -1036,31 +1743,37 @@ var SVGGraphics = function SVGGraphics() {
|
|
1036
1743
|
svg.appendChild(rootGroup);
|
1037
1744
|
this.svg = rootGroup;
|
1038
1745
|
return svg;
|
1039
|
-
}
|
1040
|
-
|
1041
|
-
|
1746
|
+
}
|
1747
|
+
}, {
|
1748
|
+
key: "_ensureClipGroup",
|
1749
|
+
value: function _ensureClipGroup() {
|
1042
1750
|
if (!this.current.clipGroup) {
|
1043
1751
|
var clipGroup = this.svgFactory.createElement('svg:g');
|
1044
1752
|
clipGroup.setAttributeNS(null, 'clip-path', this.current.activeClipUrl);
|
1045
1753
|
this.svg.appendChild(clipGroup);
|
1046
1754
|
this.current.clipGroup = clipGroup;
|
1047
1755
|
}
|
1756
|
+
|
1048
1757
|
return this.current.clipGroup;
|
1049
|
-
}
|
1050
|
-
|
1758
|
+
}
|
1759
|
+
}, {
|
1760
|
+
key: "_ensureTransformGroup",
|
1761
|
+
value: function _ensureTransformGroup() {
|
1051
1762
|
if (!this.tgrp) {
|
1052
1763
|
this.tgrp = this.svgFactory.createElement('svg:g');
|
1053
1764
|
this.tgrp.setAttributeNS(null, 'transform', pm(this.transformMatrix));
|
1765
|
+
|
1054
1766
|
if (this.current.activeClipUrl) {
|
1055
1767
|
this._ensureClipGroup().appendChild(this.tgrp);
|
1056
1768
|
} else {
|
1057
1769
|
this.svg.appendChild(this.tgrp);
|
1058
1770
|
}
|
1059
1771
|
}
|
1772
|
+
|
1060
1773
|
return this.tgrp;
|
1061
1774
|
}
|
1062
|
-
};
|
1775
|
+
}]);
|
1776
|
+
|
1063
1777
|
return SVGGraphics;
|
1064
1778
|
}();
|
1065
|
-
}
|
1066
|
-
exports.SVGGraphics = SVGGraphics;
|
1779
|
+
}
|