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,9 +19,10 @@
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
  var getLookupTableFactory = require('../shared/util').getLookupTableFactory;
25
+
25
26
  var getGlyphsUnicode = getLookupTableFactory(function (t) {
26
27
  t['A'] = 0x0041;
27
28
  t['AE'] = 0x00C6;
package/lib/core/image.js CHANGED
@@ -19,26 +19,32 @@
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.PDFImage = undefined;
27
+ exports.PDFImage = void 0;
28
28
 
29
- var _slicedToArray = function () { function sliceIterator(arr, i) { 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"]) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } }; }();
29
+ var _util = require("../shared/util");
30
30
 
31
- var _util = require('../shared/util');
31
+ var _primitives = require("./primitives");
32
32
 
33
- var _primitives = require('./primitives');
33
+ var _colorspace = require("./colorspace");
34
34
 
35
- var _colorspace = require('./colorspace');
35
+ var _stream = require("./stream");
36
36
 
37
- var _stream = require('./stream');
37
+ var _jpeg_stream = require("./jpeg_stream");
38
38
 
39
- var _jpeg_stream = require('./jpeg_stream');
39
+ var _jpx = require("./jpx");
40
40
 
41
- var _jpx = require('./jpx');
41
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }
42
+
43
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); }
44
+
45
+ function _iterableToArrayLimit(arr, i) { 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; }
46
+
47
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
42
48
 
43
49
  var PDFImage = function PDFImageClosure() {
44
50
  function handleImageData(image, nativeDecoder) {
@@ -48,12 +54,15 @@ var PDFImage = function PDFImageClosure() {
48
54
  return image;
49
55
  });
50
56
  }
57
+
51
58
  return Promise.resolve(image);
52
59
  }
60
+
53
61
  function decodeAndClamp(value, addend, coefficient, max) {
54
62
  value = addend + value * coefficient;
55
63
  return value < 0 ? 0 : value > max ? max : value;
56
64
  }
