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

时间:2016-06-22 08:01:38

标签: pdf pdfbox apache-fop pdfa

我认为是由apache fop生成的PDF / A-1a文件,并且使用来自pdfbox的OverlayPDF添加了覆盖信头。 preflight将文件识别为ok(但显然只有PDF / A-1b),Acroreader表示它是" PDF / A"模式和"标记:是"在文档属性中。我想看看它看起来如何,所以我可以调整一些小的改进。

我的问题是,我在哪里可以查看标记的内容(即PDF中的内容的文本表示是字符输出的字符序列),最好不要自己编码,例如使用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 -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 - 不需要单独的followpages_letterhead.pdf,因为示例只有一页。

编辑3

我怀疑文字被隐藏在Root/StructTreeRoot/ParentTree/Nums/[1]/[3]/P/P/P/P/P/P以下的地方(假设P&#39}以某种方式映射fo:block' s但是无法显示文字来自pdf。

1 个答案:

答案 0 :(得分:2)

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属性。