pdfjs-dist 2.2.228 → 2.6.347

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 (229) hide show
  1. package/README.md +4 -0
  2. package/bower.json +1 -1
  3. package/build/pdf.js +8816 -19300
  4. package/build/pdf.js.map +1 -1
  5. package/build/pdf.min.js +22 -1
  6. package/build/pdf.worker.entry.js +5 -3
  7. package/build/pdf.worker.js +27185 -35746
  8. package/build/pdf.worker.js.map +1 -1
  9. package/build/pdf.worker.min.js +22 -1
  10. package/es5/build/pdf.js +26665 -0
  11. package/es5/build/pdf.js.map +1 -0
  12. package/es5/build/pdf.min.js +22 -0
  13. package/{lib/shared/global_scope.js → es5/build/pdf.worker.entry.js} +5 -10
  14. package/es5/build/pdf.worker.js +61231 -0
  15. package/es5/build/pdf.worker.js.map +1 -0
  16. package/es5/build/pdf.worker.min.js +22 -0
  17. package/es5/image_decoders/pdf.image_decoders.js +12529 -0
  18. package/es5/image_decoders/pdf.image_decoders.js.map +1 -0
  19. package/es5/image_decoders/pdf.image_decoders.min.js +22 -0
  20. package/es5/web/images/annotation-check.svg +11 -0
  21. package/es5/web/images/annotation-comment.svg +16 -0
  22. package/es5/web/images/annotation-help.svg +26 -0
  23. package/es5/web/images/annotation-insert.svg +10 -0
  24. package/es5/web/images/annotation-key.svg +11 -0
  25. package/es5/web/images/annotation-newparagraph.svg +11 -0
  26. package/es5/web/images/annotation-noicon.svg +7 -0
  27. package/es5/web/images/annotation-note.svg +42 -0
  28. package/es5/web/images/annotation-paragraph.svg +16 -0
  29. package/es5/web/images/loading-icon.gif +0 -0
  30. package/es5/web/images/shadow.png +0 -0
  31. package/es5/web/pdf_viewer.css +406 -0
  32. package/es5/web/pdf_viewer.js +7886 -0
  33. package/es5/web/pdf_viewer.js.map +1 -0
  34. package/image_decoders/pdf.image_decoders.js +1498 -4832
  35. package/image_decoders/pdf.image_decoders.js.map +1 -1
  36. package/image_decoders/pdf.image_decoders.min.js +22 -1
  37. package/lib/README.md +7 -0
  38. package/lib/core/annotation.js +1144 -927
  39. package/lib/core/arithmetic_decoder.js +81 -97
  40. package/lib/core/bidi.js +54 -46
  41. package/lib/core/ccitt.js +88 -81
  42. package/lib/core/ccitt_stream.js +15 -14
  43. package/lib/core/cff_parser.js +747 -716
  44. package/lib/core/charsets.js +4 -4
  45. package/lib/core/chunked_stream.js +462 -553
  46. package/lib/core/cmap.js +231 -277
  47. package/lib/core/colorspace.js +715 -857
  48. package/lib/core/core_utils.js +57 -52
  49. package/lib/core/crypto.js +416 -437
  50. package/lib/core/document.js +629 -670
  51. package/lib/core/encodings.js +15 -15
  52. package/lib/core/evaluator.js +3229 -2800
  53. package/lib/core/font_renderer.js +135 -178
  54. package/lib/core/fonts.js +602 -534
  55. package/lib/core/function.js +355 -279
  56. package/lib/core/glyphlist.js +4527 -4526
  57. package/lib/core/image.js +442 -439
  58. package/lib/core/image_utils.js +221 -61
  59. package/lib/core/jbig2.js +325 -316
  60. package/lib/core/jbig2_stream.js +18 -17
  61. package/lib/core/jpeg_stream.js +21 -26
  62. package/lib/core/jpg.js +289 -233
  63. package/lib/core/jpx.js +161 -143
  64. package/lib/core/jpx_stream.js +28 -28
  65. package/lib/core/metrics.js +2928 -2928
  66. package/lib/core/murmurhash3.js +87 -102
  67. package/lib/core/obj.js +1343 -1300
  68. package/lib/core/operator_list.js +90 -67
  69. package/lib/core/parser.js +990 -987
  70. package/lib/core/pattern.js +105 -77
  71. package/lib/core/pdf_manager.js +149 -316
  72. package/lib/core/primitives.js +156 -104
  73. package/lib/core/ps_parser.js +175 -214
  74. package/lib/core/standard_fonts.js +237 -236
  75. package/lib/core/stream.js +94 -74
  76. package/lib/core/type1_parser.js +89 -69
  77. package/lib/core/unicode.js +1654 -1654
  78. package/lib/core/worker.js +275 -290
  79. package/lib/core/worker_stream.js +101 -210
  80. package/lib/core/writer.js +242 -0
  81. package/lib/display/annotation_layer.js +772 -1041
  82. package/lib/display/annotation_storage.js +89 -0
  83. package/lib/display/api.js +1575 -1868
  84. package/lib/display/api_compatibility.js +12 -17
  85. package/lib/display/canvas.js +370 -222
  86. package/lib/display/content_disposition.js +40 -59
  87. package/lib/display/display_utils.js +341 -536
  88. package/lib/display/fetch_stream.js +188 -304
  89. package/lib/display/font_loader.js +282 -414
  90. package/lib/display/metadata.js +81 -99
  91. package/lib/display/network.js +362 -511
  92. package/lib/display/network_utils.js +25 -18
  93. package/lib/display/node_stream.js +283 -465
  94. package/lib/display/node_utils.js +87 -0
  95. package/lib/display/optional_content_config.js +184 -0
  96. package/lib/display/pattern_helper.js +93 -44
  97. package/lib/display/svg.js +1163 -1401
  98. package/lib/display/text_layer.js +154 -137
  99. package/lib/display/transport_stream.js +237 -375
  100. package/lib/display/webgl.js +70 -83
  101. package/lib/display/worker_options.js +3 -3
  102. package/lib/display/xml_parser.js +303 -392
  103. package/lib/examples/node/domstubs.js +37 -37
  104. package/lib/pdf.js +220 -58
  105. package/lib/pdf.worker.js +14 -6
  106. package/lib/shared/compatibility.js +3 -246
  107. package/lib/shared/is_node.js +7 -6
  108. package/lib/shared/message_handler.js +327 -332
  109. package/lib/shared/util.js +271 -306
  110. package/lib/test/unit/annotation_spec.js +1902 -763
  111. package/lib/test/unit/annotation_storage_spec.js +83 -0
  112. package/lib/test/unit/api_spec.js +790 -592
  113. package/lib/test/unit/bidi_spec.js +7 -7
  114. package/lib/test/unit/cff_parser_spec.js +73 -72
  115. package/lib/test/unit/clitests_helper.js +7 -9
  116. package/lib/test/unit/cmap_spec.js +86 -88
  117. package/lib/test/unit/colorspace_spec.js +346 -154
  118. package/lib/test/unit/core_utils_spec.js +125 -105
  119. package/lib/test/unit/crypto_spec.js +232 -185
  120. package/lib/test/unit/custom_spec.js +150 -24
  121. package/lib/test/unit/display_svg_spec.js +34 -39
  122. package/lib/test/unit/display_utils_spec.js +139 -149
  123. package/lib/test/unit/document_spec.js +128 -17
  124. package/lib/test/unit/encodings_spec.js +12 -34
  125. package/lib/test/unit/evaluator_spec.js +112 -91
  126. package/lib/test/unit/fetch_stream_spec.js +31 -29
  127. package/lib/test/unit/function_spec.js +206 -204
  128. package/lib/test/unit/jasmine-boot.js +48 -32
  129. package/lib/test/unit/message_handler_spec.js +173 -159
  130. package/lib/test/unit/metadata_spec.js +71 -71
  131. package/lib/test/unit/murmurhash3_spec.js +12 -12
  132. package/lib/test/unit/network_spec.js +13 -11
  133. package/lib/test/unit/network_utils_spec.js +158 -144
  134. package/lib/test/unit/node_stream_spec.js +76 -90
  135. package/lib/test/unit/parser_spec.js +108 -114
  136. package/lib/test/unit/pdf_find_controller_spec.js +55 -86
  137. package/lib/test/unit/pdf_find_utils_spec.js +32 -32
  138. package/lib/test/unit/pdf_history_spec.js +32 -32
  139. package/lib/test/unit/primitives_spec.js +337 -156
  140. package/lib/test/unit/stream_spec.js +16 -14
  141. package/lib/test/unit/test_utils.js +91 -304
  142. package/lib/test/unit/testreporter.js +33 -22
  143. package/lib/test/unit/type1_parser_spec.js +42 -42
  144. package/lib/test/unit/ui_utils_spec.js +299 -461
  145. package/lib/test/unit/unicode_spec.js +42 -42
  146. package/lib/test/unit/util_spec.js +129 -149
  147. package/lib/test/unit/writer_spec.js +84 -0
  148. package/lib/web/annotation_layer_builder.js +78 -111
  149. package/lib/web/app.js +1542 -1267
  150. package/lib/web/app_options.js +76 -91
  151. package/lib/web/base_tree_viewer.js +100 -0
  152. package/lib/web/base_viewer.js +869 -834
  153. package/lib/web/chromecom.js +165 -252
  154. package/lib/web/debugger.js +149 -205
  155. package/lib/web/download_manager.js +34 -58
  156. package/lib/web/firefox_print_service.js +62 -34
  157. package/lib/web/firefoxcom.js +206 -374
  158. package/lib/web/genericcom.js +26 -108
  159. package/lib/web/genericl10n.js +24 -153
  160. package/lib/web/grab_to_pan.js +30 -30
  161. package/lib/web/interfaces.js +80 -254
  162. package/lib/web/overlay_manager.js +70 -246
  163. package/lib/web/password_prompt.js +38 -64
  164. package/lib/web/pdf_attachment_viewer.js +150 -126
  165. package/lib/web/pdf_cursor_tools.js +75 -102
  166. package/lib/web/pdf_document_properties.js +229 -383
  167. package/lib/web/pdf_find_bar.js +136 -170
  168. package/lib/web/pdf_find_controller.js +492 -548
  169. package/lib/web/pdf_find_utils.js +13 -13
  170. package/lib/web/pdf_history.js +397 -406
  171. package/lib/web/pdf_layer_viewer.js +208 -0
  172. package/lib/web/pdf_link_service.js +304 -348
  173. package/lib/web/pdf_outline_viewer.js +119 -212
  174. package/lib/web/pdf_page_view.js +474 -513
  175. package/lib/web/pdf_presentation_mode.js +308 -357
  176. package/lib/web/pdf_print_service.js +96 -110
  177. package/lib/web/pdf_rendering_queue.js +87 -108
  178. package/lib/web/pdf_sidebar.js +286 -302
  179. package/lib/web/pdf_sidebar_resizer.js +92 -119
  180. package/lib/web/pdf_single_page_viewer.js +77 -126
  181. package/lib/web/pdf_thumbnail_view.js +289 -297
  182. package/lib/web/pdf_thumbnail_viewer.js +202 -206
  183. package/lib/web/pdf_viewer.component.js +20 -21
  184. package/lib/web/pdf_viewer.js +55 -115
  185. package/lib/web/preferences.js +69 -273
  186. package/lib/web/secondary_toolbar.js +164 -196
  187. package/lib/web/text_layer_builder.js +284 -319
  188. package/lib/web/toolbar.js +217 -210
  189. package/lib/web/ui_utils.js +274 -421
  190. package/lib/web/view_history.js +52 -226
  191. package/lib/web/viewer_compatibility.js +21 -6
  192. package/package.json +4 -9
  193. package/types/display/annotation_layer.d.ts +61 -0
  194. package/types/display/annotation_storage.d.ts +36 -0
  195. package/types/display/api.d.ts +1107 -0
  196. package/types/display/api_compatibility.d.ts +1 -0
  197. package/types/display/canvas.d.ts +4 -0
  198. package/types/display/content_disposition.d.ts +7 -0
  199. package/types/display/display_utils.d.ts +243 -0
  200. package/types/display/fetch_stream.d.ts +67 -0
  201. package/types/display/font_loader.d.ts +19 -0
  202. package/types/display/metadata.d.ts +9 -0
  203. package/types/display/network.d.ts +80 -0
  204. package/types/display/network_utils.d.ts +14 -0
  205. package/types/display/node_stream.d.ts +72 -0
  206. package/types/display/node_utils.d.ts +6 -0
  207. package/types/display/optional_content_config.d.ts +12 -0
  208. package/types/display/pattern_helper.d.ts +5 -0
  209. package/types/display/svg.d.ts +2 -0
  210. package/types/display/text_layer.d.ts +83 -0
  211. package/types/display/transport_stream.d.ts +57 -0
  212. package/types/display/webgl.d.ts +20 -0
  213. package/types/display/worker_options.d.ts +27 -0
  214. package/types/display/xml_parser.d.ts +35 -0
  215. package/types/pdf.d.ts +33 -0
  216. package/types/shared/compatibility.d.ts +1 -0
  217. package/types/shared/is_node.d.ts +1 -0
  218. package/types/shared/message_handler.d.ts +62 -0
  219. package/types/shared/util.d.ts +421 -0
  220. package/web/images/shadow.png +0 -0
  221. package/web/pdf_viewer.css +29 -27
  222. package/web/pdf_viewer.js +3524 -4746
  223. package/web/pdf_viewer.js.map +1 -1
  224. package/webpack.js +6 -5
  225. package/external/streams/streams-lib.js +0 -3962
  226. package/external/url/url-lib.js +0 -627
  227. package/lib/shared/streams_polyfill.js +0 -43
  228. package/lib/shared/url_polyfill.js +0 -56
  229. package/web/images/texture.png +0 -0