65
+
57
66
  function resizeImageMask(src, bpc, w1, h1, w2, h2) {
58
67
  var length = w2 * h2;
59
68
  var dest = bpc <= 8 ? new Uint8Array(length) : bpc <= 16 ? new Uint16Array(length) : new Uint32Array(length);
@@ -66,35 +75,40 @@ var PDFImage = function PDFImageClosure() {
66
75
  oldIndex;
67
76
  var xScaled = new Uint16Array(w2);
68
77
  var w1Scanline = w1;
78
+
69
79
  for (i = 0; i < w2; i++) {
70
80
  xScaled[i] = Math.floor(i * xRatio);
71
81
  }
82
+
72
83
  for (i = 0; i < h2; i++) {
73
84
  py = Math.floor(i * yRatio) * w1Scanline;
85
+
74
86
  for (j = 0; j < w2; j++) {
75
87
  oldIndex = py + xScaled[j];
76
88
  dest[newIndex++] = src[oldIndex];
77
89
  }
78
90
  }
91
+
79
92
  return dest;
80
93
  }
94
+
81
95
  function PDFImage(_ref) {
82
96
  var xref = _ref.xref,
83
97
  res = _ref.res,
84
98
  image = _ref.image,
85
99
  _ref$isInline = _ref.isInline,
86
- isInline = _ref$isInline === undefined ? false : _ref$isInline,
100
+ isInline = _ref$isInline === void 0 ? false : _ref$isInline,
87
101
  _ref$smask = _ref.smask,
88
- smask = _ref$smask === undefined ? null : _ref$smask,
102
+ smask = _ref$smask === void 0 ? null : _ref$smask,
89
103
  _ref$mask = _ref.mask,
90
- mask = _ref$mask === undefined ? null : _ref$mask,
104
+ mask = _ref$mask === void 0 ? null : _ref$mask,
91
105
  _ref$isMask = _ref.isMask,
92
- isMask = _ref$isMask === undefined ? false : _ref$isMask,
106
+ isMask = _ref$isMask === void 0 ? false : _ref$isMask,
93
107
  pdfFunctionFactory = _ref.pdfFunctionFactory;
94
-
95
108
  this.image = image;
96
109
  var dict = image.dict;
97
110
  var filter = dict.get('Filter');
111
+
98
112
  if ((0, _primitives.isName)(filter)) {
99
113
  switch (filter.name) {
100
114
  case 'JPXDecode':
@@ -106,75 +120,95 @@ var PDFImage = function PDFImageClosure() {
106
120
  image.bitsPerComponent = jpxImage.bitsPerComponent;
107
121
  image.numComps = jpxImage.componentsCount;
108
122
  break;
123
+
109
124
  case 'JBIG2Decode':
110
125
  image.bitsPerComponent = 1;
111
126
  image.numComps = 1;
112
127
  break;
113
128
  }
114
129
  }
130
+
115
131
  var width = dict.get('Width', 'W');
116
132
  var height = dict.get('Height', 'H');
133
+
117
134
  if (Number.isInteger(image.width) && image.width > 0 && Number.isInteger(image.height) && image.height > 0 && (image.width !== width || image.height !== height)) {
118
135
  (0, _util.warn)('PDFImage - using the Width/Height of the image data, ' + 'rather than the image dictionary.');
119
136
  width = image.width;
120
137
  height = image.height;
121
138
  }
139
+
122
140
  if (width < 1 || height < 1) {
123
- throw new _util.FormatError('Invalid image width: ' + width + ' or ' + ('height: ' + height));
141
+ throw new _util.FormatError("Invalid image width: ".concat(width, " or ") + "height: ".concat(height));
124
142
  }
143
+
125
144
  this.width = width;
126
145
  this.height = height;
127
146
  this.interpolate = dict.get('Interpolate', 'I') || false;
128
147
  this.imageMask = dict.get('ImageMask', 'IM') || false;
129
148
  this.matte = dict.get('Matte') || false;
130
149
  var bitsPerComponent = image.bitsPerComponent;
150
+
131
151
  if (!bitsPerComponent) {
132
152
  bitsPerComponent = dict.get('BitsPerComponent', 'BPC');
153
+
133
154
  if (!bitsPerComponent) {
134
155
  if (this.imageMask) {
135
156
  bitsPerComponent = 1;
136
157
  } else {
137
- throw new _util.FormatError('Bits per component missing in image: ' + this.imageMask);
158
+ throw new _util.FormatError("Bits per component missing in image: ".concat(this.imageMask));
138
159
  }
139
160
  }
140
161
  }
162
+
141
163
  this.bpc = bitsPerComponent;
164
+
142
165
  if (!this.imageMask) {
143
166
  var colorSpace = dict.get('ColorSpace', 'CS');
167
+
144
168
  if (!colorSpace) {
145
169
  (0, _util.info)('JPX images (which do not require color spaces)');
170
+
146
171
  switch (image.numComps) {
147
172
  case 1:
148
173
  colorSpace = _primitives.Name.get('DeviceGray');
149
174
  break;
175
+
150
176
  case 3:
151
177
  colorSpace = _primitives.Name.get('DeviceRGB');
152
178
  break;
179
+
153
180
  case 4:
154
181
  colorSpace = _primitives.Name.get('DeviceCMYK');
155
182
  break;
183
+
156
184
  default:
157
- throw new Error('JPX images with ' + image.numComps + ' ' + 'color components not supported.');
185
+ throw new Error("JPX images with ".concat(image.numComps, " ") + 'color components not supported.');
158
186
  }
159
187
  }
188
+
160
189
  var resources = isInline ? res : null;
161
190
  this.colorSpace = _colorspace.ColorSpace.parse(colorSpace, xref, resources, pdfFunctionFactory);
162
191
  this.numComps = this.colorSpace.numComps;
163
192
  }
193
+
164
194
  this.decode = dict.getArray('Decode', 'D');
165
195
  this.needsDecode = false;
166
- if (this.decode && (this.colorSpace && !this.colorSpace.isDefaultDecode(this.decode) || isMask && !_colorspace.ColorSpace.isDefaultDecode(this.decode, 1))) {
196
+
197
+ if (this.decode && (this.colorSpace && !this.colorSpace.isDefaultDecode(this.decode, bitsPerComponent) || isMask && !_colorspace.ColorSpace.isDefaultDecode(this.decode, 1))) {
167
198
  this.needsDecode = true;
168
199
  var max = (1 << bitsPerComponent) - 1;
169
200
  this.decodeCoefficients = [];
170
201
  this.decodeAddends = [];
202
+ var isIndexed = this.colorSpace && this.colorSpace.name === 'Indexed';
203
+
171
204
  for (var i = 0, j = 0; i < this.decode.length; i += 2, ++j) {
172
205
  var dmin = this.decode[i];
173
206
  var dmax = this.decode[i + 1];
174
- this.decodeCoefficients[j] = dmax - dmin;
175
- this.decodeAddends[j] = max * dmin;
207
+ this.decodeCoefficients[j] = isIndexed ? (dmax - dmin) / max : dmax - dmin;
208
+ this.decodeAddends[j] = isIndexed ? dmin : max * dmin;
176
209
  }
177
210
  }
211
+
178
212
  if (smask) {
179
213
  this.smask = new PDFImage({
180
214
  xref: xref,
@@ -187,6 +221,7 @@ var PDFImage = function PDFImageClosure() {
187
221
  if ((0, _primitives.isStream)(mask)) {
188
222
  var maskDict = mask.dict,
189
223
  imageMask = maskDict.get('ImageMask', 'IM');
224
+
190
225
  if (!imageMask) {
191
226
  (0, _util.warn)('Ignoring /Mask in image without /ImageMask.');
192
227
  } else {
@@ -204,27 +239,29 @@ var PDFImage = function PDFImageClosure() {
204
239
  }
205
240
  }
206
241
  }
242
+
207
243
  PDFImage.buildImage = function (_ref2) {
208
244
  var handler = _ref2.handler,
209
245
  xref = _ref2.xref,
210
246
  res = _ref2.res,
211
247
  image = _ref2.image,
212
248
  _ref2$isInline = _ref2.isInline,
213
- isInline = _ref2$isInline === undefined ? false : _ref2$isInline,
249
+ isInline = _ref2$isInline === void 0 ? false : _ref2$isInline,
214
250
  _ref2$nativeDecoder = _ref2.nativeDecoder,
215
- nativeDecoder = _ref2$nativeDecoder === undefined ? null : _ref2$nativeDecoder,
251
+ nativeDecoder = _ref2$nativeDecoder === void 0 ? null : _ref2$nativeDecoder,
216
252
  pdfFunctionFactory = _ref2.pdfFunctionFactory;
217
-
218
253
  var imagePromise = handleImageData(image, nativeDecoder);
219
254
  var smaskPromise;
220
255
  var maskPromise;
221
256
  var smask = image.dict.get('SMask');
222
257
  var mask = image.dict.get('Mask');
258
+
223
259
  if (smask) {
224
260
  smaskPromise = handleImageData(smask, nativeDecoder);
225
261
  maskPromise = Promise.resolve(null);
226
262
  } else {
227
263
  smaskPromise = Promise.resolve(null);
264
+
228
265
  if (mask) {
229
266
  if ((0, _primitives.isStream)(mask)) {
230
267
  maskPromise = handleImageData(mask, nativeDecoder);
@@ -238,6 +275,7 @@ var PDFImage = function PDFImageClosure() {
238
275
  maskPromise = Promise.resolve(null);
239
276
  }
240
277
  }
278
+
241
279
  return Promise.all([imagePromise, smaskPromise, maskPromise]).then(function (_ref3) {
242
280
  var _ref4 = _slicedToArray(_ref3, 3),
243
281
  imageData = _ref4[0],
@@ -255,17 +293,18 @@ var PDFImage = function PDFImageClosure() {
255
293
  });
256
294
  });
257
295
  };
296
+
258
297
  PDFImage.createMask = function (_ref5) {
259
298
  var imgArray = _ref5.imgArray,
260
299
  width = _ref5.width,
261
300
  height = _ref5.height,
262
301
  imageIsFromDecodeStream = _ref5.imageIsFromDecodeStream,
263
302
  inverseDecode = _ref5.inverseDecode;
264
-
265
303
  var computedLength = (width + 7 >> 3) * height;
266
304
  var actualLength = imgArray.byteLength;
267
305
  var haveFullData = computedLength === actualLength;
268
306
  var data, i;
307
+
269
308
  if (imageIsFromDecodeStream && (!inverseDecode || haveFullData)) {
270
309
  data = imgArray;
271
310
  } else if (!inverseDecode) {
@@ -274,28 +313,34 @@ var PDFImage = function PDFImageClosure() {
274
313
  } else {
275
314
  data = new Uint8ClampedArray(computedLength);
276
315
  data.set(imgArray);
316
+
277
317
  for (i = actualLength; i < computedLength; i++) {
278
318
  data[i] = 0xff;
279
319
  }
280
320
  }
321
+
281
322
  if (inverseDecode) {
282
323
  for (i = 0; i < actualLength; i++) {
283
324
  data[i] ^= 0xFF;
284
325
  }
285
326
  }
327
+
286
328
  return {
287
329
  data: data,
288
330
  width: width,
289
331
  height: height
290
332
  };
291
333
  };
334
+
292
335
  PDFImage.prototype = {
293
336
  get drawWidth() {
294
337
  return Math.max(this.width, this.smask && this.smask.width || 0, this.mask && this.mask.width || 0);
295
338
  },
339
+
296
340
  get drawHeight() {
297
341
  return Math.max(this.height, this.smask && this.smask.height || 0, this.mask && this.mask.height || 0);
298
342
  },
343
+
299
344
  decodeBuffer: function decodeBuffer(buffer) {
300
345
  var bpc = this.bpc;
301
346
  var numComps = this.numComps;
@@ -303,13 +348,17 @@ var PDFImage = function PDFImageClosure() {
303
348
  var decodeCoefficients = this.decodeCoefficients;
304
349
  var max = (1 << bpc) - 1;
305
350
  var i, ii;
351
+
306
352
  if (bpc === 1) {
307
353
  for (i = 0, ii = buffer.length; i < ii; i++) {
308
354
  buffer[i] = +!buffer[i];
309
355
  }
356
+
310
357
  return;
311
358
  }
359
+
312
360
  var index = 0;
361
+
313
362
  for (i = 0, ii = this.width * this.height; i < ii; i++) {
314
363
  for (var j = 0; j < numComps; j++) {
315
364
  buffer[index] = decodeAndClamp(buffer[index], decodeAddends[j], decodeCoefficients[j], max);
@@ -319,9 +368,11 @@ var PDFImage = function PDFImageClosure() {
319
368
  },
320
369
  getComponents: function getComponents(buffer) {
321
370
  var bpc = this.bpc;
371
+
322
372
  if (bpc === 8) {
323
373
  return buffer;
324
374
  }
375
+
325
376
  var width = this.width;
326
377
  var height = this.height;
327
378
  var numComps = this.numComps;
@@ -333,11 +384,14 @@ var PDFImage = function PDFImageClosure() {
333
384
  var i = 0,
334
385
  ii,
335
386
  buf;
387
+
336
388
  if (bpc === 1) {
337
389
  var mask, loop1End, loop2End;
390
+
338
391
  for (var j = 0; j < height; j++) {
339
392
  loop1End = i + (rowComps & ~7);
340
393
  loop2End = i + rowComps;
394
+
341
395
  while (i < loop1End) {
342
396
  buf = buffer[bufferPos++];
343
397
  output[i] = buf >> 7 & 1;
@@ -350,9 +404,11 @@ var PDFImage = function PDFImageClosure() {
350
404
  output[i + 7] = buf & 1;
351
405
  i += 8;
352
406
  }
407
+
353
408
  if (i < loop2End) {
354
409
  buf = buffer[bufferPos++];
355
410
  mask = 128;
411
+
356
412
  while (i < loop2End) {
357
413
  output[i++] = +!!(buf & mask);
358
414
  mask >>= 1;
@@ -362,15 +418,18 @@ var PDFImage = function PDFImageClosure() {
362
418
  } else {
363
419
  var bits = 0;
364
420
  buf = 0;
421
+
365
422
  for (i = 0, ii = length; i < ii; ++i) {
366
423
  if (i % rowComps === 0) {
367
424
  buf = 0;
368
425
  bits = 0;
369
426
  }
427
+
370
428
  while (bits < bpc) {
371
429
  buf = buf << 8 | buffer[bufferPos++];
372
430
  bits += 8;
373
431
  }
432
+
374
433
  var remainingBits = bits - bpc;
375
434
  var value = buf >> remainingBits;
376
435
  output[i] = value < 0 ? 0 : value > max ? max : value;
@@ -378,17 +437,20 @@ var PDFImage = function PDFImageClosure() {
378
437
  bits = remainingBits;
379
438
  }
380
439
  }
440
+
381
441
  return output;
382
442
  },
383
443
  fillOpacity: function fillOpacity(rgbaBuf, width, height, actualHeight, image) {
384
444
  var smask = this.smask;
385
445
  var mask = this.mask;
386
446
  var alphaBuf, sw, sh, i, ii, j;
447
+
387
448
  if (smask) {
388
449
  sw = smask.width;
389
450
  sh = smask.height;
390
451
  alphaBuf = new Uint8ClampedArray(sw * sh);
391
452
  smask.fillGrayBuffer(alphaBuf);
453
+
392
454
  if (sw !== width || sh !== height) {
393
455
  alphaBuf = resizeImageMask(alphaBuf, smask.bpc, sw, sh, width, height);
394
456
  }
@@ -399,32 +461,39 @@ var PDFImage = function PDFImageClosure() {
399
461
  alphaBuf = new Uint8ClampedArray(sw * sh);
400
462
  mask.numComps = 1;
401
463
  mask.fillGrayBuffer(alphaBuf);
464
+
402
465
  for (i = 0, ii = sw * sh; i < ii; ++i) {
403
466
  alphaBuf[i] = 255 - alphaBuf[i];
404
467
  }
468
+
405
469
  if (sw !== width || sh !== height) {
406
470
  alphaBuf = resizeImageMask(alphaBuf, mask.bpc, sw, sh, width, height);
407
471
  }
408
472
  } else if (Array.isArray(mask)) {
409
473
  alphaBuf = new Uint8ClampedArray(width * height);
410
474
  var numComps = this.numComps;
475
+
411
476
  for (i = 0, ii = width * height; i < ii; ++i) {
412
477
  var opacity = 0;
413
478
  var imageOffset = i * numComps;
479
+
414
480
  for (j = 0; j < numComps; ++j) {
415
481
  var color = image[imageOffset + j];
416
482
  var maskOffset = j * 2;
483
+
417
484
  if (color < mask[maskOffset] || color > mask[maskOffset + 1]) {
418
485
  opacity = 255;
419
486
  break;
420
487
  }
421
488
  }
489
+
422
490
  alphaBuf[i] = opacity;
423
491
  }
424
492
  } else {
425
493
  throw new _util.FormatError('Unknown mask format.');
426
494
  }
427
495
  }
496
+
428
497
  if (alphaBuf) {
429
498
  for (i = 0, j = 3, ii = width * actualHeight; i < ii; ++i, j += 4) {
430
499
  rgbaBuf[j] = alphaBuf[i];
@@ -437,22 +506,27 @@ var PDFImage = function PDFImageClosure() {
437
506
  },
438
507
  undoPreblend: function undoPreblend(buffer, width, height) {
439
508
  var matte = this.smask && this.smask.matte;
509
+
440
510
  if (!matte) {
441
511
  return;
442
512
  }
513
+
443
514
  var matteRgb = this.colorSpace.getRgb(matte, 0);
444
515
  var matteR = matteRgb[0];
445
516
  var matteG = matteRgb[1];
446
517
  var matteB = matteRgb[2];
447
518
  var length = width * height * 4;
519
+
448
520
  for (var i = 0; i < length; i += 4) {
449
521
  var alpha = buffer[i + 3];
522
+
450
523
  if (alpha === 0) {
451
524
  buffer[i] = 255;
452
525
  buffer[i + 1] = 255;
453
526
  buffer[i + 2] = 255;
454
527
  continue;
455
528
  }
529
+
456
530
  var k = 255 / alpha;
457
531
  buffer[i] = (buffer[i] - matteR) * k + matteR;
458
532
  buffer[i + 1] = (buffer[i + 1] - matteG) * k + matteG;
@@ -461,7 +535,6 @@ var PDFImage = function PDFImageClosure() {
461
535
  },
462
536
  createImageData: function createImageData() {
463
537
  var forceRGBA = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
464
-
465
538
  var drawWidth = this.drawWidth;
466
539
  var drawHeight = this.drawHeight;
467
540
  var imgData = {
@@ -476,16 +549,20 @@ var PDFImage = function PDFImageClosure() {
476
549
  var bpc = this.bpc;
477
550
  var rowBytes = originalWidth * numComps * bpc + 7 >> 3;
478
551
  var imgArray;
552
+
479
553
  if (!forceRGBA) {
480
554
  var kind;
555
+
481
556
  if (this.colorSpace.name === 'DeviceGray' && bpc === 1) {
482
557
  kind = _util.ImageKind.GRAYSCALE_1BPP;
483
558
  } else if (this.colorSpace.name === 'DeviceRGB' && bpc === 8 && !this.needsDecode) {
484
559
  kind = _util.ImageKind.RGB_24BPP;
485
560
  }
561
+
486
562
  if (kind && !this.smask && !this.mask && drawWidth === originalWidth && drawHeight === originalHeight) {
487
563
  imgData.kind = kind;
488
564
  imgArray = this.getImageBytes(originalHeight * rowBytes);
565
+
489
566
  if (this.image instanceof _stream.DecodeStream) {
490
567
  imgData.data = imgArray;
491
568
  } else {
@@ -493,20 +570,26 @@ var PDFImage = function PDFImageClosure() {
493
570
  newArray.set(imgArray);
494
571
  imgData.data = newArray;
495
572
  }
573
+
496
574
  if (this.needsDecode) {
497
575
  (0, _util.assert)(kind === _util.ImageKind.GRAYSCALE_1BPP, 'PDFImage.createImageData: The image must be grayscale.');
498
576
  var buffer = imgData.data;
577
+
499
578
  for (var i = 0, ii = buffer.length; i < ii; i++) {
500
579
  buffer[i] ^= 0xff;
501
580
  }
502
581
  }
582
+
503
583
  return imgData;
504
584
  }
585
+
505
586
  if (this.image instanceof _jpeg_stream.JpegStream && !this.smask && !this.mask) {
506
587
  var imageLength = originalHeight * rowBytes;
588
+
507
589
  switch (this.colorSpace.name) {
508
590
  case 'DeviceGray':
509
591
  imageLength *= 3;
592
+
510
593
  case 'DeviceRGB':
511
594
  case 'DeviceCMYK':
512
595
  imgData.kind = _util.ImageKind.RGB_24BPP;
@@ -515,10 +598,12 @@ var PDFImage = function PDFImageClosure() {
515
598
  }
516
599
  }
517
600
  }
601
+
518
602
  imgArray = this.getImageBytes(originalHeight * rowBytes);
519
603
  var actualHeight = 0 | imgArray.length / rowBytes * drawHeight / originalHeight;
520
604
  var comps = this.getComponents(imgArray);
521
605
  var alpha01, maybeUndoPreblend;
606
+
522
607
  if (!forceRGBA && !this.smask && !this.mask) {
523
608
  imgData.kind = _util.ImageKind.RGB_24BPP;
524
609
  imgData.data = new Uint8ClampedArray(drawWidth * drawHeight * 3);
@@ -531,20 +616,26 @@ var PDFImage = function PDFImageClosure() {
531
616
  maybeUndoPreblend = true;
532
617
  this.fillOpacity(imgData.data, drawWidth, drawHeight, actualHeight, comps);
533
618
  }
619
+
534
620
  if (this.needsDecode) {
535
621
  this.decodeBuffer(comps);
536
622
  }
623
+
537
624
  this.colorSpace.fillRgb(imgData.data, originalWidth, originalHeight, drawWidth, drawHeight, actualHeight, bpc, comps, alpha01);
625
+
538
626
  if (maybeUndoPreblend) {
539
627
  this.undoPreblend(imgData.data, drawWidth, actualHeight);
540
628
  }
629
+
541
630
  return imgData;
542
631
  },
543
632
  fillGrayBuffer: function fillGrayBuffer(buffer) {
544
633
  var numComps = this.numComps;
634
+
545
635
  if (numComps !== 1) {
546
- throw new _util.FormatError('Reading gray scale from a color image: ' + numComps);
636
+ throw new _util.FormatError("Reading gray scale from a color image: ".concat(numComps));
547
637
  }
638
+
548
639
  var width = this.width;
549
640
  var height = this.height;
550
641
  var bpc = this.bpc;
@@ -552,8 +643,10 @@ var PDFImage = function PDFImageClosure() {
552
643
  var imgArray = this.getImageBytes(height * rowBytes);
553
644
  var comps = this.getComponents(imgArray);
554
645
  var i, length;
646
+
555
647
  if (bpc === 1) {
556
648
  length = width * height;
649
+
557
650
  if (this.needsDecode) {
558
651
  for (i = 0; i < length; ++i) {
559
652
  buffer[i] = comps[i] - 1 & 255;
@@ -563,20 +656,23 @@ var PDFImage = function PDFImageClosure() {
563
656
  buffer[i] = -comps[i] & 255;
564
657
  }
565
658
  }
659
+
566
660
  return;
567
661
  }
662
+
568
663
  if (this.needsDecode) {
569
664
  this.decodeBuffer(comps);
570
665
  }
666
+
571
667
  length = width * height;
572
668
  var scale = 255 / ((1 << bpc) - 1);
669
+
573
670
  for (i = 0; i < length; ++i) {
574
671
  buffer[i] = scale * comps[i];
575
672
  }
576
673
  },
577
674
  getImageBytes: function getImageBytes(length, drawWidth, drawHeight) {
578
675
  var forceRGB = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
579
-
580
676
  this.image.reset();
581
677
  this.image.drawWidth = drawWidth || this.width;
582
678
  this.image.drawHeight = drawHeight || this.height;
@@ -586,4 +682,5 @@ var PDFImage = function PDFImageClosure() {
586
682
  };
587
683
  return PDFImage;
588
684
  }();
685
+
589
686
  exports.PDFImage = PDFImage;