|
@@ -21,8 +21,8 @@ if (typeof PDFJS === 'undefined') {
|
|
(typeof window !== 'undefined' ? window : this).PDFJS = {};
|
|
(typeof window !== 'undefined' ? window : this).PDFJS = {};
|
|
}
|
|
}
|
|
|
|
|
|
-PDFJS.version = '1.0.351';
|
|
|
|
-PDFJS.build = 'cab0430';
|
|
|
|
|
|
+PDFJS.version = '1.0.353';
|
|
|
|
+PDFJS.build = '480e093';
|
|
|
|
|
|
(function pdfjsWrapper() {
|
|
(function pdfjsWrapper() {
|
|
// Use strict in our context only - users might not want it
|
|
// Use strict in our context only - users might not want it
|
|
@@ -20202,11 +20202,11 @@ var PartialEvaluator = (function PartialEvaluatorClosure() {
|
|
var bitStrideLength = (width + 7) >> 3;
|
|
var bitStrideLength = (width + 7) >> 3;
|
|
var imgArray = image.getBytes(bitStrideLength * height);
|
|
var imgArray = image.getBytes(bitStrideLength * height);
|
|
var decode = dict.get('Decode', 'D');
|
|
var decode = dict.get('Decode', 'D');
|
|
- var canTransfer = image instanceof DecodeStream;
|
|
|
|
var inverseDecode = (!!decode && decode[0] > 0);
|
|
var inverseDecode = (!!decode && decode[0] > 0);
|
|
|
|
|
|
imgData = PDFImage.createMask(imgArray, width, height,
|
|
imgData = PDFImage.createMask(imgArray, width, height,
|
|
- canTransfer, inverseDecode);
|
|
|
|
|
|
+ image instanceof DecodeStream,
|
|
|
|
+ inverseDecode);
|
|
imgData.cached = true;
|
|
imgData.cached = true;
|
|
args = [imgData];
|
|
args = [imgData];
|
|
operatorList.addOp(OPS.paintImageMaskXObject, args);
|
|
operatorList.addOp(OPS.paintImageMaskXObject, args);
|
|
@@ -35426,23 +35426,40 @@ var PDFImage = (function PDFImageClosure() {
|
|
};
|
|
};
|
|
|
|
|
|
PDFImage.createMask =
|
|
PDFImage.createMask =
|
|
- function PDFImage_createMask(imgArray, width, height, canTransfer,
|
|
|
|
- inverseDecode) {
|
|
|
|
- // If imgArray came from a DecodeStream, we're safe to transfer it.
|
|
|
|
- // Otherwise, copy it.
|
|
|
|
|
|
+ function PDFImage_createMask(imgArray, width, height,
|
|
|
|
+ imageIsFromDecodeStream, inverseDecode) {
|
|
|
|
+
|
|
|
|
+ // |imgArray| might not contain full data for every pixel of the mask, so
|
|
|
|
+ // we need to distinguish between |computedLength| and |actualLength|.
|
|
|
|
+ // In particular, if inverseDecode is true, then the array we return must
|
|
|
|
+ // have a length of |computedLength|.
|
|
|
|
+
|
|
|
|
+ var computedLength = ((width + 7) >> 3) * height;
|
|
var actualLength = imgArray.byteLength;
|
|
var actualLength = imgArray.byteLength;
|
|
- var data;
|
|
|
|
- if (canTransfer) {
|
|
|
|
|
|
+ var haveFullData = computedLength == actualLength;
|
|
|
|
+ var data, i;
|
|
|
|
+
|
|
|
|
+ if (imageIsFromDecodeStream && (!inverseDecode || haveFullData)) {
|
|
|
|
+ // imgArray came from a DecodeStream and its data is in an appropriate
|
|
|
|
+ // form, so we can just transfer it.
|
|
data = imgArray;
|
|
data = imgArray;
|
|
- } else {
|
|
|
|
|
|
+ } else if (!inverseDecode) {
|
|
data = new Uint8Array(actualLength);
|
|
data = new Uint8Array(actualLength);
|
|
data.set(imgArray);
|
|
data.set(imgArray);
|
|
|
|
+ } else {
|
|
|
|
+ data = new Uint8Array(computedLength);
|
|
|
|
+ data.set(imgArray);
|
|
|
|
+ for (i = actualLength; i < computedLength; i++) {
|
|
|
|
+ data[i] = 0xff;
|
|
|
|
+ }
|
|
}
|
|
}
|
|
- // Invert if necessary. It's safe to modify the array -- whether it's the
|
|
|
|
|
|
+
|
|
|
|
+ // If necessary, invert the original mask data (but not any extra we might
|
|
|
|
+ // have added above). It's safe to modify the array -- whether it's the
|
|
// original or a copy, we're about to transfer it anyway, so nothing else
|
|
// original or a copy, we're about to transfer it anyway, so nothing else
|
|
// in this thread can be relying on its contents.
|
|
// in this thread can be relying on its contents.
|
|
if (inverseDecode) {
|
|
if (inverseDecode) {
|
|
- for (var i = 0; i < actualLength; i++) {
|
|
|
|
|
|
+ for (i = 0; i < actualLength; i++) {
|
|
data[i] = ~data[i];
|
|
data[i] = ~data[i];
|
|
}
|
|
}
|
|
}
|
|
}
|