1
0
Fork 0
mirror of https://github.com/mozilla/pdf.js.git synced 2025-04-22 16:18:08 +02:00

Merge pull request #11515 from Snuffleupagus/cache-fallback-font

Cache the fallback font dictionary on the `PartialEvaluator` (PR 11218 follow-up)
This commit is contained in:
Tim van der Meij 2020-01-25 21:32:28 +01:00 committed by GitHub
commit cbbda9d883
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 34 additions and 10 deletions

View file

@ -33,7 +33,14 @@ import {
warn,
} from "../shared/util.js";
import { Catalog, ObjectLoader, XRef } from "./obj.js";
import { Dict, isDict, isName, isStream, Ref } from "./primitives.js";
import {
clearPrimitiveCaches,
Dict,
isDict,
isName,
isStream,
Ref,
} from "./primitives.js";
import {
getInheritableProperty,
MissingDataException,
@ -815,8 +822,8 @@ class PDFDocument {
return this.catalog.fontFallback(id, handler);
}
cleanup() {
return this.catalog.cleanup();
async cleanup() {
return this.catalog ? this.catalog.cleanup() : clearPrimitiveCaches();
}
}

View file

@ -935,11 +935,7 @@ var PartialEvaluator = (function PartialEvaluatorClosure() {
// Falling back to a default font to avoid completely broken rendering,
// but note that there're no guarantees that things will look "correct".
fontRef = new Dict();
fontRef.set("BaseFont", Name.get("PDFJS-FallbackFont"));
fontRef.set("Type", Name.get("FallbackType"));
fontRef.set("Subtype", Name.get("FallbackType"));
fontRef.set("Encoding", Name.get("WinAnsiEncoding"));
fontRef = PartialEvaluator.getFallbackFontDict();
}
if (this.fontCache.has(fontRef)) {
@ -3132,6 +3128,21 @@ var PartialEvaluator = (function PartialEvaluatorClosure() {
}
};
// TODO: Change this to a `static` getter, using shadowing, once
// `PartialEvaluator` is converted to a proper class.
PartialEvaluator.getFallbackFontDict = function() {
if (this._fallbackFontDict) {
return this._fallbackFontDict;
}
const dict = new Dict();
dict.set("BaseFont", Name.get("PDFJS-FallbackFont"));
dict.set("Type", Name.get("FallbackType"));
dict.set("Subtype", Name.get("FallbackType"));
dict.set("Encoding", Name.get("WinAnsiEncoding"));
return (this._fallbackFontDict = dict);
};
return PartialEvaluator;
})();

View file

@ -593,16 +593,22 @@ var WorkerMessageHandler = {
handler.on("Terminate", function wphTerminate(data) {
terminated = true;
const waitOn = [];
if (pdfManager) {
pdfManager.terminate(new AbortException("Worker was terminated."));
const cleanupPromise = pdfManager.cleanup();
waitOn.push(cleanupPromise);
pdfManager = null;
} else {
clearPrimitiveCaches();
}
if (cancelXHRs) {
cancelXHRs(new AbortException("Worker was terminated."));
}
clearPrimitiveCaches();
var waitOn = [];
WorkerTasks.forEach(function(task) {
waitOn.push(task.finished);
task.terminate();