diff --git a/src/core/struct_tree.js b/src/core/struct_tree.js index 1d2fabd27..dcb2744db 100644 --- a/src/core/struct_tree.js +++ b/src/core/struct_tree.js @@ -295,6 +295,10 @@ class StructTreePage { if (isString(alt)) { obj.alt = stringToPDFString(alt); } + const lang = node.dict.get("Lang"); + if (isString(lang)) { + obj.lang = stringToPDFString(lang); + } for (const kid of node.kids) { const kidElement = diff --git a/test/unit/api_spec.js b/test/unit/api_spec.js index f0cf8e004..228c5e038 100644 --- a/test/unit/api_spec.js +++ b/test/unit/api_spec.js @@ -1836,6 +1836,7 @@ sozialökonomische Gerechtigkeit.`) children: [ { role: "Document", + lang: "en-US", children: [ { role: "H1", diff --git a/test/unit/struct_tree_spec.js b/test/unit/struct_tree_spec.js index 255a5e51d..a4841bffc 100644 --- a/test/unit/struct_tree_spec.js +++ b/test/unit/struct_tree_spec.js @@ -19,6 +19,7 @@ import { getDocument } from "../../src/display/api.js"; function equalTrees(rootA, rootB) { function walk(a, b) { expect(a.role).toEqual(b.role); + expect(a.lang).toEqual(b.lang); expect(a.type).toEqual(b.type); expect("children" in a).toEqual("children" in b); if (!a.children) { @@ -47,6 +48,7 @@ describe("struct tree", function () { children: [ { role: "Document", + lang: "en-US", children: [ { role: "H1", diff --git a/web/struct_tree_layer_builder.js b/web/struct_tree_layer_builder.js index 047387b62..5fc0409d4 100644 --- a/web/struct_tree_layer_builder.js +++ b/web/struct_tree_layer_builder.js @@ -98,6 +98,9 @@ class StructTreeLayerBuilder { if (structElement.id !== undefined) { htmlElement.setAttribute("aria-owns", structElement.id); } + if (structElement.lang !== undefined) { + htmlElement.setAttribute("lang", structElement.lang); + } } _walk(node) {