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.

Files changed (159) hide show
  1. package/bower.json +1 -1
  2. package/build/pdf.js +15329 -11095
  3. package/build/pdf.js.map +1 -1
  4. package/build/pdf.min.js +1 -1
  5. package/build/pdf.worker.js +12497 -4184
  6. package/build/pdf.worker.js.map +1 -1
  7. package/build/pdf.worker.min.js +1 -1
  8. package/image_decoders/pdf.image_decoders.js +3438 -1209
  9. package/image_decoders/pdf.image_decoders.js.map +1 -1
  10. package/image_decoders/pdf.image_decoders.min.js +1 -1
  11. package/lib/core/annotation.js +335 -109
  12. package/lib/core/arithmetic_decoder.js +274 -244
  13. package/lib/core/bidi.js +64 -5
  14. package/lib/core/ccitt.js +172 -17
  15. package/lib/core/ccitt_stream.js +14 -5
  16. package/lib/core/cff_parser.js +304 -28
  17. package/lib/core/charsets.js +4 -3
  18. package/lib/core/chunked_stream.js +379 -149
  19. package/lib/core/cmap.js +210 -40
  20. package/lib/core/colorspace.js +332 -187
  21. package/lib/core/crypto.js +289 -44
  22. package/lib/core/document.js +508 -249
  23. package/lib/core/encodings.js +18 -9
  24. package/lib/core/evaluator.js +657 -119
  25. package/lib/core/font_renderer.js +217 -34
  26. package/lib/core/fonts.js +632 -41
  27. package/lib/core/function.js +252 -26
  28. package/lib/core/glyphlist.js +2 -1
  29. package/lib/core/image.js +124 -27
  30. package/lib/core/jbig2.js +425 -65
  31. package/lib/core/jbig2_stream.js +18 -7
  32. package/lib/core/jpeg_stream.js +24 -8
  33. package/lib/core/jpg.js +208 -16
  34. package/lib/core/jpx.js +395 -5
  35. package/lib/core/jpx_stream.js +17 -5
  36. package/lib/core/metrics.js +3 -3
  37. package/lib/core/murmurhash3.js +23 -5
  38. package/lib/core/obj.js +625 -132
  39. package/lib/core/operator_list.js +104 -3
  40. package/lib/core/parser.js +262 -25
  41. package/lib/core/pattern.js +144 -12
  42. package/lib/core/pdf_manager.js +104 -70
  43. package/lib/core/primitives.js +74 -21
  44. package/lib/core/ps_parser.js +133 -44
  45. package/lib/core/standard_fonts.js +9 -9
  46. package/lib/core/stream.js +283 -31
  47. package/lib/core/type1_parser.js +138 -6
  48. package/lib/core/unicode.js +28 -1
  49. package/lib/core/worker.js +192 -57
  50. package/lib/display/annotation_layer.js +303 -123
  51. package/lib/display/api.js +1073 -574
  52. package/lib/display/api_compatibility.js +4 -1
  53. package/lib/display/canvas.js +314 -18
  54. package/lib/display/content_disposition.js +70 -23
  55. package/lib/display/dom_utils.js +112 -59
  56. package/lib/display/fetch_stream.js +95 -50
  57. package/lib/display/font_loader.js +250 -132
  58. package/lib/display/metadata.js +37 -15
  59. package/lib/display/network.js +123 -34
  60. package/lib/display/network_utils.js +23 -10
  61. package/lib/display/node_stream.js +162 -65
  62. package/lib/display/pattern_helper.js +57 -6
  63. package/lib/display/svg.js +194 -18
  64. package/lib/display/text_layer.js +128 -14
  65. package/lib/display/transport_stream.js +83 -27
  66. package/lib/display/webgl.js +63 -17
  67. package/lib/display/worker_options.js +4 -3
  68. package/lib/display/xml_parser.js +162 -52
  69. package/lib/examples/node/domstubs.js +56 -3
  70. package/lib/pdf.js +15 -2
  71. package/lib/pdf.worker.js +4 -2
  72. package/lib/shared/compatibility.js +129 -26
  73. package/lib/shared/global_scope.js +1 -1
  74. package/lib/shared/is_node.js +3 -3
  75. package/lib/shared/message_handler.js +103 -45
  76. package/lib/shared/streams_polyfill.js +20 -16
  77. package/lib/shared/url_polyfill.js +8 -2
  78. package/lib/shared/util.js +246 -84
  79. package/lib/test/unit/annotation_spec.js +99 -73
  80. package/lib/test/unit/api_spec.js +347 -113
  81. package/lib/test/unit/bidi_spec.js +6 -6
  82. package/lib/test/unit/cff_parser_spec.js +17 -5
  83. package/lib/test/unit/clitests_helper.js +7 -8
  84. package/lib/test/unit/cmap_spec.js +79 -25
  85. package/lib/test/unit/colorspace_spec.js +65 -18
  86. package/lib/test/unit/crypto_spec.js +16 -4
  87. package/lib/test/unit/custom_spec.js +40 -52
  88. package/lib/test/unit/display_svg_spec.js +32 -16
  89. package/lib/test/unit/document_spec.js +2 -2
  90. package/lib/test/unit/dom_utils_spec.js +8 -8
  91. package/lib/test/unit/encodings_spec.js +24 -44
  92. package/lib/test/unit/evaluator_spec.js +15 -8
  93. package/lib/test/unit/function_spec.js +16 -4
  94. package/lib/test/unit/jasmine-boot.js +29 -16
  95. package/lib/test/unit/message_handler_spec.js +19 -6
  96. package/lib/test/unit/metadata_spec.js +64 -11
  97. package/lib/test/unit/murmurhash3_spec.js +2 -2
  98. package/lib/test/unit/network_spec.js +19 -4
  99. package/lib/test/unit/network_utils_spec.js +6 -4
  100. package/lib/test/unit/node_stream_spec.js +50 -26
  101. package/lib/test/unit/parser_spec.js +13 -29
  102. package/lib/test/unit/pdf_find_controller_spec.js +144 -32
  103. package/lib/test/unit/pdf_find_utils_spec.js +10 -9
  104. package/lib/test/unit/pdf_history_spec.js +20 -8
  105. package/lib/test/unit/primitives_spec.js +23 -3
  106. package/lib/test/unit/stream_spec.js +8 -3
  107. package/lib/test/unit/test_utils.js +89 -26
  108. package/lib/test/unit/testreporter.js +19 -1
  109. package/lib/test/unit/type1_parser_spec.js +7 -5
  110. package/lib/test/unit/ui_utils_spec.js +162 -38
  111. package/lib/test/unit/unicode_spec.js +13 -10
  112. package/lib/test/unit/util_spec.js +89 -9
  113. package/lib/web/annotation_layer_builder.js +38 -21
  114. package/lib/web/app.js +610 -245
  115. package/lib/web/app_options.js +54 -34
  116. package/lib/web/base_viewer.js +359 -162
  117. package/lib/web/chromecom.js +159 -80
  118. package/lib/web/debugger.js +161 -17
  119. package/lib/web/download_manager.js +29 -11
  120. package/lib/web/firefox_print_service.js +16 -8
  121. package/lib/web/firefoxcom.js +127 -91
  122. package/lib/web/genericcom.js +50 -31
  123. package/lib/web/genericl10n.js +46 -34
  124. package/lib/web/grab_to_pan.js +25 -3
  125. package/lib/web/interfaces.js +108 -61
  126. package/lib/web/overlay_manager.js +67 -45
  127. package/lib/web/password_prompt.js +20 -12
  128. package/lib/web/pdf_attachment_viewer.js +37 -17
  129. package/lib/web/pdf_cursor_tools.js +38 -15
  130. package/lib/web/pdf_document_properties.js +65 -24
  131. package/lib/web/pdf_find_bar.js +48 -20
  132. package/lib/web/pdf_find_controller.js +290 -89
  133. package/lib/web/pdf_find_utils.js +19 -3
  134. package/lib/web/pdf_history.js +186 -49
  135. package/lib/web/pdf_link_service.js +127 -52
  136. package/lib/web/pdf_outline_viewer.js +71 -21
  137. package/lib/web/pdf_page_view.js +188 -63
  138. package/lib/web/pdf_presentation_mode.js +98 -33
  139. package/lib/web/pdf_print_service.js +54 -10
  140. package/lib/web/pdf_rendering_queue.js +26 -4
  141. package/lib/web/pdf_sidebar.js +116 -62
  142. package/lib/web/pdf_sidebar_resizer.js +41 -15
  143. package/lib/web/pdf_single_page_viewer.js +65 -68
  144. package/lib/web/pdf_thumbnail_view.js +102 -31
  145. package/lib/web/pdf_thumbnail_viewer.js +62 -22
  146. package/lib/web/pdf_viewer.component.js +111 -31
  147. package/lib/web/pdf_viewer.js +80 -60
  148. package/lib/web/preferences.js +61 -39
  149. package/lib/web/secondary_toolbar.js +101 -82
  150. package/lib/web/text_layer_builder.js +124 -69
  151. package/lib/web/toolbar.js +67 -27
  152. package/lib/web/ui_utils.js +284 -128
  153. package/lib/web/view_history.js +75 -51
  154. package/lib/web/viewer_compatibility.js +2 -1
  155. package/package.json +1 -1
  156. package/web/pdf_viewer.css +1 -1
  157. package/web/pdf_viewer.js +2200 -973
  158. package/web/pdf_viewer.js.map +1 -1
  159. package/lib/web/dom_events.js +0 -140
@@ -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
- 'use strict';
22
+ "use strict";
23
23
 
24
24
  Object.defineProperty(exports, "__esModule", {
25
25
  value: true
26
26
  });
27
- exports.SVGGraphics = undefined;
27
+ exports.SVGGraphics = void 0;
28
28
 
29
- var _util = require('../shared/util');
29
+ var _util = require("../shared/util");
30
30
 
31
- var _dom_utils = require('./dom_utils');
31
+ var _dom_utils = require("./dom_utils");
32
32
 
33
- var _is_node = require('../shared/is_node');
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, _is_node2.default)()) {
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
- var output = require('zlib').deflateSync(input, { level: 9 });
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
- this.current.lineWidth = width;
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
- if (Array.isArray(bbox) && bbox.length === 4) {
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
+ }