【问题标题】:Find tagged content in PDF/A-1a using pdfbox使用 pdfbox 在 PDF/A-1a 中查找标记的内容
【发布时间】:2023-04-07 10:39:01
【问题描述】:

我有一个我认为是由 apache fop 生成的 PDF/A-1a 文件,并且使用 pdfbox 中的 OverlayPDF 放置了一个覆盖信头。 preflight 将文件识别为正常(但显然只有 PDF/A-1b)并且 Acroreader 在文档属性中说它是“PDF/A”模式和“标记:是”。我想看看它的外观,以便我可以将 fop 调整为一些小的改进。

我的问题是,我在哪里可以查看标记的内容(即 PDF 中的文本表示是 char 输出的紧缩序列),最好不用自己编码,例如使用 pdfbox 中的调试器/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 magentacloud.de/share/j9qk7jfzyv
  • 首先,Adobe Acrobat Preflight 声称 letter_plain.pdf 中已经存在许多 PDF/A-1a 有效性问题。
  • 我知道,刚在pdftools上查了一下。有些我可以使用 exiftool 修复(关于包/语言和日期的东西),有些我不知道它们有多相关......但核心问题是关于标签。

标签: pdf pdfbox apache-fop pdfa


【解决方案1】:

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

可以看出,没有额外的定义,所以除了在这个示例序列中解析TJoperator 之外,没有容易显示的文本。所以标签只用来定义文档的结构,指向不同的构建块。

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

【讨论】:

  • 非常感谢@Maruan,这解释了很多。如果有的话,那会是放置另一个可访问性文本的地方吗?就像那条线的“ Bestell-Nr. 12345678”?我是否应该向 fop'pers 咨询为什么没有替代文本,尽管它应该(A-1a)并且可以(fop 获取原始文本)在那里?
  • Mhmm - 据我所知,获得“纯”文本会更容易,它不是 PDF/A-1a 提供该信息 AFAIK 的要求。
猜你喜欢
  • 2015-09-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-02-27
  • 1970-01-01
  • 1970-01-01
  • 2016-07-18
相关资源
最近更新 更多