pdfjs-dist 2.5.207 → 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 (133) hide show
  1. package/bower.json +1 -1
  2. package/build/pdf.js +867 -216
  3. package/build/pdf.js.map +1 -1
  4. package/build/pdf.min.js +1 -1
  5. package/build/pdf.worker.js +10214 -8547
  6. package/build/pdf.worker.js.map +1 -1
  7. package/build/pdf.worker.min.js +1 -1
  8. package/es5/build/pdf.js +2023 -1046
  9. package/es5/build/pdf.js.map +1 -1
  10. package/es5/build/pdf.min.js +22 -0
  11. package/es5/build/pdf.worker.js +11136 -8144
  12. package/es5/build/pdf.worker.js.map +1 -1
  13. package/es5/build/pdf.worker.min.js +22 -0
  14. package/es5/image_decoders/pdf.image_decoders.js +12529 -0
  15. package/es5/image_decoders/pdf.image_decoders.js.map +1 -0
  16. package/es5/image_decoders/pdf.image_decoders.min.js +22 -0
  17. package/es5/web/images/shadow.png +0 -0
  18. package/es5/web/pdf_viewer.css +8 -5
  19. package/es5/web/pdf_viewer.js +195 -51
  20. package/es5/web/pdf_viewer.js.map +1 -1
  21. package/image_decoders/pdf.image_decoders.js +24 -16
  22. package/image_decoders/pdf.image_decoders.js.map +1 -1
  23. package/image_decoders/pdf.image_decoders.min.js +1 -1
  24. package/lib/core/annotation.js +479 -43
  25. package/lib/core/cff_parser.js +643 -615
  26. package/lib/core/chunked_stream.js +64 -50
  27. package/lib/core/colorspace.js +126 -104
  28. package/lib/core/crypto.js +37 -0
  29. package/lib/core/document.js +128 -75
  30. package/lib/core/evaluator.js +3015 -2754
  31. package/lib/core/fonts.js +47 -46
  32. package/lib/core/function.js +79 -6
  33. package/lib/core/image.js +364 -357
  34. package/lib/core/image_utils.js +109 -8
  35. package/lib/core/jpg.js +8 -3
  36. package/lib/core/obj.js +255 -34
  37. package/lib/core/operator_list.js +17 -15
  38. package/lib/core/parser.js +40 -3
  39. package/lib/core/pattern.js +24 -11
  40. package/lib/core/primitives.js +112 -53
  41. package/lib/core/type1_parser.js +2 -0
  42. package/lib/core/worker.js +102 -37
  43. package/lib/core/writer.js +242 -0
  44. package/lib/display/annotation_layer.js +51 -10
  45. package/lib/display/annotation_storage.js +89 -0
  46. package/lib/display/api.js +140 -54
  47. package/lib/display/canvas.js +215 -46
  48. package/lib/display/display_utils.js +55 -18
  49. package/lib/display/fetch_stream.js +6 -0
  50. package/lib/display/font_loader.js +26 -15
  51. package/lib/display/metadata.js +1 -7
  52. package/lib/display/network.js +0 -14
  53. package/lib/display/node_utils.js +87 -0
  54. package/lib/display/optional_content_config.js +184 -0
  55. package/lib/display/svg.js +1 -1
  56. package/lib/display/text_layer.js +4 -1
  57. package/lib/pdf.js +2 -2
  58. package/lib/pdf.worker.js +2 -2
  59. package/lib/shared/is_node.js +1 -1
  60. package/lib/shared/util.js +13 -10
  61. package/lib/test/unit/annotation_spec.js +520 -50
  62. package/lib/test/unit/annotation_storage_spec.js +83 -0
  63. package/lib/test/unit/api_spec.js +16 -6
  64. package/lib/test/unit/cmap_spec.js +4 -4
  65. package/lib/test/unit/colorspace_spec.js +216 -24
  66. package/lib/test/unit/crypto_spec.js +51 -4
  67. package/lib/test/unit/custom_spec.js +129 -1
  68. package/lib/test/unit/document_spec.js +112 -1
  69. package/lib/test/unit/evaluator_spec.js +29 -10
  70. package/lib/test/unit/jasmine-boot.js +1 -1
  71. package/lib/test/unit/metadata_spec.js +3 -3
  72. package/lib/test/unit/primitives_spec.js +242 -63
  73. package/lib/test/unit/test_utils.js +42 -89
  74. package/lib/test/unit/testreporter.js +17 -6
  75. package/lib/test/unit/util_spec.js +13 -12
  76. package/lib/test/unit/writer_spec.js +84 -0
  77. package/lib/web/annotation_layer_builder.js +13 -9
  78. package/lib/web/app.js +231 -26
  79. package/lib/web/app_options.js +1 -6
  80. package/lib/web/base_tree_viewer.js +100 -0
  81. package/lib/web/base_viewer.js +53 -4
  82. package/lib/web/download_manager.js +3 -10
  83. package/lib/web/firefox_print_service.js +32 -12
  84. package/lib/web/firefoxcom.js +20 -6
  85. package/lib/web/interfaces.js +1 -1
  86. package/lib/web/pdf_attachment_viewer.js +80 -38
  87. package/lib/web/pdf_find_controller.js +2 -1
  88. package/lib/web/pdf_layer_viewer.js +208 -0
  89. package/lib/web/pdf_outline_viewer.js +24 -57
  90. package/lib/web/pdf_page_view.js +29 -6
  91. package/lib/web/pdf_print_service.js +13 -11
  92. package/lib/web/pdf_sidebar.js +46 -25
  93. package/lib/web/pdf_thumbnail_view.js +16 -3
  94. package/lib/web/pdf_thumbnail_viewer.js +17 -1
  95. package/lib/web/pdf_viewer.component.js +2 -2
  96. package/lib/web/preferences.js +1 -1
  97. package/lib/web/toolbar.js +1 -1
  98. package/lib/web/ui_utils.js +7 -1
  99. package/package.json +3 -1
  100. package/types/display/annotation_layer.d.ts +61 -0
  101. package/types/display/annotation_storage.d.ts +36 -0
  102. package/types/display/api.d.ts +1107 -0
  103. package/types/display/api_compatibility.d.ts +1 -0
  104. package/types/display/canvas.d.ts +4 -0
  105. package/types/display/content_disposition.d.ts +7 -0
  106. package/types/display/display_utils.d.ts +243 -0
  107. package/types/display/fetch_stream.d.ts +67 -0
  108. package/types/display/font_loader.d.ts +19 -0
  109. package/types/display/metadata.d.ts +9 -0
  110. package/types/display/network.d.ts +80 -0
  111. package/types/display/network_utils.d.ts +14 -0
  112. package/types/display/node_stream.d.ts +72 -0
  113. package/types/display/node_utils.d.ts +6 -0
  114. package/types/display/optional_content_config.d.ts +12 -0
  115. package/types/display/pattern_helper.d.ts +5 -0
  116. package/types/display/svg.d.ts +2 -0
  117. package/types/display/text_layer.d.ts +83 -0
  118. package/types/display/transport_stream.d.ts +57 -0
  119. package/types/display/webgl.d.ts +20 -0
  120. package/types/display/worker_options.d.ts +27 -0
  121. package/types/display/xml_parser.d.ts +35 -0
  122. package/types/pdf.d.ts +33 -0
  123. package/types/shared/compatibility.d.ts +1 -0
  124. package/types/shared/is_node.d.ts +1 -0
  125. package/types/shared/message_handler.d.ts +62 -0
  126. package/types/shared/util.d.ts +421 -0
  127. package/web/images/shadow.png +0 -0
  128. package/web/pdf_viewer.css +8 -5
  129. package/web/pdf_viewer.js +109 -33
  130. package/web/pdf_viewer.js.map +1 -1
  131. package/webpack.js +1 -9
  132. package/es5/web/images/texture.png +0 -0
  133. package/web/images/texture.png +0 -0