@@ -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 2019 Mozilla Foundation
5
+ * Copyright 2020 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.
@@ -27,13 +27,13 @@ Object.defineProperty(exports, "__esModule", {
27
27
  exports.getTilingPatternIR = getTilingPatternIR;
28
28
  exports.Pattern = void 0;
29
29
 
30
- var _util = require("../shared/util");
30
+ var _util = require("../shared/util.js");
31
31
 
32
- var _colorspace = require("./colorspace");
32
+ var _colorspace = require("./colorspace.js");
33
33
 
34
- var _primitives = require("./primitives");
34
+ var _primitives = require("./primitives.js");
35
35
 
36
- var _core_utils = require("./core_utils");
36
+ var _core_utils = require("./core_utils.js");
37
37
 
38
38
  var ShadingType = {
39
39
  FUNCTION_BASED: 1,
@@ -47,40 +47,40 @@ var ShadingType = {
47
47
 
48
48
  var Pattern = function PatternClosure() {
49
49
  function Pattern() {
50
- (0, _util.unreachable)('should not call Pattern constructor');
50
+ (0, _util.unreachable)("should not call Pattern constructor");
51
51
  }
52
52
 
53
53
  Pattern.prototype = {
54
54
  getPattern: function Pattern_getPattern(ctx) {
55
- (0, _util.unreachable)("Should not call Pattern.getStyle: ".concat(ctx));
55
+ (0, _util.unreachable)(`Should not call Pattern.getStyle: ${ctx}`);
56
56
  }
57
57
  };
58
58
 
59
- Pattern.parseShading = function (shading, matrix, xref, res, handler, pdfFunctionFactory) {
59
+ Pattern.parseShading = function (shading, matrix, xref, res, handler, pdfFunctionFactory, localColorSpaceCache) {
60
60
  var dict = (0, _primitives.isStream)(shading) ? shading.dict : shading;
61
- var type = dict.get('ShadingType');
61
+ var type = dict.get("ShadingType");
62
62
 
63
63
  try {
64
64
  switch (type) {
65
65
  case ShadingType.AXIAL:
66
66
  case ShadingType.RADIAL:
67
- return new Shadings.RadialAxial(dict, matrix, xref, res, pdfFunctionFactory);
67
+ return new Shadings.RadialAxial(dict, matrix, xref, res, pdfFunctionFactory, localColorSpaceCache);
68
68
 
69
69
  case ShadingType.FREE_FORM_MESH:
70
70
  case ShadingType.LATTICE_FORM_MESH:
71
71
  case ShadingType.COONS_PATCH_MESH:
72
72
  case ShadingType.TENSOR_PATCH_MESH:
73
- return new Shadings.Mesh(shading, matrix, xref, res, pdfFunctionFactory);
73
+ return new Shadings.Mesh(shading, matrix, xref, res, pdfFunctionFactory, localColorSpaceCache);
74
74
 
75
75
  default:
76
- throw new _util.FormatError('Unsupported ShadingType: ' + type);
76
+ throw new _util.FormatError("Unsupported ShadingType: " + type);
77
77
  }
78
78
  } catch (ex) {
79
79
  if (ex instanceof _core_utils.MissingDataException) {
80
80
  throw ex;
81
81
  }
82
82
 
83
- handler.send('UnsupportedFeature', {
83
+ handler.send("UnsupportedFeature", {
84
84
  featureId: _util.UNSUPPORTED_FEATURES.shadingPattern
85
85
  });
86
86
  (0, _util.warn)(ex);
@@ -96,19 +96,34 @@ var Shadings = {};
96
96
  Shadings.SMALL_NUMBER = 1e-6;
97
97
 
98
98
  Shadings.RadialAxial = function RadialAxialClosure() {
99
- function RadialAxial(dict, matrix, xref, res, pdfFunctionFactory) {
99
+ function RadialAxial(dict, matrix, xref, resources, pdfFunctionFactory, localColorSpaceCache) {
100
100
  this.matrix = matrix;
101
- this.coordsArr = dict.getArray('Coords');
102
- this.shadingType = dict.get('ShadingType');
103
- this.type = 'Pattern';
104
- var cs = dict.get('ColorSpace', 'CS');
105
- cs = _colorspace.ColorSpace.parse(cs, xref, res, pdfFunctionFactory);
101
+ this.coordsArr = dict.getArray("Coords");
102
+ this.shadingType = dict.get("ShadingType");
103
+ this.type = "Pattern";
104
+
105
+ const cs = _colorspace.ColorSpace.parse({
106
+ cs: dict.getRaw("ColorSpace") || dict.getRaw("CS"),
107
+ xref,
108
+ resources,
109
+ pdfFunctionFactory,
110
+ localColorSpaceCache
111
+ });
112
+
106
113
  this.cs = cs;
114
+ const bbox = dict.getArray("BBox");
115
+
116
+ if (Array.isArray(bbox) && bbox.length === 4) {
117
+ this.bbox = _util.Util.normalizeRect(bbox);
118
+ } else {
119
+ this.bbox = null;
120
+ }
121
+
107
122
  var t0 = 0.0,
108
123
  t1 = 1.0;
109
124
 
110
- if (dict.has('Domain')) {
111
- var domainArr = dict.getArray('Domain');
125
+ if (dict.has("Domain")) {
126
+ var domainArr = dict.getArray("Domain");
112
127
  t0 = domainArr[0];
113
128
  t1 = domainArr[1];
114
129
  }
@@ -116,8 +131,8 @@ Shadings.RadialAxial = function RadialAxialClosure() {
116
131
  var extendStart = false,
117
132
  extendEnd = false;
118
133
 
119
- if (dict.has('Extend')) {
120
- var extendArr = dict.getArray('Extend');
134
+ if (dict.has("Extend")) {
135
+ var extendArr = dict.getArray("Extend");
121
136
  extendStart = extendArr[0];
122
137
  extendEnd = extendArr[1];
123
138
  }
@@ -132,20 +147,20 @@ Shadings.RadialAxial = function RadialAxialClosure() {
132
147
  var distance = Math.sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));
133
148
 
134
149
  if (r1 <= r2 + distance && r2 <= r1 + distance) {
135
- (0, _util.warn)('Unsupported radial gradient.');
150
+ (0, _util.warn)("Unsupported radial gradient.");
136
151
  }
137
152
  }
138
153
 
139
154
  this.extendStart = extendStart;
140
155
  this.extendEnd = extendEnd;
141
- var fnObj = dict.get('Function');
156
+ var fnObj = dict.getRaw("Function");
142
157
  var fn = pdfFunctionFactory.createFromArray(fnObj);
143
- var diff = t1 - t0;
144
- var step = diff / 10;
158
+ const NUMBER_OF_SAMPLES = 10;
159
+ const step = (t1 - t0) / NUMBER_OF_SAMPLES;
145
160
  var colorStops = this.colorStops = [];
146
161
 
147
162
  if (t0 >= t1 || step <= 0) {
148
- (0, _util.info)('Bad shading domain.');
163
+ (0, _util.info)("Bad shading domain.");
149
164
  return;
150
165
  }
151
166
 
@@ -153,20 +168,20 @@ Shadings.RadialAxial = function RadialAxialClosure() {
153
168
  ratio = new Float32Array(1);
154
169
  var rgbColor;
155
170
 
156
- for (var i = t0; i <= t1; i += step) {
157
- ratio[0] = i;
171
+ for (let i = 0; i <= NUMBER_OF_SAMPLES; i++) {
172
+ ratio[0] = t0 + i * step;
158
173
  fn(ratio, 0, color, 0);
159
174
  rgbColor = cs.getRgb(color, 0);
160
175
 
161
176
  var cssColor = _util.Util.makeCssRgb(rgbColor[0], rgbColor[1], rgbColor[2]);
162
177
 
163
- colorStops.push([(i - t0) / diff, cssColor]);
178
+ colorStops.push([i / NUMBER_OF_SAMPLES, cssColor]);
164
179
  }
165
180
 
166
- var background = 'transparent';
181
+ var background = "transparent";
167
182
 
168
- if (dict.has('Background')) {
169
- rgbColor = cs.getRgb(dict.get('Background'), 0);
183
+ if (dict.has("Background")) {
184
+ rgbColor = cs.getRgb(dict.get("Background"), 0);
170
185
  background = _util.Util.makeCssRgb(rgbColor[0], rgbColor[1], rgbColor[2]);
171
186
  }
172
187
 
@@ -194,15 +209,15 @@ Shadings.RadialAxial = function RadialAxialClosure() {
194
209
  p1 = [coordsArr[2], coordsArr[3]];
195
210
  r0 = null;
196
211
  r1 = null;
197
- type = 'axial';
212
+ type = "axial";
198
213
  } else if (shadingType === ShadingType.RADIAL) {
199
214
  p0 = [coordsArr[0], coordsArr[1]];
200
215
  p1 = [coordsArr[3], coordsArr[4]];
201
216
  r0 = coordsArr[2];
202
217
  r1 = coordsArr[5];
203
- type = 'radial';
218
+ type = "radial";
204
219
  } else {
205
- (0, _util.unreachable)("getPattern type unknown: ".concat(shadingType));
220
+ (0, _util.unreachable)(`getPattern type unknown: ${shadingType}`);
206
221
  }
207
222
 
208
223
  var matrix = this.matrix;
@@ -219,7 +234,7 @@ Shadings.RadialAxial = function RadialAxialClosure() {
219
234
  }
220
235
  }
221
236
 
222
- return ['RadialAxial', type, this.colorStops, p0, p1, r0, r1];
237
+ return ["RadialAxial", type, this.bbox, this.colorStops, p0, p1, r0, r1];
223
238
  }
224
239
  };
225
240
  return RadialAxial;
@@ -270,7 +285,7 @@ Shadings.Mesh = function MeshClosure() {
270
285
  buffer = buffer << 24 | this.stream.getByte() << 16 | this.stream.getByte() << 8 | this.stream.getByte();
271
286
  var nextByte = this.stream.getByte();
272
287
  this.buffer = nextByte & (1 << bufferLength) - 1;
273
- return (buffer << 8 - bufferLength | (nextByte & 0xFF) >> bufferLength) >>> 0;
288
+ return (buffer << 8 - bufferLength | (nextByte & 0xff) >> bufferLength) >>> 0;
274
289
  }
275
290
 
276
291
  if (n === 8 && bufferLength === 0) {
@@ -338,7 +353,7 @@ Shadings.Mesh = function MeshClosure() {
338
353
 
339
354
  if (verticesLeft === 0) {
340
355
  if (!(0 <= f && f <= 2)) {
341
- throw new _util.FormatError('Unknown type4 flag');
356
+ throw new _util.FormatError("Unknown type4 flag");
342
357
  }
343
358
 
344
359
  switch (f) {
@@ -368,7 +383,7 @@ Shadings.Mesh = function MeshClosure() {
368
383
  }
369
384
 
370
385
  mesh.figures.push({
371
- type: 'triangles',
386
+ type: "triangles",
372
387
  coords: new Int32Array(ps),
373
388
  colors: new Int32Array(ps)
374
389
  });
@@ -388,10 +403,10 @@ Shadings.Mesh = function MeshClosure() {
388
403
  }
389
404
 
390
405
  mesh.figures.push({
391
- type: 'lattice',
406
+ type: "lattice",
392
407
  coords: new Int32Array(ps),
393
408
  colors: new Int32Array(ps),
394
- verticesPerRow: verticesPerRow
409
+ verticesPerRow
395
410
  });
396
411
  }
397
412
 
@@ -424,7 +439,7 @@ Shadings.Mesh = function MeshClosure() {
424
439
 
425
440
  function buildFigureFromPatch(mesh, index) {
426
441
  var figure = mesh.figures[index];
427
- (0, _util.assert)(figure.type === 'patch', 'Unexpected patch mesh figure');
442
+ (0, _util.assert)(figure.type === "patch", "Unexpected patch mesh figure");
428
443
  var coords = mesh.coords,
429
444
  colors = mesh.colors;
430
445
  var pi = figure.coords;
@@ -495,10 +510,10 @@ Shadings.Mesh = function MeshClosure() {
495
510
  figureCoords[verticesPerRow * splitYBy + splitXBy] = pi[15];
496
511
  figureColors[verticesPerRow * splitYBy + splitXBy] = ci[3];
497
512
  mesh.figures[index] = {
498
- type: 'lattice',
513
+ type: "lattice",
499
514
  coords: figureCoords,
500
515
  colors: figureColors,
501
- verticesPerRow: verticesPerRow
516
+ verticesPerRow
502
517
  };
503
518
  }
504
519
 
@@ -512,7 +527,7 @@ Shadings.Mesh = function MeshClosure() {
512
527
  var f = reader.readFlag();
513
528
 
514
529
  if (!(0 <= f && f <= 3)) {
515
- throw new _util.FormatError('Unknown type6 flag');
530
+ throw new _util.FormatError("Unknown type6 flag");
516
531
  }
517
532
 
518
533
  var i, ii;
@@ -626,7 +641,7 @@ Shadings.Mesh = function MeshClosure() {
626
641
  ps[10] = coords.length;
627
642
  coords.push([(-4 * coords[ps[15]][0] - coords[ps[0]][0] + 6 * (coords[ps[11]][0] + coords[ps[14]][0]) - 2 * (coords[ps[12]][0] + coords[ps[3]][0]) + 3 * (coords[ps[2]][0] + coords[ps[8]][0])) / 9, (-4 * coords[ps[15]][1] - coords[ps[0]][1] + 6 * (coords[ps[11]][1] + coords[ps[14]][1]) - 2 * (coords[ps[12]][1] + coords[ps[3]][1]) + 3 * (coords[ps[2]][1] + coords[ps[8]][1])) / 9]);
628
643
  mesh.figures.push({
629
- type: 'patch',
644
+ type: "patch",
630
645
  coords: new Int32Array(ps),
631
646
  colors: new Int32Array(cs)
632
647
  });
@@ -643,7 +658,7 @@ Shadings.Mesh = function MeshClosure() {
643
658
  var f = reader.readFlag();
644
659
 
645
660
  if (!(0 <= f && f <= 3)) {
646
- throw new _util.FormatError('Unknown type7 flag');
661
+ throw new _util.FormatError("Unknown type7 flag");
647
662
  }
648
663
 
649
664
  var i, ii;
@@ -765,7 +780,7 @@ Shadings.Mesh = function MeshClosure() {
765
780
  }
766
781
 
767
782
  mesh.figures.push({
768
- type: 'patch',
783
+ type: "patch",
769
784
  coords: new Int32Array(ps),
770
785
  colors: new Int32Array(cs)
771
786
  });
@@ -827,30 +842,43 @@ Shadings.Mesh = function MeshClosure() {
827
842
  }
828
843
  }
829
844
 
830
- function Mesh(stream, matrix, xref, res, pdfFunctionFactory) {
845
+ function Mesh(stream, matrix, xref, resources, pdfFunctionFactory, localColorSpaceCache) {
831
846
  if (!(0, _primitives.isStream)(stream)) {
832
- throw new _util.FormatError('Mesh data is not a stream');
847
+ throw new _util.FormatError("Mesh data is not a stream");
833
848
  }
834
849
 
835
850
  var dict = stream.dict;
836
851
  this.matrix = matrix;
837
- this.shadingType = dict.get('ShadingType');
838
- this.type = 'Pattern';
839
- this.bbox = dict.getArray('BBox');
840
- var cs = dict.get('ColorSpace', 'CS');
841
- cs = _colorspace.ColorSpace.parse(cs, xref, res, pdfFunctionFactory);
852
+ this.shadingType = dict.get("ShadingType");
853
+ this.type = "Pattern";
854
+ const bbox = dict.getArray("BBox");
855
+
856
+ if (Array.isArray(bbox) && bbox.length === 4) {
857
+ this.bbox = _util.Util.normalizeRect(bbox);
858
+ } else {
859
+ this.bbox = null;
860
+ }
861
+
862
+ const cs = _colorspace.ColorSpace.parse({
863
+ cs: dict.getRaw("ColorSpace") || dict.getRaw("CS"),
864
+ xref,
865
+ resources,
866
+ pdfFunctionFactory,
867
+ localColorSpaceCache
868
+ });
869
+
842
870
  this.cs = cs;
843
- this.background = dict.has('Background') ? cs.getRgb(dict.get('Background'), 0) : null;
844
- var fnObj = dict.get('Function');
871
+ this.background = dict.has("Background") ? cs.getRgb(dict.get("Background"), 0) : null;
872
+ var fnObj = dict.getRaw("Function");
845
873
  var fn = fnObj ? pdfFunctionFactory.createFromArray(fnObj) : null;
846
874
  this.coords = [];
847
875
  this.colors = [];
848
876
  this.figures = [];
849
877
  var decodeContext = {
850
- bitsPerCoordinate: dict.get('BitsPerCoordinate'),
851
- bitsPerComponent: dict.get('BitsPerComponent'),
852
- bitsPerFlag: dict.get('BitsPerFlag'),
853
- decode: dict.getArray('Decode'),
878
+ bitsPerCoordinate: dict.get("BitsPerCoordinate"),
879
+ bitsPerComponent: dict.get("BitsPerComponent"),
880
+ bitsPerFlag: dict.get("BitsPerFlag"),
881
+ decode: dict.getArray("Decode"),
854
882
  colorFn: fn,
855
883
  colorSpace: cs,
856
884
  numComps: fn ? 1 : cs.numComps
@@ -864,10 +892,10 @@ Shadings.Mesh = function MeshClosure() {
864
892
  break;
865
893
 
866
894
  case ShadingType.LATTICE_FORM_MESH:
867
- var verticesPerRow = dict.get('VerticesPerRow') | 0;
895
+ var verticesPerRow = dict.get("VerticesPerRow") | 0;
868
896
 
869
897
  if (verticesPerRow < 2) {
870
- throw new _util.FormatError('Invalid VerticesPerRow');
898
+ throw new _util.FormatError("Invalid VerticesPerRow");
871
899
  }
872
900
 
873
901
  decodeType5Shading(this, reader, verticesPerRow);
@@ -884,7 +912,7 @@ Shadings.Mesh = function MeshClosure() {
884
912
  break;
885
913
 
886
914
  default:
887
- (0, _util.unreachable)('Unsupported mesh type.');
915
+ (0, _util.unreachable)("Unsupported mesh type.");
888
916
  break;
889
917
  }
890
918
 
@@ -902,7 +930,7 @@ Shadings.Mesh = function MeshClosure() {
902
930
 
903
931
  Mesh.prototype = {
904
932
  getIR: function Mesh_getIR() {
905
- return ['Mesh', this.shadingType, this.coords, this.colors, this.figures, this.bounds, this.matrix, this.bbox, this.background];
933
+ return ["Mesh", this.shadingType, this.coords, this.colors, this.figures, this.bounds, this.matrix, this.bbox, this.background];
906
934
  }
907
935
  };
908
936
  return Mesh;
@@ -910,30 +938,30 @@ Shadings.Mesh = function MeshClosure() {
910
938
 
911
939
  Shadings.Dummy = function DummyClosure() {
912
940
  function Dummy() {
913
- this.type = 'Pattern';
941
+ this.type = "Pattern";
914
942
  }
915
943
 
916
944
  Dummy.prototype = {
917
945
  getIR: function Dummy_getIR() {
918
- return ['Dummy'];
946
+ return ["Dummy"];
919
947
  }
920
948
  };
921
949
  return Dummy;
922
950
  }();
923
951
 
924
952
  function getTilingPatternIR(operatorList, dict, args) {
925
- var matrix = dict.getArray('Matrix');
953
+ const matrix = dict.getArray("Matrix");
926
954
 
927
- var bbox = _util.Util.normalizeRect(dict.getArray('BBox'));
955
+ const bbox = _util.Util.normalizeRect(dict.getArray("BBox"));
928
956
 
929
- var xstep = dict.get('XStep');
930
- var ystep = dict.get('YStep');
931
- var paintType = dict.get('PaintType');
932
- var tilingType = dict.get('TilingType');
957
+ const xstep = dict.get("XStep");
958
+ const ystep = dict.get("YStep");
959
+ const paintType = dict.get("PaintType");
960
+ const tilingType = dict.get("TilingType");
933
961
 
934
962
  if (bbox[2] - bbox[0] === 0 || bbox[3] - bbox[1] === 0) {
935
- throw new _util.FormatError("Invalid getTilingPatternIR /BBox array: [".concat(bbox, "]."));
963
+ throw new _util.FormatError(`Invalid getTilingPatternIR /BBox array: [${bbox}].`);
936
964
  }
937
965
 
938
- return ['TilingPattern', args, operatorList, matrix, bbox, xstep, ystep, paintType, tilingType];
966
+ return ["TilingPattern", args, operatorList, matrix, bbox, xstep, ystep, paintType, tilingType];
939
967
  }