diff --git a/src/core/document.js b/src/core/document.js index f02437043..b51ddad40 100644 --- a/src/core/document.js +++ b/src/core/document.js @@ -1237,7 +1237,7 @@ class PDFDocument { return this.xfaFactory ? this.xfaFactory.getPages() : null; } - async loadXfaImages() { + async #loadXfaImages() { const xfaImages = await this.pdfManager.ensureCatalog("xfaImages"); if (!xfaImages) { return; @@ -1245,7 +1245,7 @@ class PDFDocument { this.xfaFactory.setImages(xfaImages); } - async loadXfaFonts(handler, task) { + async #loadXfaFonts(handler, task) { const acroForm = await this.pdfManager.ensureCatalog("acroForm"); if (!acroForm) { return; @@ -1264,18 +1264,19 @@ class PDFDocument { const options = Object.assign( Object.create(null), - this.pdfManager.evaluatorOptions + this.pdfManager.evaluatorOptions, + { useSystemFonts: false } ); - options.useSystemFonts = false; + const { builtInCMapCache, fontCache, standardFontDataCache } = this.catalog; const partialEvaluator = new PartialEvaluator({ xref: this.xref, handler, pageIndex: -1, idFactory: this._globalIdFactory, - fontCache: this.catalog.fontCache, - builtInCMapCache: this.catalog.builtInCMapCache, - standardFontDataCache: this.catalog.standardFontDataCache, + fontCache, + builtInCMapCache, + standardFontDataCache, options, }); const operatorList = new OperatorList(); @@ -1383,6 +1384,15 @@ class PDFDocument { this.xfaFactory.appendFonts(pdfFonts, reallyMissingFonts); } + loadXfaResources(handler, task) { + return Promise.all([ + this.#loadXfaFonts(handler, task).catch(() => { + // Ignore errors, to allow the document to load. + }), + this.#loadXfaImages(), + ]); + } + serializeXfaData(annotationStorage) { return this.xfaFactory ? this.xfaFactory.serializeData(annotationStorage) diff --git a/src/core/pdf_manager.js b/src/core/pdf_manager.js index cac6c3c5e..9ee866cdb 100644 --- a/src/core/pdf_manager.js +++ b/src/core/pdf_manager.js @@ -115,14 +115,6 @@ class BasePdfManager { return this.pdfDocument.fontFallback(id, handler); } - loadXfaFonts(handler, task) { - return this.pdfDocument.loadXfaFonts(handler, task); - } - - loadXfaImages() { - return this.pdfDocument.loadXfaImages(); - } - cleanup(manuallyTriggered = false) { return this.pdfDocument.cleanup(manuallyTriggered); } diff --git a/src/core/worker.js b/src/core/worker.js index 66fa9ae15..3d1abbaf1 100644 --- a/src/core/worker.js +++ b/src/core/worker.js @@ -170,18 +170,11 @@ class WorkerMessageHandler { const isPureXfa = await pdfManager.ensureDoc("isPureXfa"); if (isPureXfa) { - const task = new WorkerTask("loadXfaFonts"); + const task = new WorkerTask("loadXfaResources"); startWorkerTask(task); - await Promise.all([ - pdfManager - .loadXfaFonts(handler, task) - .catch(reason => { - // Ignore errors, to allow the document to load. - }) - .then(() => finishWorkerTask(task)), - pdfManager.loadXfaImages(), - ]); + await pdfManager.ensureDoc("loadXfaResources", [handler, task]); + finishWorkerTask(task); } const [numPages, fingerprints] = await Promise.all([