使用C#中的abcpdf从PDF A / 3中提取嵌入式XML文件 - ZUGFeRD

时间:2014-02-11 10:10:17

标签: c# xml pdf abcpdf pdfa

我目前正在使用新的德国ZUGFeRD文件。这些是包含数据的嵌入式XML文件的PDF A / 3文件。

我想使用带有C#的abcpdf 8.1从PDF A / 3中提取此XML文件。

知道怎么做吗?

非常感谢和问候,

2 个答案:

答案 0 :(得分:2)

我不知道abcpdf,但我想pdf libs提供了对pdfs内容的类似访问。

首先看看Das-ZUGFeRD-Format_1p0.pdf。特别是第112页。图像显示了您必须遍历的对象树,以便找到xml流。

使用此树,您可以获得名称,类型和方向。现在,您可以遍历pdf对象树以获取您要查找的XML内容。

基于图表的步骤。

  1. 阅读您的PDF
  2. 获取PDF中的目录
  3. 从目录
  4. 获取名称为AF的数组
  5. AF数组获取第一个元素(应为file spec
  6. file spec获取名为EF
  7. 的词典
  8. 获取EF
  9. 的信息流内容

    这是您访问内容时需要执行的步骤。

    要显示pdf的结构并浏览树,我建议使用像iText RUPS这样的工具

答案 1 :(得分:-2)

我用abcpdf做了什么:

  • 从Doc获取Objectsoup数组(几乎是Doc中所有对象的数组)

  • 因为ZUGFeRD只允许PDF中的一个嵌入文件,所以我只搜索了这个objectsoup-array,其中包含一个包含/ EmbeddedFile的类型StreamObject

  • 解压缩该对象的Stream,获取流的byte []并将其写入xml文件