diff --git a/src/core/image.js b/src/core/image.js index cfc6555c8..7121d83ce 100644 --- a/src/core/image.js +++ b/src/core/image.js @@ -546,14 +546,21 @@ var PDFImage = (function PDFImageClosure() { } return imgData; } - if (this.image instanceof JpegStream && !this.smask && !this.mask && - (this.colorSpace.name === 'DeviceGray' || - this.colorSpace.name === 'DeviceRGB' || - this.colorSpace.name === 'DeviceCMYK')) { - imgData.kind = ImageKind.RGB_24BPP; - imgData.data = this.getImageBytes(originalHeight * rowBytes, - drawWidth, drawHeight, true); - return imgData; + if (this.image instanceof JpegStream && !this.smask && !this.mask) { + let imageLength = originalHeight * rowBytes; + switch (this.colorSpace.name) { + case 'DeviceGray': + // Avoid truncating the image, since `JpegImage.getData` + // will expand the image data when `forceRGB === true`. + imageLength *= 3; + /* falls through */ + case 'DeviceRGB': + case 'DeviceCMYK': + imgData.kind = ImageKind.RGB_24BPP; + imgData.data = this.getImageBytes(imageLength, + drawWidth, drawHeight, /* forceRGB = */ true); + return imgData; + } } } diff --git a/test/test_manifest.json b/test/test_manifest.json index 227f1c3a7..3958b19c6 100644 --- a/test/test_manifest.json +++ b/test/test_manifest.json @@ -1318,7 +1318,8 @@ "link": true, "firstPage": 2, "lastPage": 2, - "type": "eq" + "type": "eq", + "nativeImageDecoderSupport": "none" }, { "id": "issue6071", "file": "pdfs/issue6071.pdf",