From dca38f0226cb25daa10438aa014fc97dd23896da Mon Sep 17 00:00:00 2001 From: Ekaterina Chubrick Date: Wed, 3 Jun 2026 11:16:10 +0300 Subject: [PATCH] Fixes: - Wrong content items detection due to EMC processing - "Alt" text decoding errors --- src/core/bounding_boxes.js | 3 ++- src/core/catalog.js | 26 ++++++++++++++++++-------- 2 files changed, 20 insertions(+), 9 deletions(-) diff --git a/src/core/bounding_boxes.js b/src/core/bounding_boxes.js index aecbaf43de793..26248b070bc9b 100644 --- a/src/core/bounding_boxes.js +++ b/src/core/bounding_boxes.js @@ -520,7 +520,8 @@ class BoundingBoxesCalculator { fn !== OPS.markPoint && fn !== OPS.markPointProps && fn !== OPS.beginMarkedContent && - fn !== OPS.beginMarkedContentProps + fn !== OPS.beginMarkedContentProps && + fn !== OPS.endMarkedContent ) { this.boundingBoxesStack.inc(); } diff --git a/src/core/catalog.js b/src/core/catalog.js index 08a77618519e2..17e1e28e10f21 100644 --- a/src/core/catalog.js +++ b/src/core/catalog.js @@ -1817,15 +1817,20 @@ class ExtendedCatalog extends Catalog { const roleName = this.getRoleName(el, name); const treeElement = { - name: name ? stringToUTF8String(name) : null, - roleName: roleName ? stringToUTF8String(roleName) : null, + name: name ? stringToPDFString(name) : null, + roleName: roleName ? stringToPDFString(roleName) : null, children: this.getTreeElement(el.get("K"), page, el.getRaw("K")), pageIndex: page, ref: ref instanceof Ref ? ref : null, }; - const alt = el.has("Alt") ? el.get("Alt") : null; - if (alt) treeElement.alt = stringToUTF8String(alt); + let alt = el.has("Alt") ? el.get("Alt") : null; + if (typeof alt !== "string") { + alt = el.has("ActualText") ? el.get("ActualText") : null; + } + if (typeof alt === "string") { + treeElement.alt = stringToPDFString(alt); + } return treeElement; } @@ -1898,15 +1903,20 @@ class ExtendedCatalog extends Catalog { const roleName = this.getRoleName(el, name); const treeElement = { - name: name ? stringToUTF8String(name) : null, - roleName: roleName ? stringToUTF8String(roleName) : null, + name: name ? stringToPDFString(name) : null, + roleName: roleName ? stringToPDFString(roleName) : null, children: [], pageIndex: page, ref: ref instanceof Ref ? ref : null, }; - const alt = el.has("Alt") ? el.get("Alt") : null; - if (alt) treeElement.alt = stringToUTF8String(alt); + let alt = el.has("Alt") ? el.get("Alt") : null; + if (typeof alt !== "string") { + alt = el.has("ActualText") ? el.get("ActualText") : null; + } + if (typeof alt === "string") { + treeElement.alt = stringToPDFString(alt); + } return treeElement; }