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;
