This is an automated email from the ASF dual-hosted git repository.

THausherr pushed a commit to branch TIKA-4891
in repository https://gitbox.apache.org/repos/asf/tika.git

commit b61a38a6ef69da1486a83763b6e55104be6129f8
Author: Tilman Hausherr <[email protected]>
AuthorDate: Tue Sep 15 09:00:19 2026 +0200

    [TIKA-4891] Temporary table header retrieval method (Mirrors PDFBox bugfix)
---
 .../apache/tika/parser/pdf/PDFMarkedContent2XHTML.java   | 16 +++++++++++++++-
 1 file changed, 15 insertions(+), 1 deletion(-)

diff --git 
a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-pdf-module/src/main/java/org/apache/tika/parser/pdf/PDFMarkedContent2XHTML.java
 
b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-pdf-module/src/main/java/org/apache/tika/parser/pdf/PDFMarkedContent2XHTML.java
index 1271fd5d1e..906f326d98 100644
--- 
a/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-pdf-module/src/main/java/org/apache/tika/parser/pdf/PDFMarkedContent2XHTML.java
+++ 
b/tika-parsers/tika-parsers-standard/tika-parsers-standard-modules/tika-parser-pdf-module/src/main/java/org/apache/tika/parser/pdf/PDFMarkedContent2XHTML.java
@@ -1687,7 +1687,7 @@ public class PDFMarkedContent2XHTML extends PDF2XHTML {
             if (table.getColSpan() > 1) {
                 addAttribute(attrs, "colspan", 
Integer.toString(table.getColSpan()));
             }
-            String[] headers = table.getHeaders();
+            String[] headers = getTableHeaders(table); //TODO 
table.getHeaders() with 3.0.9 release
             if (headers != null && headers.length > 0) {
                 addAttribute(attrs, "headers", String.join(" ", headers));
             }
@@ -1697,6 +1697,20 @@ public class PDFMarkedContent2XHTML extends PDF2XHTML {
         }
     }
 
+    //TODO remove this with 3.0.9 release (PDFBOX-6261)
+    private static String[] getTableHeaders(PDTableAttributeObject table) {
+        COSBase v = table.getCOSObject().getDictionaryObject("Headers");
+        if (v instanceof COSArray) {
+            COSArray array = (COSArray) v;
+            String[] strings = new String[array.size()];
+            for (int i = 0; i < array.size(); i++) {
+                strings[i] = array.getString(i);
+            }
+            return strings;
+        }
+        return null;
+    }
+
     private static void addAttribute(AttributesImpl attrs, String name, String 
value) {
         if (value == null || value.isBlank() || attrs.getIndex("", name) >= 0) 
{
             return;

Reply via email to