Fix loading of inline JPEG images
This commit is contained in:
parent
d1974eae34
commit
2003d83ea6
@ -372,6 +372,22 @@ var Parser = (function ParserClosure() {
|
|||||||
return new LZWStream(stream, maybeLength, earlyChange);
|
return new LZWStream(stream, maybeLength, earlyChange);
|
||||||
}
|
}
|
||||||
if (name === 'DCTDecode' || name === 'DCT') {
|
if (name === 'DCTDecode' || name === 'DCT') {
|
||||||
|
// According to the specification: for inline images, the ID operator
|
||||||
|
// shall be followed by a single whitespace character (unless it uses
|
||||||
|
// ASCII85Decode or ASCIIHexDecode filters).
|
||||||
|
// In practice this only seems to be followed for inline JPEG images,
|
||||||
|
// and generally ignoring the first byte of the stream if it is a
|
||||||
|
// whitespace char can even *cause* issues (e.g. in the CCITTFaxDecode
|
||||||
|
// filters used in issue2984.pdf).
|
||||||
|
// Hence when the first byte of the stream of an inline JPEG image is
|
||||||
|
// a whitespace character, we thus simply skip over it.
|
||||||
|
if (isCmd(this.buf1, 'ID')) {
|
||||||
|
var firstByte = stream.peekByte();
|
||||||
|
if (firstByte === 0x0A /* LF */ || firstByte === 0x0D /* CR */ ||
|
||||||
|
firstByte === 0x20 /* SPACE */) {
|
||||||
|
stream.skip();
|
||||||
|
}
|
||||||
|
}
|
||||||
xrefStreamStats[StreamType.DCT] = true;
|
xrefStreamStats[StreamType.DCT] = true;
|
||||||
return new JpegStream(stream, maybeLength, stream.dict, this.xref);
|
return new JpegStream(stream, maybeLength, stream.dict, this.xref);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user