使用 pdfbox 在 PDF/A-1a 中查找标记内容

Find tagged content in PDF/A-1a using pdfbox

我认为我有一个 PDF/A-1a 文件,它是由 apache fop 生成的,并且有一个覆盖信头,使用来自 pdfbox 的 OverlayPDF。预检将该文件识别为正常(但显然只有 PDF/A-1b)并且 Acroreader 在文档属性中说它是 "PDF/A" 模式和 "Tagged: yes"。我想看看它看起来如何,这样我就可以调整 fop 进行一些小的改进。

我的问题是,我在哪里可以看到标记的内容(即 PDF 中的文本表示是字符输出的紧缩序列),最好不要自己编码,例如使用 pdfbox 中的 debugger/PDFReader?我有点迷路了——有没有另一种方法来获取文档结构的文本输出,例如进入 xml 文件以使用编辑器搜索它? - TIA!

编辑

信头本身是附言,使用 ghostscript 转换为 PDF/A-1b,然后覆盖

java -jar pdfbox-app-2.0.0-RC3.jar OverlayPDF letter_plain.pdf \
   followingpages_letterhead.pdf -first firstpage_letterhead.pdf \
   letter_with_head.pdf

letter_plain.pdf 是用 fop 使用

生成的
fop -pdfprofile 'PDF/A-1a' -v -d -c my_fop_config.cfg -xml letter.xml \
   -xsl letter_to_fo.xsl -pdf letter_plain.pdf

使用的版本是pdfbox 2.0和fop 1.1

如果 letter_with_head.pdf 不再是 PDF/A-1a 那么问题将适用于 letter_plain.pdf 根据 fop 调用应该是 1a,必须选择不同的解决方案(如 svg)以获取信头。

编辑 2

示例 pdf 可在此处找到:https://www.magentacloud.de/share/j9qk7jfzyv - 无需单独 followingpages_letterhead.pdf,因为样本只有一页。

编辑 3

我怀疑文本被埋在 Root/StructTreeRoot/ParentTree/Nums/[1]/[3]/P/P/P/P/P/P 下方的某处(假设 P 以某种方式映射 fo:block)但无法显示 pdf 中的文本。

手头 PDF 中的结构树条目映射到页面内容流中的标记内容。例如

中的条目
Root/StructTreeRoot/K/[0]/K/[0]/K/[1]/K/[0]/K/[0]/K/[0]/K/[0]

映射到这部分页面内容流

/Span << /MCID 0 >> BDC
  BT
    /F15 11 Tf
    1 0 0 -1 0 9.163 Tm
    [ (Bes) 15 (tell-Nr) 48 (. 1) 34 (23) 6 (456) 29 (7) 40 (8) ] TJ
  ET
EMC

可以看出,没有额外的定义,因此除了解析此示例序列中的 TJ 运算符之外,没有易于显示的文本。因此标记用于定义文档的结构,仅指向不同的构建块。

此外,还有一些有关辅助功能支持的信息。但这仅限于在结构树中指定 Lang 属性。