|
@@ -28,8 +28,8 @@ factory((root.pdfjsDistBuildPdfCombined = {}));
|
|
|
// Use strict in our context only - users might not want it
|
|
|
'use strict';
|
|
|
|
|
|
-var pdfjsVersion = '1.5.488';
|
|
|
-var pdfjsBuild = '6c263c1';
|
|
|
+var pdfjsVersion = '1.5.490';
|
|
|
+var pdfjsBuild = '7f381c8';
|
|
|
|
|
|
var pdfjsFilePath =
|
|
|
typeof document !== 'undefined' && document.currentScript ?
|
|
@@ -11184,7 +11184,7 @@ var error = sharedUtil.error;
|
|
|
* (partners.adobe.com/public/developer/en/ps/sdk/5116.DCT_Filter.pdf)
|
|
|
*/
|
|
|
|
|
|
-var JpegImage = (function jpegImage() {
|
|
|
+var JpegImage = (function JpegImageClosure() {
|
|
|
var dctZigZag = new Uint8Array([
|
|
|
0,
|
|
|
1, 8,
|
|
@@ -11212,7 +11212,9 @@ var JpegImage = (function jpegImage() {
|
|
|
var dctSqrt2 = 5793; // sqrt(2)
|
|
|
var dctSqrt1d2 = 2896; // sqrt(2) / 2
|
|
|
|
|
|
- function constructor() {
|
|
|
+ function JpegImage() {
|
|
|
+ this.decodeTransform = null;
|
|
|
+ this.colorTransform = -1;
|
|
|
}
|
|
|
|
|
|
function buildHuffmanTable(codeLengths, values) {
|
|
@@ -11729,7 +11731,7 @@ var JpegImage = (function jpegImage() {
|
|
|
return a <= 0 ? 0 : a >= 255 ? 255 : a;
|
|
|
}
|
|
|
|
|
|
- constructor.prototype = {
|
|
|
+ JpegImage.prototype = {
|
|
|
parse: function parse(data) {
|
|
|
|
|
|
function readUint16() {
|
|
@@ -12046,8 +12048,20 @@ var JpegImage = (function jpegImage() {
|
|
|
// The adobe transform marker overrides any previous setting
|
|
|
return true;
|
|
|
} else if (this.numComponents === 3) {
|
|
|
+ if (!this.adobe && this.colorTransform === 0) {
|
|
|
+ // If the Adobe transform marker is not present and the image
|
|
|
+ // dictionary has a 'ColorTransform' entry, explicitly set to `0`,
|
|
|
+ // then the colours should *not* be transformed.
|
|
|
+ return false;
|
|
|
+ }
|
|
|
return true;
|
|
|
- } else {
|
|
|
+ } else { // `this.numComponents !== 3`
|
|
|
+ if (!this.adobe && this.colorTransform === 1) {
|
|
|
+ // If the Adobe transform marker is not present and the image
|
|
|
+ // dictionary has a 'ColorTransform' entry, explicitly set to `1`,
|
|
|
+ // then the colours should be transformed.
|
|
|
+ return true;
|
|
|
+ }
|
|
|
return false;
|
|
|
}
|
|
|
},
|
|
@@ -12189,7 +12203,7 @@ var JpegImage = (function jpegImage() {
|
|
|
rgbData[offset++] = grayColor;
|
|
|
}
|
|
|
return rgbData;
|
|
|
- } else if (this.numComponents === 3) {
|
|
|
+ } else if (this.numComponents === 3 && this._isColorConversionNeeded()) {
|
|
|
return this._convertYccToRgb(data);
|
|
|
} else if (this.numComponents === 4) {
|
|
|
if (this._isColorConversionNeeded()) {
|
|
@@ -12206,7 +12220,7 @@ var JpegImage = (function jpegImage() {
|
|
|
}
|
|
|
};
|
|
|
|
|
|
- return constructor;
|
|
|
+ return JpegImage;
|
|
|
})();
|
|
|
|
|
|
exports.JpegImage = JpegImage;
|
|
@@ -21685,6 +21699,7 @@ exports.SVGGraphics = SVGGraphics;
|
|
|
var Util = sharedUtil.Util;
|
|
|
var error = sharedUtil.error;
|
|
|
var info = sharedUtil.info;
|
|
|
+var isInt = sharedUtil.isInt;
|
|
|
var isArray = sharedUtil.isArray;
|
|
|
var createObjectURL = sharedUtil.createObjectURL;
|
|
|
var shadow = sharedUtil.shadow;
|
|
@@ -22542,7 +22557,7 @@ var PredictorStream = (function PredictorStreamClosure() {
|
|
|
* DecodeStreams.
|
|
|
*/
|
|
|
var JpegStream = (function JpegStreamClosure() {
|
|
|
- function JpegStream(stream, maybeLength, dict, xref) {
|
|
|
+ function JpegStream(stream, maybeLength, dict) {
|
|
|
// Some images may contain 'junk' before the SOI (start-of-image) marker.
|
|
|
// Note: this seems to mainly affect inline images.
|
|
|
var ch;
|
|
@@ -22576,8 +22591,8 @@ var JpegStream = (function JpegStreamClosure() {
|
|
|
var jpegImage = new JpegImage();
|
|
|
|
|
|
// Checking if values need to be transformed before conversion.
|
|
|
- if (this.forceRGB && this.dict && isArray(this.dict.get('Decode'))) {
|
|
|
- var decodeArr = this.dict.getArray('Decode');
|
|
|
+ var decodeArr = this.dict.getArray('Decode', 'D');
|
|
|
+ if (this.forceRGB && isArray(decodeArr)) {
|
|
|
var bitsPerComponent = this.dict.get('BitsPerComponent') || 8;
|
|
|
var decodeArrLength = decodeArr.length;
|
|
|
var transform = new Int32Array(decodeArrLength);
|
|
@@ -22594,6 +22609,14 @@ var JpegStream = (function JpegStreamClosure() {
|
|
|
jpegImage.decodeTransform = transform;
|
|
|
}
|
|
|
}
|
|
|
+ // Fetching the 'ColorTransform' entry, if it exists.
|
|
|
+ var decodeParams = this.dict.get('DecodeParms', 'DP');
|
|
|
+ if (isDict(decodeParams)) {
|
|
|
+ var colorTransform = decodeParams.get('ColorTransform');
|
|
|
+ if (isInt(colorTransform)) {
|
|
|
+ jpegImage.colorTransform = colorTransform;
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
jpegImage.parse(this.bytes);
|
|
|
var data = jpegImage.getData(this.drawWidth, this.drawHeight,
|
|
@@ -22715,7 +22738,7 @@ var Jbig2Stream = (function Jbig2StreamClosure() {
|
|
|
var jbig2Image = new Jbig2Image();
|
|
|
|
|
|
var chunks = [];
|
|
|
- var decodeParams = this.dict.getArray('DecodeParms');
|
|
|
+ var decodeParams = this.dict.getArray('DecodeParms', 'DP');
|
|
|
|
|
|
// According to the PDF specification, DecodeParms can be either
|
|
|
// a dictionary, or an array whose elements are dictionaries.
|
|
@@ -29532,7 +29555,7 @@ var Parser = (function ParserClosure() {
|
|
|
}
|
|
|
if (name === 'DCTDecode' || name === 'DCT') {
|
|
|
xrefStreamStats[StreamType.DCT] = true;
|
|
|
- return new JpegStream(stream, maybeLength, stream.dict, this.xref);
|
|
|
+ return new JpegStream(stream, maybeLength, stream.dict);
|
|
|
}
|
|
|
if (name === 'JPXDecode' || name === 'JPX') {
|
|
|
xrefStreamStats[StreamType.JPX] = true;
|
|
@@ -45939,18 +45962,26 @@ var PartialEvaluator = (function PartialEvaluatorClosure() {
|
|
|
*/
|
|
|
NativeImageDecoder.isSupported =
|
|
|
function NativeImageDecoder_isSupported(image, xref, res) {
|
|
|
- var cs = ColorSpace.parse(image.dict.get('ColorSpace', 'CS'), xref, res);
|
|
|
+ var dict = image.dict;
|
|
|
+ if (dict.has('DecodeParms') || dict.has('DP')) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ var cs = ColorSpace.parse(dict.get('ColorSpace', 'CS'), xref, res);
|
|
|
return (cs.name === 'DeviceGray' || cs.name === 'DeviceRGB') &&
|
|
|
- cs.isDefaultDecode(image.dict.getArray('Decode', 'D'));
|
|
|
+ cs.isDefaultDecode(dict.getArray('Decode', 'D'));
|
|
|
};
|
|
|
/**
|
|
|
* Checks if the image can be decoded by the browser.
|
|
|
*/
|
|
|
NativeImageDecoder.isDecodable =
|
|
|
function NativeImageDecoder_isDecodable(image, xref, res) {
|
|
|
- var cs = ColorSpace.parse(image.dict.get('ColorSpace', 'CS'), xref, res);
|
|
|
+ var dict = image.dict;
|
|
|
+ if (dict.has('DecodeParms') || dict.has('DP')) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ var cs = ColorSpace.parse(dict.get('ColorSpace', 'CS'), xref, res);
|
|
|
return (cs.numComps === 1 || cs.numComps === 3) &&
|
|
|
- cs.isDefaultDecode(image.dict.getArray('Decode', 'D'));
|
|
|
+ cs.isDefaultDecode(dict.getArray('Decode', 'D'));
|
|
|
};
|
|
|
|
|
|
function PartialEvaluator(pdfManager, xref, handler, pageIndex,
|