diff --git a/web/pdf_page_view.js b/web/pdf_page_view.js index 04bb5172c..5e56bce8a 100644 --- a/web/pdf_page_view.js +++ b/web/pdf_page_view.js @@ -417,6 +417,7 @@ class PDFPageView { if (treeDom) { this.canvas?.append(treeDom); } + this.structTreeLayer?.show(); } async #buildXfaTextContentItems(textDivs) { @@ -505,6 +506,7 @@ class PDFPageView { if (textLayerNode) { this.textLayer.hide(); } + this.structTreeLayer?.hide(); if (!zoomLayerNode) { if (this.canvas) { @@ -776,6 +778,7 @@ class PDFPageView { if (this.textLayer) { if (hideTextLayer) { this.textLayer.hide(); + this.structTreeLayer?.hide(); } else if (redrawTextLayer) { this.#renderTextLayer(); } diff --git a/web/pdf_viewer.css b/web/pdf_viewer.css index 89b5e9b9e..e7e51a523 100644 --- a/web/pdf_viewer.css +++ b/web/pdf_viewer.css @@ -149,6 +149,10 @@ display: block; } +.pdfViewer .page canvas .structTree { + contain: strict; +} + .pdfViewer .page canvas[hidden] { display: none; } diff --git a/web/struct_tree_layer_builder.js b/web/struct_tree_layer_builder.js index 5ebc29b1a..5d54475a7 100644 --- a/web/struct_tree_layer_builder.js +++ b/web/struct_tree_layer_builder.js @@ -87,6 +87,18 @@ class StructTreeLayerBuilder { return (this.#treeDom = treeDom); } + hide() { + if (this.#treeDom && !this.#treeDom.hidden) { + this.#treeDom.hidden = true; + } + } + + show() { + if (this.#treeDom?.hidden) { + this.#treeDom.hidden = false; + } + } + #setAttributes(structElement, htmlElement) { if (structElement.alt !== undefined) { htmlElement.setAttribute("aria-label", structElement.alt);