From 9360c7cbdc93ca68fbad99f963e41eb492fd16e9 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Mon, 12 Apr 2021 08:52:35 +0200 Subject: [PATCH] Avoid unnecessary parsing, in `Page.GetStructTree`, when no structTree is available (PR 13221 follow-up) It's obviously (a bit) more efficient to return early in `Page.getStructTree`, rather than trying to first "parse" an *empty* structTree-root. *Somehow I didn't think of this yesterday, but this feels like a much better solution overall; sorry about the churn here!* --- src/core/document.js | 8 +++++++- src/core/struct_tree.js | 4 ---- src/core/worker.js | 12 +++--------- 3 files changed, 10 insertions(+), 14 deletions(-) diff --git a/src/core/document.js b/src/core/document.js index 27cbede28..072ae3770 100644 --- a/src/core/document.js +++ b/src/core/document.js @@ -454,7 +454,13 @@ class Page { const structTreeRoot = await this.pdfManager.ensureCatalog( "structTreeRoot" ); - return this.pdfManager.ensure(this, "_parseStructTree", [structTreeRoot]); + if (!structTreeRoot) { + return null; + } + const structTree = await this.pdfManager.ensure(this, "_parseStructTree", [ + structTreeRoot, + ]); + return structTree.serializable; } /** diff --git a/src/core/struct_tree.js b/src/core/struct_tree.js index a07d99b96..41587d45c 100644 --- a/src/core/struct_tree.js +++ b/src/core/struct_tree.js @@ -328,10 +328,6 @@ class StructTreePage { } nodeToSerializable(child, root); } - - if (root.children.length === 0) { - return null; - } return root; } } diff --git a/src/core/worker.js b/src/core/worker.js index fb81beb79..4cf69b769 100644 --- a/src/core/worker.js +++ b/src/core/worker.js @@ -743,15 +743,9 @@ class WorkerMessageHandler { }); handler.on("GetStructTree", function wphGetStructTree(data) { - const pageIndex = data.pageIndex; - return pdfManager - .getPage(pageIndex) - .then(function (page) { - return pdfManager.ensure(page, "getStructTree"); - }) - .then(function (structTree) { - return structTree.serializable; - }); + return pdfManager.getPage(data.pageIndex).then(function (page) { + return pdfManager.ensure(page, "getStructTree"); + }); }); handler.on("FontFallback", function (data) {