|
|
@ -981,7 +981,7 @@ var ImagesLoader = (function imagesLoader() { |
|
|
|
}, |
|
|
|
}, |
|
|
|
|
|
|
|
|
|
|
|
bind: function imagesLoaderBind(jpegStream) { |
|
|
|
bind: function imagesLoaderBind(jpegStream) { |
|
|
|
if (jpegStream.loaded) |
|
|
|
if (jpegStream.loaded || jpegStream.onLoad) |
|
|
|
return; |
|
|
|
return; |
|
|
|
this.imageLoading(); |
|
|
|
this.imageLoading(); |
|
|
|
jpegStream.onLoad = this.imageLoaded.bind(this); |
|
|
|
jpegStream.onLoad = this.imageLoaded.bind(this); |
|
|
@ -3402,8 +3402,8 @@ var XRef = (function xRefXRef() { |
|
|
|
} else { |
|
|
|
} else { |
|
|
|
e = parser.getObj(); |
|
|
|
e = parser.getObj(); |
|
|
|
} |
|
|
|
} |
|
|
|
// Don't cache streams since they are mutable.
|
|
|
|
// Don't cache streams since they are mutable (except images).
|
|
|
|
if (!isStream(e)) |
|
|
|
if (!isStream(e) || e.getImage) |
|
|
|
this.cache[num] = e; |
|
|
|
this.cache[num] = e; |
|
|
|
return e; |
|
|
|
return e; |
|
|
|
} |
|
|
|
} |
|
|
@ -4415,8 +4415,13 @@ var PartialEvaluator = (function partialEvaluator() { |
|
|
|
xobj.dict.get('Resources'), fonts, |
|
|
|
xobj.dict.get('Resources'), fonts, |
|
|
|
images); |
|
|
|
images); |
|
|
|
} |
|
|
|
} |
|
|
|
if (xobj instanceof JpegStream) |
|
|
|
if (isStream(xobj) && xobj.getImage) { |
|
|
|
images.bind(xobj); // monitoring image load
|
|
|
|
images.bind(xobj); // monitoring image load
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var smask = xref.fetchIfRef(xobj.dict.get('SMask')); |
|
|
|
|
|
|
|
if (isStream(smask) && smask.getImage) |
|
|
|
|
|
|
|
images.bind(smask); // monitoring image load
|
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} else if (cmd == 'Tf') { // eagerly collect all fonts
|
|
|
|
} else if (cmd == 'Tf') { // eagerly collect all fonts
|
|
|
|
var fontRes = resources.get('Font'); |
|
|
|
var fontRes = resources.get('Font'); |
|
|
@ -6515,6 +6520,18 @@ var PDFImage = (function pdfImage() { |
|
|
|
var buf = new Uint8Array(width * height); |
|
|
|
var buf = new Uint8Array(width * height); |
|
|
|
|
|
|
|
|
|
|
|
if (smask) { |
|
|
|
if (smask) { |
|
|
|
|
|
|
|
if (smask.image.getImage) { |
|
|
|
|
|
|
|
// smask is a DOM image
|
|
|
|
|
|
|
|
var tempCanvas = new ScratchCanvas(width, height); |
|
|
|
|
|
|
|
var tempCtx = tempCanvas.getContext('2d'); |
|
|
|
|
|
|
|
var domImage = smask.image.getImage(); |
|
|
|
|
|
|
|
tempCtx.drawImage(domImage, 0, 0, domImage.width, domImage.height, |
|
|
|
|
|
|
|
0, 0, width, height); |
|
|
|
|
|
|
|
var data = tempCtx.getImageData(0, 0, width, height).data; |
|
|
|
|
|
|
|
for (var i = 0, j = 0, ii = width * height; i < ii; ++i, j += 4) |
|
|
|
|
|
|
|
buf[i] = data[j]; // getting first component value
|
|
|
|
|
|
|
|
return buf; |
|
|
|
|
|
|
|
} |
|
|
|
var sw = smask.width; |
|
|
|
var sw = smask.width; |
|
|
|
var sh = smask.height; |
|
|
|
var sh = smask.height; |
|
|
|
if (sw != this.width || sh != this.height) |
|
|
|
if (sw != this.width || sh != this.height) |
|
|
|