Ignore globally cached images in PartialEvaluator.getTextContent
(PR 11930 follow-up)
Given that we'll only cache `/XObject`s of the `Image`-type globally, we can utilize that in `PartialEvaluator.getTextContent` as well. This way, in cases such as e.g. issue 12098, we can avoid having to fetch/parse `/XObject`s that we already know to be `Image`s. This is helpful, since `Stream`s are not cached on the `XRef` instance (given their potential size) and the lookup can thus be somewhat expensive in general. Also, skip a redundant `RefSetCache.has` check in the `GlobalImageCache.getData` method.
This commit is contained in:
parent
d52e5b0505
commit
72da2aa166
@ -2515,6 +2515,15 @@ class PartialEvaluator {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const globalImage = self.globalImageCache.getData(
|
||||||
|
xobj,
|
||||||
|
self.pageIndex
|
||||||
|
);
|
||||||
|
if (globalImage) {
|
||||||
|
resolveXObject();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
xobj = xref.fetch(xobj);
|
xobj = xref.fetch(xobj);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -247,13 +247,14 @@ class GlobalImageCache {
|
|||||||
if (pageIndexSet.size < GlobalImageCache.NUM_PAGES_THRESHOLD) {
|
if (pageIndexSet.size < GlobalImageCache.NUM_PAGES_THRESHOLD) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
if (!this._imageCache.has(ref)) {
|
const imageData = this._imageCache.get(ref);
|
||||||
|
if (!imageData) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
// Ensure that we keep track of all pages containing the image reference.
|
// Ensure that we keep track of all pages containing the image reference.
|
||||||
pageIndexSet.add(pageIndex);
|
pageIndexSet.add(pageIndex);
|
||||||
|
|
||||||
return this._imageCache.get(ref);
|
return imageData;
|
||||||
}
|
}
|
||||||
|
|
||||||
setData(ref, data) {
|
setData(ref, data) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user