pdfjs-dist 2.1.266 → 2.5.207
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of pdfjs-dist might be problematic. Click here for more details.
- package/CODE_OF_CONDUCT.md +15 -0
- package/README.md +4 -0
- package/bower.json +1 -1
- package/build/pdf.js +8382 -18492
- package/build/pdf.js.map +1 -1
- package/build/pdf.min.js +22 -1
- package/build/pdf.worker.entry.js +5 -3
- package/build/pdf.worker.js +20417 -29816
- package/build/pdf.worker.js.map +1 -1
- package/build/pdf.worker.min.js +22 -1
- package/es5/build/pdf.js +25688 -0
- package/es5/build/pdf.js.map +1 -0
- package/{lib/shared/global_scope.js → es5/build/pdf.worker.entry.js} +5 -10
- package/es5/build/pdf.worker.js +58239 -0
- package/es5/build/pdf.worker.js.map +1 -0
- package/es5/web/images/annotation-check.svg +11 -0
- package/es5/web/images/annotation-comment.svg +16 -0
- package/es5/web/images/annotation-help.svg +26 -0
- package/es5/web/images/annotation-insert.svg +10 -0
- package/es5/web/images/annotation-key.svg +11 -0
- package/es5/web/images/annotation-newparagraph.svg +11 -0
- package/es5/web/images/annotation-noicon.svg +7 -0
- package/es5/web/images/annotation-note.svg +42 -0
- package/es5/web/images/annotation-paragraph.svg +16 -0
- package/es5/web/images/loading-icon.gif +0 -0
- package/es5/web/images/shadow.png +0 -0
- package/es5/web/images/texture.png +0 -0
- package/es5/web/pdf_viewer.css +403 -0
- package/es5/web/pdf_viewer.js +7742 -0
- package/es5/web/pdf_viewer.js.map +1 -0
- package/image_decoders/pdf.image_decoders.js +1475 -4897
- package/image_decoders/pdf.image_decoders.js.map +1 -1
- package/image_decoders/pdf.image_decoders.min.js +22 -1
- package/lib/README.md +7 -0
- package/lib/core/annotation.js +750 -899
- package/lib/core/arithmetic_decoder.js +81 -97
- package/lib/core/bidi.js +54 -46
- package/lib/core/ccitt.js +88 -81
- package/lib/core/ccitt_stream.js +15 -14
- package/lib/core/cff_parser.js +235 -183
- package/lib/core/charsets.js +4 -4
- package/lib/core/chunked_stream.js +447 -542
- package/lib/core/cmap.js +222 -264
- package/lib/core/colorspace.js +699 -863
- package/lib/core/core_utils.js +152 -0
- package/lib/core/crypto.js +379 -437
- package/lib/core/document.js +573 -660
- package/lib/core/encodings.js +15 -15
- package/lib/core/evaluator.js +1103 -868
- package/lib/core/font_renderer.js +135 -178
- package/lib/core/fonts.js +570 -491
- package/lib/core/function.js +291 -288
- package/lib/core/glyphlist.js +4527 -4526
- package/lib/core/image.js +145 -149
- package/lib/core/image_utils.js +170 -0
- package/lib/core/jbig2.js +325 -316
- package/lib/core/jbig2_stream.js +18 -17
- package/lib/core/jpeg_stream.js +21 -26
- package/lib/core/jpg.js +284 -232
- package/lib/core/jpx.js +161 -143
- package/lib/core/jpx_stream.js +28 -28
- package/lib/core/metrics.js +2929 -2929
- package/lib/core/murmurhash3.js +90 -101
- package/lib/core/obj.js +1183 -1157
- package/lib/core/operator_list.js +99 -67
- package/lib/core/parser.js +972 -911
- package/lib/core/pattern.js +87 -70
- package/lib/core/pdf_manager.js +150 -315
- package/lib/core/primitives.js +83 -56
- package/lib/core/ps_parser.js +175 -214
- package/lib/core/standard_fonts.js +237 -236
- package/lib/core/stream.js +94 -74
- package/lib/core/type1_parser.js +87 -69
- package/lib/core/unicode.js +1654 -1654
- package/lib/core/worker.js +193 -390
- package/lib/core/worker_stream.js +168 -0
- package/lib/display/annotation_layer.js +741 -972
- package/lib/display/api.js +1500 -1791
- package/lib/display/api_compatibility.js +12 -17
- package/lib/display/canvas.js +165 -165
- package/lib/display/content_disposition.js +40 -59
- package/lib/display/display_utils.js +515 -0
- package/lib/display/fetch_stream.js +183 -298
- package/lib/display/font_loader.js +273 -413
- package/lib/display/metadata.js +86 -98
- package/lib/display/network.js +266 -359
- package/lib/display/network_utils.js +25 -18
- package/lib/display/node_stream.js +285 -458
- package/lib/display/pattern_helper.js +113 -65
- package/lib/display/svg.js +1166 -901
- package/lib/display/text_layer.js +156 -132
- package/lib/display/transport_stream.js +262 -278
- package/lib/display/webgl.js +70 -83
- package/lib/display/worker_options.js +3 -3
- package/lib/display/xml_parser.js +303 -392
- package/lib/examples/node/domstubs.js +40 -37
- package/lib/pdf.js +226 -59
- package/lib/pdf.worker.js +14 -6
- package/lib/shared/compatibility.js +3 -246
- package/lib/shared/is_node.js +7 -6
- package/lib/shared/message_handler.js +327 -332
- package/lib/shared/util.js +266 -416
- package/lib/test/unit/annotation_spec.js +1555 -701
- package/lib/test/unit/api_spec.js +802 -604
- package/lib/test/unit/bidi_spec.js +7 -7
- package/lib/test/unit/cff_parser_spec.js +84 -69
- package/lib/test/unit/clitests_helper.js +7 -9
- package/lib/test/unit/cmap_spec.js +74 -76
- package/lib/test/unit/colorspace_spec.js +166 -161
- package/lib/test/unit/core_utils_spec.js +211 -0
- package/lib/test/unit/crypto_spec.js +181 -181
- package/lib/test/unit/custom_spec.js +20 -22
- package/lib/test/unit/display_svg_spec.js +34 -39
- package/lib/test/unit/display_utils_spec.js +263 -0
- package/lib/test/unit/document_spec.js +16 -21
- package/lib/test/unit/encodings_spec.js +12 -34
- package/lib/test/unit/evaluator_spec.js +83 -83
- package/lib/test/unit/fetch_stream_spec.js +111 -0
- package/lib/test/unit/function_spec.js +206 -204
- package/lib/test/unit/jasmine-boot.js +46 -30
- package/lib/test/unit/message_handler_spec.js +173 -159
- package/lib/test/unit/metadata_spec.js +69 -69
- package/lib/test/unit/murmurhash3_spec.js +12 -12
- package/lib/test/unit/network_spec.js +13 -61
- package/lib/test/unit/network_utils_spec.js +183 -119
- package/lib/test/unit/node_stream_spec.js +78 -92
- package/lib/test/unit/parser_spec.js +172 -114
- package/lib/test/unit/pdf_find_controller_spec.js +55 -86
- package/lib/test/unit/pdf_find_utils_spec.js +32 -32
- package/lib/test/unit/pdf_history_spec.js +32 -32
- package/lib/test/unit/primitives_spec.js +140 -125
- package/lib/test/unit/stream_spec.js +16 -14
- package/lib/test/unit/test_utils.js +131 -143
- package/lib/test/unit/testreporter.js +19 -19
- package/lib/test/unit/type1_parser_spec.js +42 -42
- package/lib/test/unit/ui_utils_spec.js +297 -459
- package/lib/test/unit/unicode_spec.js +38 -38
- package/lib/test/unit/util_spec.js +121 -305
- package/lib/web/annotation_layer_builder.js +66 -103
- package/lib/web/app.js +1328 -1214
- package/lib/web/app_options.js +105 -107
- package/lib/web/base_viewer.js +824 -838
- package/lib/web/chromecom.js +165 -252
- package/lib/web/debugger.js +149 -205
- package/lib/web/download_manager.js +39 -55
- package/lib/web/firefox_print_service.js +37 -27
- package/lib/web/firefoxcom.js +212 -363
- package/lib/web/genericcom.js +26 -108
- package/lib/web/genericl10n.js +24 -153
- package/lib/web/grab_to_pan.js +32 -30
- package/lib/web/interfaces.js +80 -254
- package/lib/web/overlay_manager.js +70 -246
- package/lib/web/password_prompt.js +38 -64
- package/lib/web/pdf_attachment_viewer.js +113 -131
- package/lib/web/pdf_cursor_tools.js +75 -102
- package/lib/web/pdf_document_properties.js +221 -306
- package/lib/web/pdf_find_bar.js +136 -170
- package/lib/web/pdf_find_controller.js +491 -548
- package/lib/web/pdf_find_utils.js +13 -13
- package/lib/web/pdf_history.js +397 -406
- package/lib/web/pdf_link_service.js +304 -348
- package/lib/web/pdf_outline_viewer.js +140 -175
- package/lib/web/pdf_page_view.js +452 -523
- package/lib/web/pdf_presentation_mode.js +308 -357
- package/lib/web/pdf_print_service.js +90 -104
- package/lib/web/pdf_rendering_queue.js +84 -108
- package/lib/web/pdf_sidebar.js +276 -306
- package/lib/web/pdf_sidebar_resizer.js +92 -119
- package/lib/web/pdf_single_page_viewer.js +77 -126
- package/lib/web/pdf_thumbnail_view.js +276 -297
- package/lib/web/pdf_thumbnail_viewer.js +186 -206
- package/lib/web/pdf_viewer.component.js +20 -21
- package/lib/web/pdf_viewer.js +55 -115
- package/lib/web/preferences.js +82 -286
- package/lib/web/secondary_toolbar.js +164 -196
- package/lib/web/text_layer_builder.js +282 -339
- package/lib/web/toolbar.js +217 -210
- package/lib/web/ui_utils.js +267 -420
- package/lib/web/view_history.js +52 -226
- package/lib/web/viewer_compatibility.js +21 -6
- package/package.json +2 -9
- package/web/pdf_viewer.css +35 -25
- package/web/pdf_viewer.js +3489 -4855
- package/web/pdf_viewer.js.map +1 -1
- package/webpack.js +14 -5
- package/external/streams/streams-lib.js +0 -3962
- package/external/url/url-lib.js +0 -627
- package/lib/display/dom_utils.js +0 -494
- package/lib/shared/streams_polyfill.js +0 -43
- package/lib/shared/url_polyfill.js +0 -56
- package/lib/test/unit/dom_utils_spec.js +0 -89
package/lib/core/image.js
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
* @licstart The following is the entire license notice for the
|
3
3
|
* Javascript code in this page
|
4
4
|
*
|
5
|
-
* Copyright
|
5
|
+
* Copyright 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.
|
@@ -26,46 +26,43 @@ Object.defineProperty(exports, "__esModule", {
|
|
26
26
|
});
|
27
27
|
exports.PDFImage = void 0;
|
28
28
|
|
29
|
-
var _util = require("../shared/util");
|
29
|
+
var _util = require("../shared/util.js");
|
30
30
|
|
31
|
-
var _primitives = require("./primitives");
|
31
|
+
var _primitives = require("./primitives.js");
|
32
32
|
|
33
|
-
var _colorspace = require("./colorspace");
|
33
|
+
var _colorspace = require("./colorspace.js");
|
34
34
|
|
35
|
-
var _stream = require("./stream");
|
35
|
+
var _stream = require("./stream.js");
|
36
36
|
|
37
|
-
var _jpeg_stream = require("./jpeg_stream");
|
37
|
+
var _jpeg_stream = require("./jpeg_stream.js");
|
38
38
|
|
39
|
-
var _jpx = require("./jpx");
|
40
|
-
|
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; }
|
39
|
+
var _jpx = require("./jpx.js");
|
48
40
|
|
49
41
|
var PDFImage = function PDFImageClosure() {
|
50
|
-
function handleImageData(image, nativeDecoder) {
|
51
|
-
if (nativeDecoder && nativeDecoder.canDecode(image)) {
|
52
|
-
return nativeDecoder.decode(image).catch(function (reason) {
|
53
|
-
(0, _util.warn)('Native image decoding failed -- trying to recover: ' + (reason && reason.message));
|
54
|
-
return image;
|
55
|
-
});
|
56
|
-
}
|
57
|
-
|
58
|
-
return Promise.resolve(image);
|
59
|
-
}
|
60
|
-
|
61
42
|
function decodeAndClamp(value, addend, coefficient, max) {
|
62
43
|
value = addend + value * coefficient;
|
63
|
-
|
44
|
+
|
45
|
+
if (value < 0) {
|
46
|
+
value = 0;
|
47
|
+
} else if (value > max) {
|
48
|
+
value = max;
|
49
|
+
}
|
50
|
+
|
51
|
+
return value;
|
64
52
|
}
|
65
53
|
|
66
54
|
function resizeImageMask(src, bpc, w1, h1, w2, h2) {
|
67
55
|
var length = w2 * h2;
|
68
|
-
|
56
|
+
let dest;
|
57
|
+
|
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
|
+
}
|
65
|
+
|
69
66
|
var xRatio = w1 / w2;
|
70
67
|
var yRatio = h1 / h2;
|
71
68
|
var i,
|
@@ -92,26 +89,23 @@ var PDFImage = function PDFImageClosure() {
|
|
92
89
|
return dest;
|
93
90
|
}
|
94
91
|
|
95
|
-
function PDFImage(
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
_ref$isMask = _ref.isMask,
|
106
|
-
isMask = _ref$isMask === void 0 ? false : _ref$isMask,
|
107
|
-
pdfFunctionFactory = _ref.pdfFunctionFactory;
|
92
|
+
function PDFImage({
|
93
|
+
xref,
|
94
|
+
res,
|
95
|
+
image,
|
96
|
+
isInline = false,
|
97
|
+
smask = null,
|
98
|
+
mask = null,
|
99
|
+
isMask = false,
|
100
|
+
pdfFunctionFactory
|
101
|
+
}) {
|
108
102
|
this.image = image;
|
109
103
|
var dict = image.dict;
|
110
|
-
|
104
|
+
const filter = dict.get("Filter");
|
111
105
|
|
112
106
|
if ((0, _primitives.isName)(filter)) {
|
113
107
|
switch (filter.name) {
|
114
|
-
case
|
108
|
+
case "JPXDecode":
|
115
109
|
var jpxImage = new _jpx.JpxImage();
|
116
110
|
jpxImage.parseImageProperties(image.stream);
|
117
111
|
image.stream.reset();
|
@@ -121,41 +115,41 @@ var PDFImage = function PDFImageClosure() {
|
|
121
115
|
image.numComps = jpxImage.componentsCount;
|
122
116
|
break;
|
123
117
|
|
124
|
-
case
|
118
|
+
case "JBIG2Decode":
|
125
119
|
image.bitsPerComponent = 1;
|
126
120
|
image.numComps = 1;
|
127
121
|
break;
|
128
122
|
}
|
129
123
|
}
|
130
124
|
|
131
|
-
|
132
|
-
|
125
|
+
let width = dict.get("Width", "W");
|
126
|
+
let height = dict.get("Height", "H");
|
133
127
|
|
134
128
|
if (Number.isInteger(image.width) && image.width > 0 && Number.isInteger(image.height) && image.height > 0 && (image.width !== width || image.height !== height)) {
|
135
|
-
(0, _util.warn)(
|
129
|
+
(0, _util.warn)("PDFImage - using the Width/Height of the image data, " + "rather than the image dictionary.");
|
136
130
|
width = image.width;
|
137
131
|
height = image.height;
|
138
132
|
}
|
139
133
|
|
140
134
|
if (width < 1 || height < 1) {
|
141
|
-
throw new _util.FormatError(
|
135
|
+
throw new _util.FormatError(`Invalid image width: ${width} or height: ${height}`);
|
142
136
|
}
|
143
137
|
|
144
138
|
this.width = width;
|
145
139
|
this.height = height;
|
146
|
-
this.interpolate = dict.get(
|
147
|
-
this.imageMask = dict.get(
|
148
|
-
this.matte = dict.get(
|
140
|
+
this.interpolate = dict.get("Interpolate", "I") || false;
|
141
|
+
this.imageMask = dict.get("ImageMask", "IM") || false;
|
142
|
+
this.matte = dict.get("Matte") || false;
|
149
143
|
var bitsPerComponent = image.bitsPerComponent;
|
150
144
|
|
151
145
|
if (!bitsPerComponent) {
|
152
|
-
bitsPerComponent = dict.get(
|
146
|
+
bitsPerComponent = dict.get("BitsPerComponent", "BPC");
|
153
147
|
|
154
148
|
if (!bitsPerComponent) {
|
155
149
|
if (this.imageMask) {
|
156
150
|
bitsPerComponent = 1;
|
157
151
|
} else {
|
158
|
-
throw new _util.FormatError(
|
152
|
+
throw new _util.FormatError(`Bits per component missing in image: ${this.imageMask}`);
|
159
153
|
}
|
160
154
|
}
|
161
155
|
}
|
@@ -163,35 +157,35 @@ var PDFImage = function PDFImageClosure() {
|
|
163
157
|
this.bpc = bitsPerComponent;
|
164
158
|
|
165
159
|
if (!this.imageMask) {
|
166
|
-
var colorSpace = dict.get(
|
160
|
+
var colorSpace = dict.get("ColorSpace", "CS");
|
167
161
|
|
168
162
|
if (!colorSpace) {
|
169
|
-
(0, _util.info)(
|
163
|
+
(0, _util.info)("JPX images (which do not require color spaces)");
|
170
164
|
|
171
165
|
switch (image.numComps) {
|
172
166
|
case 1:
|
173
|
-
colorSpace = _primitives.Name.get(
|
167
|
+
colorSpace = _primitives.Name.get("DeviceGray");
|
174
168
|
break;
|
175
169
|
|
176
170
|
case 3:
|
177
|
-
colorSpace = _primitives.Name.get(
|
171
|
+
colorSpace = _primitives.Name.get("DeviceRGB");
|
178
172
|
break;
|
179
173
|
|
180
174
|
case 4:
|
181
|
-
colorSpace = _primitives.Name.get(
|
175
|
+
colorSpace = _primitives.Name.get("DeviceCMYK");
|
182
176
|
break;
|
183
177
|
|
184
178
|
default:
|
185
|
-
throw new Error(
|
179
|
+
throw new Error(`JPX images with ${image.numComps} ` + "color components not supported.");
|
186
180
|
}
|
187
181
|
}
|
188
182
|
|
189
|
-
|
183
|
+
const resources = isInline ? res : null;
|
190
184
|
this.colorSpace = _colorspace.ColorSpace.parse(colorSpace, xref, resources, pdfFunctionFactory);
|
191
185
|
this.numComps = this.colorSpace.numComps;
|
192
186
|
}
|
193
187
|
|
194
|
-
this.decode = dict.getArray(
|
188
|
+
this.decode = dict.getArray("Decode", "D");
|
195
189
|
this.needsDecode = false;
|
196
190
|
|
197
191
|
if (this.decode && (this.colorSpace && !this.colorSpace.isDefaultDecode(this.decode, bitsPerComponent) || isMask && !_colorspace.ColorSpace.isDefaultDecode(this.decode, 1))) {
|
@@ -199,7 +193,7 @@ var PDFImage = function PDFImageClosure() {
|
|
199
193
|
var max = (1 << bitsPerComponent) - 1;
|
200
194
|
this.decodeCoefficients = [];
|
201
195
|
this.decodeAddends = [];
|
202
|
-
|
196
|
+
const isIndexed = this.colorSpace && this.colorSpace.name === "Indexed";
|
203
197
|
|
204
198
|
for (var i = 0, j = 0; i < this.decode.length; i += 2, ++j) {
|
205
199
|
var dmin = this.decode[i];
|
@@ -211,27 +205,27 @@ var PDFImage = function PDFImageClosure() {
|
|
211
205
|
|
212
206
|
if (smask) {
|
213
207
|
this.smask = new PDFImage({
|
214
|
-
xref
|
215
|
-
res
|
208
|
+
xref,
|
209
|
+
res,
|
216
210
|
image: smask,
|
217
|
-
isInline
|
218
|
-
pdfFunctionFactory
|
211
|
+
isInline,
|
212
|
+
pdfFunctionFactory
|
219
213
|
});
|
220
214
|
} else if (mask) {
|
221
215
|
if ((0, _primitives.isStream)(mask)) {
|
222
216
|
var maskDict = mask.dict,
|
223
|
-
imageMask = maskDict.get(
|
217
|
+
imageMask = maskDict.get("ImageMask", "IM");
|
224
218
|
|
225
219
|
if (!imageMask) {
|
226
|
-
(0, _util.warn)(
|
220
|
+
(0, _util.warn)("Ignoring /Mask in image without /ImageMask.");
|
227
221
|
} else {
|
228
222
|
this.mask = new PDFImage({
|
229
|
-
xref
|
230
|
-
res
|
223
|
+
xref,
|
224
|
+
res,
|
231
225
|
image: mask,
|
232
|
-
isInline
|
226
|
+
isInline,
|
233
227
|
isMask: true,
|
234
|
-
pdfFunctionFactory
|
228
|
+
pdfFunctionFactory
|
235
229
|
});
|
236
230
|
}
|
237
231
|
} else {
|
@@ -240,66 +234,47 @@ var PDFImage = function PDFImageClosure() {
|
|
240
234
|
}
|
241
235
|
}
|
242
236
|
|
243
|
-
PDFImage.buildImage = function (
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
249
|
-
|
250
|
-
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
|
255
|
-
var maskPromise;
|
256
|
-
var smask = image.dict.get('SMask');
|
257
|
-
var mask = image.dict.get('Mask');
|
237
|
+
PDFImage.buildImage = function ({
|
238
|
+
xref,
|
239
|
+
res,
|
240
|
+
image,
|
241
|
+
isInline = false,
|
242
|
+
pdfFunctionFactory
|
243
|
+
}) {
|
244
|
+
const imageData = image;
|
245
|
+
let smaskData = null;
|
246
|
+
let maskData = null;
|
247
|
+
const smask = image.dict.get("SMask");
|
248
|
+
const mask = image.dict.get("Mask");
|
258
249
|
|
259
250
|
if (smask) {
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
if (mask) {
|
266
|
-
if ((0, _primitives.isStream)(mask)) {
|
267
|
-
maskPromise = handleImageData(mask, nativeDecoder);
|
268
|
-
} else if (Array.isArray(mask)) {
|
269
|
-
maskPromise = Promise.resolve(mask);
|
270
|
-
} else {
|
271
|
-
(0, _util.warn)('Unsupported mask format.');
|
272
|
-
maskPromise = Promise.resolve(null);
|
273
|
-
}
|
251
|
+
smaskData = smask;
|
252
|
+
} else if (mask) {
|
253
|
+
if ((0, _primitives.isStream)(mask) || Array.isArray(mask)) {
|
254
|
+
maskData = mask;
|
274
255
|
} else {
|
275
|
-
|
256
|
+
(0, _util.warn)("Unsupported mask format.");
|
276
257
|
}
|
277
258
|
}
|
278
259
|
|
279
|
-
return Promise.
|
280
|
-
|
281
|
-
|
282
|
-
|
283
|
-
|
284
|
-
|
285
|
-
|
286
|
-
|
287
|
-
|
288
|
-
image: imageData,
|
289
|
-
isInline: isInline,
|
290
|
-
smask: smaskData,
|
291
|
-
mask: maskData,
|
292
|
-
pdfFunctionFactory: pdfFunctionFactory
|
293
|
-
});
|
294
|
-
});
|
260
|
+
return Promise.resolve(new PDFImage({
|
261
|
+
xref,
|
262
|
+
res,
|
263
|
+
image: imageData,
|
264
|
+
isInline,
|
265
|
+
smask: smaskData,
|
266
|
+
mask: maskData,
|
267
|
+
pdfFunctionFactory
|
268
|
+
}));
|
295
269
|
};
|
296
270
|
|
297
|
-
PDFImage.createMask = function (
|
298
|
-
|
299
|
-
|
300
|
-
|
301
|
-
|
302
|
-
|
271
|
+
PDFImage.createMask = function ({
|
272
|
+
imgArray,
|
273
|
+
width,
|
274
|
+
height,
|
275
|
+
imageIsFromDecodeStream,
|
276
|
+
inverseDecode
|
277
|
+
}) {
|
303
278
|
var computedLength = (width + 7 >> 3) * height;
|
304
279
|
var actualLength = imgArray.byteLength;
|
305
280
|
var haveFullData = computedLength === actualLength;
|
@@ -321,14 +296,14 @@ var PDFImage = function PDFImageClosure() {
|
|
321
296
|
|
322
297
|
if (inverseDecode) {
|
323
298
|
for (i = 0; i < actualLength; i++) {
|
324
|
-
data[i] ^=
|
299
|
+
data[i] ^= 0xff;
|
325
300
|
}
|
326
301
|
}
|
327
302
|
|
328
303
|
return {
|
329
|
-
data
|
330
|
-
width
|
331
|
-
height
|
304
|
+
data,
|
305
|
+
width,
|
306
|
+
height
|
332
307
|
};
|
333
308
|
};
|
334
309
|
|
@@ -341,7 +316,7 @@ var PDFImage = function PDFImageClosure() {
|
|
341
316
|
return Math.max(this.height, this.smask && this.smask.height || 0, this.mask && this.mask.height || 0);
|
342
317
|
},
|
343
318
|
|
344
|
-
decodeBuffer
|
319
|
+
decodeBuffer(buffer) {
|
345
320
|
var bpc = this.bpc;
|
346
321
|
var numComps = this.numComps;
|
347
322
|
var decodeAddends = this.decodeAddends;
|
@@ -366,7 +341,8 @@ var PDFImage = function PDFImageClosure() {
|
|
366
341
|
}
|
367
342
|
}
|
368
343
|
},
|
369
|
-
|
344
|
+
|
345
|
+
getComponents(buffer) {
|
370
346
|
var bpc = this.bpc;
|
371
347
|
|
372
348
|
if (bpc === 8) {
|
@@ -378,7 +354,16 @@ var PDFImage = function PDFImageClosure() {
|
|
378
354
|
var numComps = this.numComps;
|
379
355
|
var length = width * height * numComps;
|
380
356
|
var bufferPos = 0;
|
381
|
-
|
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);
|
365
|
+
}
|
366
|
+
|
382
367
|
var rowComps = width * numComps;
|
383
368
|
var max = (1 << bpc) - 1;
|
384
369
|
var i = 0,
|
@@ -431,8 +416,15 @@ var PDFImage = function PDFImageClosure() {
|
|
431
416
|
}
|
432
417
|
|
433
418
|
var remainingBits = bits - bpc;
|
434
|
-
|
435
|
-
|
419
|
+
let value = buf >> remainingBits;
|
420
|
+
|
421
|
+
if (value < 0) {
|
422
|
+
value = 0;
|
423
|
+
} else if (value > max) {
|
424
|
+
value = max;
|
425
|
+
}
|
426
|
+
|
427
|
+
output[i] = value;
|
436
428
|
buf = buf & (1 << remainingBits) - 1;
|
437
429
|
bits = remainingBits;
|
438
430
|
}
|
@@ -440,7 +432,8 @@ var PDFImage = function PDFImageClosure() {
|
|
440
432
|
|
441
433
|
return output;
|
442
434
|
},
|
443
|
-
|
435
|
+
|
436
|
+
fillOpacity(rgbaBuf, width, height, actualHeight, image) {
|
444
437
|
var smask = this.smask;
|
445
438
|
var mask = this.mask;
|
446
439
|
var alphaBuf, sw, sh, i, ii, j;
|
@@ -490,7 +483,7 @@ var PDFImage = function PDFImageClosure() {
|
|
490
483
|
alphaBuf[i] = opacity;
|
491
484
|
}
|
492
485
|
} else {
|
493
|
-
throw new _util.FormatError(
|
486
|
+
throw new _util.FormatError("Unknown mask format.");
|
494
487
|
}
|
495
488
|
}
|
496
489
|
|
@@ -504,7 +497,8 @@ var PDFImage = function PDFImageClosure() {
|
|
504
497
|
}
|
505
498
|
}
|
506
499
|
},
|
507
|
-
|
500
|
+
|
501
|
+
undoPreblend(buffer, width, height) {
|
508
502
|
var matte = this.smask && this.smask.matte;
|
509
503
|
|
510
504
|
if (!matte) {
|
@@ -533,8 +527,8 @@ var PDFImage = function PDFImageClosure() {
|
|
533
527
|
buffer[i + 2] = (buffer[i + 2] - matteB) * k + matteB;
|
534
528
|
}
|
535
529
|
},
|
536
|
-
|
537
|
-
|
530
|
+
|
531
|
+
createImageData(forceRGBA = false) {
|
538
532
|
var drawWidth = this.drawWidth;
|
539
533
|
var drawHeight = this.drawHeight;
|
540
534
|
var imgData = {
|
@@ -553,9 +547,9 @@ var PDFImage = function PDFImageClosure() {
|
|
553
547
|
if (!forceRGBA) {
|
554
548
|
var kind;
|
555
549
|
|
556
|
-
if (this.colorSpace.name ===
|
550
|
+
if (this.colorSpace.name === "DeviceGray" && bpc === 1) {
|
557
551
|
kind = _util.ImageKind.GRAYSCALE_1BPP;
|
558
|
-
} else if (this.colorSpace.name ===
|
552
|
+
} else if (this.colorSpace.name === "DeviceRGB" && bpc === 8 && !this.needsDecode) {
|
559
553
|
kind = _util.ImageKind.RGB_24BPP;
|
560
554
|
}
|
561
555
|
|
@@ -572,7 +566,7 @@ var PDFImage = function PDFImageClosure() {
|
|
572
566
|
}
|
573
567
|
|
574
568
|
if (this.needsDecode) {
|
575
|
-
(0, _util.assert)(kind === _util.ImageKind.GRAYSCALE_1BPP,
|
569
|
+
(0, _util.assert)(kind === _util.ImageKind.GRAYSCALE_1BPP, "PDFImage.createImageData: The image must be grayscale.");
|
576
570
|
var buffer = imgData.data;
|
577
571
|
|
578
572
|
for (var i = 0, ii = buffer.length; i < ii; i++) {
|
@@ -584,14 +578,14 @@ var PDFImage = function PDFImageClosure() {
|
|
584
578
|
}
|
585
579
|
|
586
580
|
if (this.image instanceof _jpeg_stream.JpegStream && !this.smask && !this.mask) {
|
587
|
-
|
581
|
+
let imageLength = originalHeight * rowBytes;
|
588
582
|
|
589
583
|
switch (this.colorSpace.name) {
|
590
|
-
case
|
584
|
+
case "DeviceGray":
|
591
585
|
imageLength *= 3;
|
592
586
|
|
593
|
-
case
|
594
|
-
case
|
587
|
+
case "DeviceRGB":
|
588
|
+
case "DeviceCMYK":
|
595
589
|
imgData.kind = _util.ImageKind.RGB_24BPP;
|
596
590
|
imgData.data = this.getImageBytes(imageLength, drawWidth, drawHeight, true);
|
597
591
|
return imgData;
|
@@ -629,11 +623,12 @@ var PDFImage = function PDFImageClosure() {
|
|
629
623
|
|
630
624
|
return imgData;
|
631
625
|
},
|
632
|
-
|
626
|
+
|
627
|
+
fillGrayBuffer(buffer) {
|
633
628
|
var numComps = this.numComps;
|
634
629
|
|
635
630
|
if (numComps !== 1) {
|
636
|
-
throw new _util.FormatError(
|
631
|
+
throw new _util.FormatError(`Reading gray scale from a color image: ${numComps}`);
|
637
632
|
}
|
638
633
|
|
639
634
|
var width = this.width;
|
@@ -671,14 +666,15 @@ var PDFImage = function PDFImageClosure() {
|
|
671
666
|
buffer[i] = scale * comps[i];
|
672
667
|
}
|
673
668
|
},
|
674
|
-
|
675
|
-
|
669
|
+
|
670
|
+
getImageBytes(length, drawWidth, drawHeight, forceRGB = false) {
|
676
671
|
this.image.reset();
|
677
672
|
this.image.drawWidth = drawWidth || this.width;
|
678
673
|
this.image.drawHeight = drawHeight || this.height;
|
679
674
|
this.image.forceRGB = !!forceRGB;
|
680
675
|
return this.image.getBytes(length, true);
|
681
676
|
}
|
677
|
+
|
682
678
|
};
|
683
679
|
return PDFImage;
|
684
680
|
}();
|