diff --git a/src/core/evaluator.js b/src/core/evaluator.js index 1f99e1db5..faa04f15d 100644 --- a/src/core/evaluator.js +++ b/src/core/evaluator.js @@ -180,14 +180,17 @@ function normalizeBlendMode(value, parsingArray = false) { return "source-over"; } -function addLocallyCachedImageOps(opList, data) { - if (data.objId) { - opList.addDependency(data.objId); +function addCachedImageOps( + opList, + { objId, fn, args, optionalContent, hasMask } +) { + if (objId) { + opList.addDependency(objId); } - opList.addImageOps(data.fn, data.args, data.optionalContent, data.hasMask); + opList.addImageOps(fn, args, optionalContent, hasMask); - if (data.fn === OPS.paintImageMaskXObject && data.args[0]?.count > 0) { - data.args[0].count++; + if (fn === OPS.paintImageMaskXObject && args[0]?.count > 0) { + args[0].count++; } } @@ -1769,7 +1772,7 @@ class PartialEvaluator { if (isValidName) { const localImage = localImageCache.getByName(name); if (localImage) { - addLocallyCachedImageOps(operatorList, localImage); + addCachedImageOps(operatorList, localImage); args = null; continue; } @@ -1783,28 +1786,12 @@ class PartialEvaluator { let xobj = xobjs.getRaw(name); if (xobj instanceof Ref) { - const localImage = + const cachedImage = localImageCache.getByRef(xobj) || - self._regionalImageCache.getByRef(xobj); - if (localImage) { - addLocallyCachedImageOps(operatorList, localImage); - resolveXObject(); - return; - } - - const globalImage = self.globalImageCache.getData( - xobj, - self.pageIndex - ); - if (globalImage) { - operatorList.addDependency(globalImage.objId); - operatorList.addImageOps( - globalImage.fn, - globalImage.args, - globalImage.optionalContent, - globalImage.hasMask - ); - + self._regionalImageCache.getByRef(xobj) || + self.globalImageCache.getData(xobj, self.pageIndex); + if (cachedImage) { + addCachedImageOps(operatorList, cachedImage); resolveXObject(); return; } @@ -1897,7 +1884,7 @@ class PartialEvaluator { if (cacheKey) { const localImage = localImageCache.getByName(cacheKey); if (localImage) { - addLocallyCachedImageOps(operatorList, localImage); + addCachedImageOps(operatorList, localImage); args = null; continue; }