package/lib/core/image.js CHANGED
@@ -38,58 +38,58 @@ var _jpeg_stream = require("./jpeg_stream.js");
38
38
 
39
39
  var _jpx = require("./jpx.js");
40
40
 
41
- var PDFImage = function PDFImageClosure() {
42
- function decodeAndClamp(value, addend, coefficient, max) {
43
- value = addend + value * coefficient;
44
-
45
- if (value < 0) {
46
- value = 0;
47
- } else if (value > max) {
48
- value = max;
49
- }
41
+ function decodeAndClamp(value, addend, coefficient, max) {
42
+ value = addend + value * coefficient;
50
43
 
51
- return value;
44
+ if (value < 0) {
45
+ value = 0;
46
+ } else if (value > max) {
47
+ value = max;
52
48
  }
53
49
 
54
- function resizeImageMask(src, bpc, w1, h1, w2, h2) {
55
- var length = w2 * h2;
56
- let dest;
50
+ return value;
51
+ }
57
52
 
58
- if (bpc <= 8) {
59
- dest = new Uint8Array(length);
60
- } else if (bpc <= 16) {
61
- dest = new Uint16Array(length);
62
- } else {
63
- dest = new Uint32Array(length);
64
- }
53
+ function resizeImageMask(src, bpc, w1, h1, w2, h2) {
54
+ var length = w2 * h2;
55
+ let dest;
65
56
 
66
- var xRatio = w1 / w2;
67
- var yRatio = h1 / h2;
68
- var i,
69
- j,
70
- py,
71
- newIndex = 0,
72
- oldIndex;
73
- var xScaled = new Uint16Array(w2);
74
- var w1Scanline = w1;
75
-
76
- for (i = 0; i < w2; i++) {
77
- xScaled[i] = Math.floor(i * xRatio);
78
- }
57
+ if (bpc <= 8) {
58
+ dest = new Uint8Array(length);
59
+ } else if (bpc <= 16) {
60
+ dest = new Uint16Array(length);
61
+ } else {
62
+ dest = new Uint32Array(length);
63
+ }
79
64
 
80
- for (i = 0; i < h2; i++) {
81
- py = Math.floor(i * yRatio) * w1Scanline;
65
+ var xRatio = w1 / w2;
66
+ var yRatio = h1 / h2;
67
+ var i,
68
+ j,
69
+ py,
70
+ newIndex = 0,
71
+ oldIndex;
72
+ var xScaled = new Uint16Array(w2);
73
+ var w1Scanline = w1;
74
+
75
+ for (i = 0; i < w2; i++) {
76
+ xScaled[i] = Math.floor(i * xRatio);
77
+ }
82
78
 
83
- for (j = 0; j < w2; j++) {
84
- oldIndex = py + xScaled[j];
85
- dest[newIndex++] = src[oldIndex];
86
- }
87
- }
79
+ for (i = 0; i < h2; i++) {
80
+ py = Math.floor(i * yRatio) * w1Scanline;
88
81
 
89
- return dest;
82
+ for (j = 0; j < w2; j++) {
83
+ oldIndex = py + xScaled[j];
84
+ dest[newIndex++] = src[oldIndex];
85
+ }
90
86
  }
91
87
 
92
- function PDFImage({
88
+ return dest;
89
+ }
90
+
91
+ class PDFImage {
92
+ constructor({
93
93
  xref,
94
94
  res,
95
95
  image,
@@ -97,7 +97,8 @@ var PDFImage = function PDFImageClosure() {
97
97
  smask = null,
98
98
  mask = null,
99
99
  isMask = false,
100
- pdfFunctionFactory
100
+ pdfFunctionFactory,
101
+ localColorSpaceCache
101
102
  }) {
102
103
  this.image = image;
103
104
  var dict = image.dict;
@@ -157,7 +158,7 @@ var PDFImage = function PDFImageClosure() {
157
158
  this.bpc = bitsPerComponent;
158
159
 
159
160
  if (!this.imageMask) {
160
- var colorSpace = dict.get("ColorSpace", "CS");
161
+ let colorSpace = dict.getRaw("ColorSpace") || dict.getRaw("CS");
161
162
 
162
163
  if (!colorSpace) {
163
164
  (0, _util.info)("JPX images (which do not require color spaces)");
@@ -180,8 +181,13 @@ var PDFImage = function PDFImageClosure() {
180
181
  }
181
182
  }
182
183
 
183
- const resources = isInline ? res : null;
184
- this.colorSpace = _colorspace.ColorSpace.parse(colorSpace, xref, resources, pdfFunctionFactory);
184
+ this.colorSpace = _colorspace.ColorSpace.parse({
185
+ cs: colorSpace,
186
+ xref,
187
+ resources: isInline ? res : null,
188
+ pdfFunctionFactory,
189
+ localColorSpaceCache
190
+ });
185
191
  this.numComps = this.colorSpace.numComps;
186
192
  }
187
193
 
@@ -209,7 +215,8 @@ var PDFImage = function PDFImageClosure() {
209
215
  res,
210
216
  image: smask,
211
217
  isInline,
212
- pdfFunctionFactory
218
+ pdfFunctionFactory,
219
+ localColorSpaceCache
213
220
  });
214
221
  } else if (mask) {
215
222
  if ((0, _primitives.isStream)(mask)) {
@@ -225,7 +232,8 @@ var PDFImage = function PDFImageClosure() {
225
232
  image: mask,
226
233
  isInline,
227
234
  isMask: true,
228
- pdfFunctionFactory
235
+ pdfFunctionFactory,
236
+ localColorSpaceCache
229
237
  });
230
238
  }
231
239
  } else {
@@ -234,12 +242,13 @@ var PDFImage = function PDFImageClosure() {
234
242
  }
235
243
  }
236
244
 
237
- PDFImage.buildImage = function ({
245
+ static async buildImage({
238
246
  xref,
239
247
  res,
240
248
  image,
241
249
  isInline = false,
242
- pdfFunctionFactory
250
+ pdfFunctionFactory,
251
+ localColorSpaceCache
243
252
  }) {
244
253
  const imageData = image;
245
254
  let smaskData = null;
@@ -257,18 +266,19 @@ var PDFImage = function PDFImageClosure() {
257
266
  }
258
267
  }
259
268
 
260
- return Promise.resolve(new PDFImage({
269
+ return new PDFImage({
261
270
  xref,
262
271
  res,
263
272
  image: imageData,
264
273
  isInline,
265
274
  smask: smaskData,
266
275
  mask: maskData,
267
- pdfFunctionFactory
268
- }));
269
- };
276
+ pdfFunctionFactory,
277
+ localColorSpaceCache
278
+ });
279
+ }
270
280
 
271
- PDFImage.createMask = function ({
281
+ static createMask({
272
282
  imgArray,
273
283
  width,
274
284
  height,
@@ -305,378 +315,375 @@ var PDFImage = function PDFImageClosure() {
305
315
  width,
306
316
  height
307
317
  };
308
- };
309
-
310
- PDFImage.prototype = {
311
- get drawWidth() {
312
- return Math.max(this.width, this.smask && this.smask.width || 0, this.mask && this.mask.width || 0);
313
- },
314
-
315
- get drawHeight() {
316
- return Math.max(this.height, this.smask && this.smask.height || 0, this.mask && this.mask.height || 0);
317
- },
318
-
319
- decodeBuffer(buffer) {
320
- var bpc = this.bpc;
321
- var numComps = this.numComps;
322
- var decodeAddends = this.decodeAddends;
323
- var decodeCoefficients = this.decodeCoefficients;
324
- var max = (1 << bpc) - 1;
325
- var i, ii;
326
-
327
- if (bpc === 1) {
328
- for (i = 0, ii = buffer.length; i < ii; i++) {
329
- buffer[i] = +!buffer[i];
330
- }
318
+ }
331
319
 
332
- return;
333
- }
320
+ get drawWidth() {
321
+ return Math.max(this.width, this.smask && this.smask.width || 0, this.mask && this.mask.width || 0);
322
+ }
334
323
 
335
- var index = 0;
324
+ get drawHeight() {
325
+ return Math.max(this.height, this.smask && this.smask.height || 0, this.mask && this.mask.height || 0);
326
+ }
336
327
 
337
- for (i = 0, ii = this.width * this.height; i < ii; i++) {
338
- for (var j = 0; j < numComps; j++) {
339
- buffer[index] = decodeAndClamp(buffer[index], decodeAddends[j], decodeCoefficients[j], max);
340
- index++;
341
- }
328
+ decodeBuffer(buffer) {
329
+ var bpc = this.bpc;
330
+ var numComps = this.numComps;
331
+ var decodeAddends = this.decodeAddends;
332
+ var decodeCoefficients = this.decodeCoefficients;
333
+ var max = (1 << bpc) - 1;
334
+ var i, ii;
335
+
336
+ if (bpc === 1) {
337
+ for (i = 0, ii = buffer.length; i < ii; i++) {
338
+ buffer[i] = +!buffer[i];
342
339
  }
343
- },
344
340
 
345
- getComponents(buffer) {
346
- var bpc = this.bpc;
341
+ return;
342
+ }
347
343
 
348
- if (bpc === 8) {
349
- return buffer;
350
- }
344
+ var index = 0;
351
345
 
352
- var width = this.width;
353
- var height = this.height;
354
- var numComps = this.numComps;
355
- var length = width * height * numComps;
356
- var bufferPos = 0;
357
- let output;
358
-
359
- if (bpc <= 8) {
360
- output = new Uint8Array(length);
361
- } else if (bpc <= 16) {
362
- output = new Uint16Array(length);
363
- } else {
364
- output = new Uint32Array(length);
346
+ for (i = 0, ii = this.width * this.height; i < ii; i++) {
347
+ for (var j = 0; j < numComps; j++) {
348
+ buffer[index] = decodeAndClamp(buffer[index], decodeAddends[j], decodeCoefficients[j], max);
349
+ index++;
365
350
  }
351
+ }
352
+ }
366
353
 
367
- var rowComps = width * numComps;
368
- var max = (1 << bpc) - 1;
369
- var i = 0,
370
- ii,
371
- buf;
372
-
373
- if (bpc === 1) {
374
- var mask, loop1End, loop2End;
375
-
376
- for (var j = 0; j < height; j++) {
377
- loop1End = i + (rowComps & ~7);
378
- loop2End = i + rowComps;
379
-
380
- while (i < loop1End) {
381
- buf = buffer[bufferPos++];
382
- output[i] = buf >> 7 & 1;
383
- output[i + 1] = buf >> 6 & 1;
384
- output[i + 2] = buf >> 5 & 1;
385
- output[i + 3] = buf >> 4 & 1;
386
- output[i + 4] = buf >> 3 & 1;
387
- output[i + 5] = buf >> 2 & 1;
388
- output[i + 6] = buf >> 1 & 1;
389
- output[i + 7] = buf & 1;
390
- i += 8;
391
- }
354
+ getComponents(buffer) {
355
+ var bpc = this.bpc;
392
356
 
393
- if (i < loop2End) {
394
- buf = buffer[bufferPos++];
395
- mask = 128;
357
+ if (bpc === 8) {
358
+ return buffer;
359
+ }
396
360
 
397
- while (i < loop2End) {
398
- output[i++] = +!!(buf & mask);
399
- mask >>= 1;
400
- }
401
- }
361
+ var width = this.width;
362
+ var height = this.height;
363
+ var numComps = this.numComps;
364
+ var length = width * height * numComps;
365
+ var bufferPos = 0;
366
+ let output;
367
+
368
+ if (bpc <= 8) {
369
+ output = new Uint8Array(length);
370
+ } else if (bpc <= 16) {
371
+ output = new Uint16Array(length);
372
+ } else {
373
+ output = new Uint32Array(length);
374
+ }
375
+
376
+ var rowComps = width * numComps;
377
+ var max = (1 << bpc) - 1;
378
+ var i = 0,
379
+ ii,
380
+ buf;
381
+
382
+ if (bpc === 1) {
383
+ var mask, loop1End, loop2End;
384
+
385
+ for (var j = 0; j < height; j++) {
386
+ loop1End = i + (rowComps & ~7);
387
+ loop2End = i + rowComps;
388
+
389
+ while (i < loop1End) {
390
+ buf = buffer[bufferPos++];
391
+ output[i] = buf >> 7 & 1;
392
+ output[i + 1] = buf >> 6 & 1;
393
+ output[i + 2] = buf >> 5 & 1;
394
+ output[i + 3] = buf >> 4 & 1;
395
+ output[i + 4] = buf >> 3 & 1;
396
+ output[i + 5] = buf >> 2 & 1;
397
+ output[i + 6] = buf >> 1 & 1;
398
+ output[i + 7] = buf & 1;
399
+ i += 8;
402
400
  }
403
- } else {
404
- var bits = 0;
405
- buf = 0;
406
401
 
407
- for (i = 0, ii = length; i < ii; ++i) {
408
- if (i % rowComps === 0) {
409
- buf = 0;
410
- bits = 0;
411
- }
402
+ if (i < loop2End) {
403
+ buf = buffer[bufferPos++];
404
+ mask = 128;
412
405
 
413
- while (bits < bpc) {
414
- buf = buf << 8 | buffer[bufferPos++];
415
- bits += 8;
406
+ while (i < loop2End) {
407
+ output[i++] = +!!(buf & mask);
408
+ mask >>= 1;
416
409
  }
410
+ }
411
+ }
412
+ } else {
413
+ var bits = 0;
414
+ buf = 0;
417
415
 
418
- var remainingBits = bits - bpc;
419
- let value = buf >> remainingBits;
416
+ for (i = 0, ii = length; i < ii; ++i) {
417
+ if (i % rowComps === 0) {
418
+ buf = 0;
419
+ bits = 0;
420
+ }
420
421
 
421
- if (value < 0) {
422
- value = 0;
423
- } else if (value > max) {
424
- value = max;
425
- }
422
+ while (bits < bpc) {
423
+ buf = buf << 8 | buffer[bufferPos++];
424
+ bits += 8;
425
+ }
426
+
427
+ var remainingBits = bits - bpc;
428
+ let value = buf >> remainingBits;
426
429
 
427
- output[i] = value;
428
- buf = buf & (1 << remainingBits) - 1;
429
- bits = remainingBits;
430
+ if (value < 0) {
431
+ value = 0;
432
+ } else if (value > max) {
433
+ value = max;
430
434
  }
435
+
436
+ output[i] = value;
437
+ buf = buf & (1 << remainingBits) - 1;
438
+ bits = remainingBits;
431
439
  }
440
+ }
432
441
 
433
- return output;
434
- },
442
+ return output;
443
+ }
435
444
 
436
- fillOpacity(rgbaBuf, width, height, actualHeight, image) {
437
- var smask = this.smask;
438
- var mask = this.mask;
439
- var alphaBuf, sw, sh, i, ii, j;
445
+ fillOpacity(rgbaBuf, width, height, actualHeight, image) {
446
+ var smask = this.smask;
447
+ var mask = this.mask;
448
+ var alphaBuf, sw, sh, i, ii, j;
440
449
 
441
- if (smask) {
442
- sw = smask.width;
443
- sh = smask.height;
450
+ if (smask) {
451
+ sw = smask.width;
452
+ sh = smask.height;
453
+ alphaBuf = new Uint8ClampedArray(sw * sh);
454
+ smask.fillGrayBuffer(alphaBuf);
455
+
456
+ if (sw !== width || sh !== height) {
457
+ alphaBuf = resizeImageMask(alphaBuf, smask.bpc, sw, sh, width, height);
458
+ }
459
+ } else if (mask) {
460
+ if (mask instanceof PDFImage) {
461
+ sw = mask.width;
462
+ sh = mask.height;
444
463
  alphaBuf = new Uint8ClampedArray(sw * sh);
445
- smask.fillGrayBuffer(alphaBuf);
464
+ mask.numComps = 1;
465
+ mask.fillGrayBuffer(alphaBuf);
466
+
467
+ for (i = 0, ii = sw * sh; i < ii; ++i) {
468
+ alphaBuf[i] = 255 - alphaBuf[i];
469
+ }
446
470
 
447
471
  if (sw !== width || sh !== height) {
448
- alphaBuf = resizeImageMask(alphaBuf, smask.bpc, sw, sh, width, height);
472
+ alphaBuf = resizeImageMask(alphaBuf, mask.bpc, sw, sh, width, height);
449
473
  }
450
- } else if (mask) {
451
- if (mask instanceof PDFImage) {
452
- sw = mask.width;
453
- sh = mask.height;
454
- alphaBuf = new Uint8ClampedArray(sw * sh);
455
- mask.numComps = 1;
456
- mask.fillGrayBuffer(alphaBuf);
457
-
458
- for (i = 0, ii = sw * sh; i < ii; ++i) {
459
- alphaBuf[i] = 255 - alphaBuf[i];
460
- }
474
+ } else if (Array.isArray(mask)) {
475
+ alphaBuf = new Uint8ClampedArray(width * height);
476
+ var numComps = this.numComps;
461
477
 
462
- if (sw !== width || sh !== height) {
463
- alphaBuf = resizeImageMask(alphaBuf, mask.bpc, sw, sh, width, height);
464
- }
465
- } else if (Array.isArray(mask)) {
466
- alphaBuf = new Uint8ClampedArray(width * height);
467
- var numComps = this.numComps;
468
-
469
- for (i = 0, ii = width * height; i < ii; ++i) {
470
- var opacity = 0;
471
- var imageOffset = i * numComps;
472
-
473
- for (j = 0; j < numComps; ++j) {
474
- var color = image[imageOffset + j];
475
- var maskOffset = j * 2;
476
-
477
- if (color < mask[maskOffset] || color > mask[maskOffset + 1]) {
478
- opacity = 255;
479
- break;
480
- }
481
- }
478
+ for (i = 0, ii = width * height; i < ii; ++i) {
479
+ var opacity = 0;
480
+ var imageOffset = i * numComps;
481
+
482
+ for (j = 0; j < numComps; ++j) {
483
+ var color = image[imageOffset + j];
484
+ var maskOffset = j * 2;
482
485
 
483
- alphaBuf[i] = opacity;
486
+ if (color < mask[maskOffset] || color > mask[maskOffset + 1]) {
487
+ opacity = 255;
488
+ break;
489
+ }
484
490
  }
485
- } else {
486
- throw new _util.FormatError("Unknown mask format.");
487
- }
488
- }
489
491
 
490
- if (alphaBuf) {
491
- for (i = 0, j = 3, ii = width * actualHeight; i < ii; ++i, j += 4) {
492
- rgbaBuf[j] = alphaBuf[i];
492
+ alphaBuf[i] = opacity;
493
493
  }
494
494
  } else {
495
- for (i = 0, j = 3, ii = width * actualHeight; i < ii; ++i, j += 4) {
496
- rgbaBuf[j] = 255;
497
- }
495
+ throw new _util.FormatError("Unknown mask format.");
498
496
  }
499
- },
500
-
501
- undoPreblend(buffer, width, height) {
502
- var matte = this.smask && this.smask.matte;
497
+ }
503
498
 
504
- if (!matte) {
505
- return;
499
+ if (alphaBuf) {
500
+ for (i = 0, j = 3, ii = width * actualHeight; i < ii; ++i, j += 4) {
501
+ rgbaBuf[j] = alphaBuf[i];
502
+ }
503
+ } else {
504
+ for (i = 0, j = 3, ii = width * actualHeight; i < ii; ++i, j += 4) {
505
+ rgbaBuf[j] = 255;
506
506
  }
507
+ }
508
+ }
507
509
 
508
- var matteRgb = this.colorSpace.getRgb(matte, 0);
509
- var matteR = matteRgb[0];
510
- var matteG = matteRgb[1];
511
- var matteB = matteRgb[2];
512
- var length = width * height * 4;
510
+ undoPreblend(buffer, width, height) {
511
+ var matte = this.smask && this.smask.matte;
513
512
 
514
- for (var i = 0; i < length; i += 4) {
515
- var alpha = buffer[i + 3];
513
+ if (!matte) {
514
+ return;
515
+ }
516
516
 
517
- if (alpha === 0) {
518
- buffer[i] = 255;
519
- buffer[i + 1] = 255;
520
- buffer[i + 2] = 255;
521
- continue;
522
- }
517
+ var matteRgb = this.colorSpace.getRgb(matte, 0);
518
+ var matteR = matteRgb[0];
519
+ var matteG = matteRgb[1];
520
+ var matteB = matteRgb[2];
521
+ var length = width * height * 4;
523
522
 
524
- var k = 255 / alpha;
525
- buffer[i] = (buffer[i] - matteR) * k + matteR;
526
- buffer[i + 1] = (buffer[i + 1] - matteG) * k + matteG;
527
- buffer[i + 2] = (buffer[i + 2] - matteB) * k + matteB;
528
- }
529
- },
530
-
531
- createImageData(forceRGBA = false) {
532
- var drawWidth = this.drawWidth;
533
- var drawHeight = this.drawHeight;
534
- var imgData = {
535
- width: drawWidth,
536
- height: drawHeight,
537
- kind: 0,
538
- data: null
539
- };
540
- var numComps = this.numComps;
541
- var originalWidth = this.width;
542
- var originalHeight = this.height;
543
- var bpc = this.bpc;
544
- var rowBytes = originalWidth * numComps * bpc + 7 >> 3;
545
- var imgArray;
546
-
547
- if (!forceRGBA) {
548
- var kind;
549
-
550
- if (this.colorSpace.name === "DeviceGray" && bpc === 1) {
551
- kind = _util.ImageKind.GRAYSCALE_1BPP;
552
- } else if (this.colorSpace.name === "DeviceRGB" && bpc === 8 && !this.needsDecode) {
553
- kind = _util.ImageKind.RGB_24BPP;
554
- }
523
+ for (var i = 0; i < length; i += 4) {
524
+ var alpha = buffer[i + 3];
555
525
 
556
- if (kind && !this.smask && !this.mask && drawWidth === originalWidth && drawHeight === originalHeight) {
557
- imgData.kind = kind;
558
- imgArray = this.getImageBytes(originalHeight * rowBytes);
526
+ if (alpha === 0) {
527
+ buffer[i] = 255;
528
+ buffer[i + 1] = 255;
529
+ buffer[i + 2] = 255;
530
+ continue;
531
+ }
559
532
 
560
- if (this.image instanceof _stream.DecodeStream) {
561
- imgData.data = imgArray;
562
- } else {
563
- var newArray = new Uint8ClampedArray(imgArray.length);
564
- newArray.set(imgArray);
565
- imgData.data = newArray;
566
- }
533
+ var k = 255 / alpha;
534
+ buffer[i] = (buffer[i] - matteR) * k + matteR;
535
+ buffer[i + 1] = (buffer[i + 1] - matteG) * k + matteG;
536
+ buffer[i + 2] = (buffer[i + 2] - matteB) * k + matteB;
537
+ }
538
+ }
567
539
 
568
- if (this.needsDecode) {
569
- (0, _util.assert)(kind === _util.ImageKind.GRAYSCALE_1BPP, "PDFImage.createImageData: The image must be grayscale.");
570
- var buffer = imgData.data;
540
+ createImageData(forceRGBA = false) {
541
+ var drawWidth = this.drawWidth;
542
+ var drawHeight = this.drawHeight;
543
+ var imgData = {
544
+ width: drawWidth,
545
+ height: drawHeight,
546
+ kind: 0,
547
+ data: null
548
+ };
549
+ var numComps = this.numComps;
550
+ var originalWidth = this.width;
551
+ var originalHeight = this.height;
552
+ var bpc = this.bpc;
553
+ var rowBytes = originalWidth * numComps * bpc + 7 >> 3;
554
+ var imgArray;
555
+
556
+ if (!forceRGBA) {
557
+ var kind;
558
+
559
+ if (this.colorSpace.name === "DeviceGray" && bpc === 1) {
560
+ kind = _util.ImageKind.GRAYSCALE_1BPP;
561
+ } else if (this.colorSpace.name === "DeviceRGB" && bpc === 8 && !this.needsDecode) {
562
+ kind = _util.ImageKind.RGB_24BPP;
563
+ }
571
564
 
572
- for (var i = 0, ii = buffer.length; i < ii; i++) {
573
- buffer[i] ^= 0xff;
574
- }
575
- }
565
+ if (kind && !this.smask && !this.mask && drawWidth === originalWidth && drawHeight === originalHeight) {
566
+ imgData.kind = kind;
567
+ imgArray = this.getImageBytes(originalHeight * rowBytes);
576
568
 
577
- return imgData;
569
+ if (this.image instanceof _stream.DecodeStream) {
570
+ imgData.data = imgArray;
571
+ } else {
572
+ var newArray = new Uint8ClampedArray(imgArray.length);
573
+ newArray.set(imgArray);
574
+ imgData.data = newArray;
578
575
  }
579
576
 
580
- if (this.image instanceof _jpeg_stream.JpegStream && !this.smask && !this.mask) {
581
- let imageLength = originalHeight * rowBytes;
582
-
583
- switch (this.colorSpace.name) {
584
- case "DeviceGray":
585
- imageLength *= 3;
577
+ if (this.needsDecode) {
578
+ (0, _util.assert)(kind === _util.ImageKind.GRAYSCALE_1BPP, "PDFImage.createImageData: The image must be grayscale.");
579
+ var buffer = imgData.data;
586
580
 
587
- case "DeviceRGB":
588
- case "DeviceCMYK":
589
- imgData.kind = _util.ImageKind.RGB_24BPP;
590
- imgData.data = this.getImageBytes(imageLength, drawWidth, drawHeight, true);
591
- return imgData;
581
+ for (var i = 0, ii = buffer.length; i < ii; i++) {
582
+ buffer[i] ^= 0xff;
592
583
  }
593
584
  }
585
+
586
+ return imgData;
594
587
  }
595
588
 
596
- imgArray = this.getImageBytes(originalHeight * rowBytes);
597
- var actualHeight = 0 | imgArray.length / rowBytes * drawHeight / originalHeight;
598
- var comps = this.getComponents(imgArray);
599
- var alpha01, maybeUndoPreblend;
589
+ if (this.image instanceof _jpeg_stream.JpegStream && !this.smask && !this.mask) {
590
+ let imageLength = originalHeight * rowBytes;
600
591
 
601
- if (!forceRGBA && !this.smask && !this.mask) {
602
- imgData.kind = _util.ImageKind.RGB_24BPP;
603
- imgData.data = new Uint8ClampedArray(drawWidth * drawHeight * 3);
604
- alpha01 = 0;
605
- maybeUndoPreblend = false;
606
- } else {
607
- imgData.kind = _util.ImageKind.RGBA_32BPP;
608
- imgData.data = new Uint8ClampedArray(drawWidth * drawHeight * 4);
609
- alpha01 = 1;
610
- maybeUndoPreblend = true;
611
- this.fillOpacity(imgData.data, drawWidth, drawHeight, actualHeight, comps);
612
- }
592
+ switch (this.colorSpace.name) {
593
+ case "DeviceGray":
594
+ imageLength *= 3;
613
595
 
614
- if (this.needsDecode) {
615
- this.decodeBuffer(comps);
596
+ case "DeviceRGB":
597
+ case "DeviceCMYK":
598
+ imgData.kind = _util.ImageKind.RGB_24BPP;
599
+ imgData.data = this.getImageBytes(imageLength, drawWidth, drawHeight, true);
600
+ return imgData;
601
+ }
616
602
  }
603
+ }
617
604
 
618
- this.colorSpace.fillRgb(imgData.data, originalWidth, originalHeight, drawWidth, drawHeight, actualHeight, bpc, comps, alpha01);
605
+ imgArray = this.getImageBytes(originalHeight * rowBytes);
606
+ var actualHeight = 0 | imgArray.length / rowBytes * drawHeight / originalHeight;
607
+ var comps = this.getComponents(imgArray);
608
+ var alpha01, maybeUndoPreblend;
619
609
 
620
- if (maybeUndoPreblend) {
621
- this.undoPreblend(imgData.data, drawWidth, actualHeight);
622
- }
610
+ if (!forceRGBA && !this.smask && !this.mask) {
611
+ imgData.kind = _util.ImageKind.RGB_24BPP;
612
+ imgData.data = new Uint8ClampedArray(drawWidth * drawHeight * 3);
613
+ alpha01 = 0;
614
+ maybeUndoPreblend = false;
615
+ } else {
616
+ imgData.kind = _util.ImageKind.RGBA_32BPP;
617
+ imgData.data = new Uint8ClampedArray(drawWidth * drawHeight * 4);
618
+ alpha01 = 1;
619
+ maybeUndoPreblend = true;
620
+ this.fillOpacity(imgData.data, drawWidth, drawHeight, actualHeight, comps);
621
+ }
623
622
 
624
- return imgData;
625
- },
623
+ if (this.needsDecode) {
624
+ this.decodeBuffer(comps);
625
+ }
626
626
 
627
- fillGrayBuffer(buffer) {
628
- var numComps = this.numComps;
627
+ this.colorSpace.fillRgb(imgData.data, originalWidth, originalHeight, drawWidth, drawHeight, actualHeight, bpc, comps, alpha01);
629
628
 
630
- if (numComps !== 1) {
631
- throw new _util.FormatError(`Reading gray scale from a color image: ${numComps}`);
632
- }
629
+ if (maybeUndoPreblend) {
630
+ this.undoPreblend(imgData.data, drawWidth, actualHeight);
631
+ }
633
632
 
634
- var width = this.width;
635
- var height = this.height;
636
- var bpc = this.bpc;
637
- var rowBytes = width * numComps * bpc + 7 >> 3;
638
- var imgArray = this.getImageBytes(height * rowBytes);
639
- var comps = this.getComponents(imgArray);
640
- var i, length;
633
+ return imgData;
634
+ }
641
635
 
642
- if (bpc === 1) {
643
- length = width * height;
636
+ fillGrayBuffer(buffer) {
637
+ var numComps = this.numComps;
644
638
 
645
- if (this.needsDecode) {
646
- for (i = 0; i < length; ++i) {
647
- buffer[i] = comps[i] - 1 & 255;
648
- }
649
- } else {
650
- for (i = 0; i < length; ++i) {
651
- buffer[i] = -comps[i] & 255;
652
- }
653
- }
639
+ if (numComps !== 1) {
640
+ throw new _util.FormatError(`Reading gray scale from a color image: ${numComps}`);
641
+ }
654
642
 
655
- return;
656
- }
643
+ var width = this.width;
644
+ var height = this.height;
645
+ var bpc = this.bpc;
646
+ var rowBytes = width * numComps * bpc + 7 >> 3;
647
+ var imgArray = this.getImageBytes(height * rowBytes);
648
+ var comps = this.getComponents(imgArray);
649
+ var i, length;
650
+
651
+ if (bpc === 1) {
652
+ length = width * height;
657
653
 
658
654
  if (this.needsDecode) {
659
- this.decodeBuffer(comps);
655
+ for (i = 0; i < length; ++i) {
656
+ buffer[i] = comps[i] - 1 & 255;
657
+ }
658
+ } else {
659
+ for (i = 0; i < length; ++i) {
660
+ buffer[i] = -comps[i] & 255;
661
+ }
660
662
  }
661
663
 
662
- length = width * height;
663
- var scale = 255 / ((1 << bpc) - 1);
664
+ return;
665
+ }
664
666
 
665
- for (i = 0; i < length; ++i) {
666
- buffer[i] = scale * comps[i];
667
- }
668
- },
669
-
670
- getImageBytes(length, drawWidth, drawHeight, forceRGB = false) {
671
- this.image.reset();
672
- this.image.drawWidth = drawWidth || this.width;
673
- this.image.drawHeight = drawHeight || this.height;
674
- this.image.forceRGB = !!forceRGB;
675
- return this.image.getBytes(length, true);
667
+ if (this.needsDecode) {
668
+ this.decodeBuffer(comps);
669
+ }
670
+
671
+ length = width * height;
672
+ var scale = 255 / ((1 << bpc) - 1);
673
+
674
+ for (i = 0; i < length; ++i) {
675
+ buffer[i] = scale * comps[i];
676
676
  }
677
+ }
678
+
679
+ getImageBytes(length, drawWidth, drawHeight, forceRGB = false) {
680
+ this.image.reset();
681
+ this.image.drawWidth = drawWidth || this.width;
682
+ this.image.drawHeight = drawHeight || this.height;
683
+ this.image.forceRGB = !!forceRGB;
684
+ return this.image.getBytes(length, true);
685
+ }
677
686
 
678
- };
679
- return PDFImage;
680
- }();
687
+ }
681
688
 
682
689
  exports.PDFImage = PDFImage;