diff --git a/src/core/image.js b/src/core/image.js index 08838e14e..a66081f01 100644 --- a/src/core/image.js +++ b/src/core/image.js @@ -536,12 +536,12 @@ var PDFImage = (function PDFImageClosure() { } return imgData; } - } - if (this.image instanceof JpegStream) { - imgData.kind = ImageKind.RGB_24BPP; - imgData.data = this.getImageBytes(originalHeight * rowBytes, - drawWidth, drawHeight); - return imgData; + if (this.image instanceof JpegStream && !this.smask && !this.mask) { + imgData.kind = ImageKind.RGB_24BPP; + imgData.data = this.getImageBytes(originalHeight * rowBytes, + drawWidth, drawHeight, true); + return imgData; + } } imgArray = this.getImageBytes(originalHeight * rowBytes); @@ -629,10 +629,12 @@ var PDFImage = (function PDFImageClosure() { }, getImageBytes: function PDFImage_getImageBytes(length, - drawWidth, drawHeight) { + drawWidth, drawHeight, + forceRGB) { this.image.reset(); - this.image.drawWidth = drawWidth; - this.image.drawHeight = drawHeight; + this.image.drawWidth = drawWidth || this.width; + this.image.drawHeight = drawHeight || this.height; + this.image.forceRGB = !!forceRGB; return this.image.getBytes(length); } }; diff --git a/src/core/jpg.js b/src/core/jpg.js index 4786be34d..8b148378a 100644 --- a/src/core/jpg.js +++ b/src/core/jpg.js @@ -1011,7 +1011,7 @@ var JpegImage = (function jpegImage() { } else { return this._convertYcckToCmyk(data); } - } else { + } else if (forceRGBoutput) { return this._convertCmykToRgb(data); } } diff --git a/src/core/stream.js b/src/core/stream.js index 8688434d6..df59890c8 100644 --- a/src/core/stream.js +++ b/src/core/stream.js @@ -903,7 +903,7 @@ var JpegStream = (function JpegStreamClosure() { jpegImage.parse(this.bytes); var data = jpegImage.getData(this.drawWidth, this.drawHeight, - /* forceRGBoutput = */true); + this.forceRGB); this.buffer = data; this.bufferLength = data.length; this.eof = true;