使用PDF元数据通过C#识别文件

时间:2018-07-18 15:18:35

标签: c# asp.net pdf itext

场景-我在pdf文件中有10个银行的报表。它们都是不同的格式。这些文件中的每个文件都有一个对应的解析器来提取数据。现在,我们根据文件名将文件提供给解析器。

但是现在源没有提供正确的文件名。因此,我们无法将文件路由到相应的解析器。

我的疑问,

  1. 每个pdf文件是否都有元数据,或者它是可选的?
  2. 我可以使用元数据区分PDF文件以将文件路由到 相应的解析器。
  3. 我使用以下代码从文件中提取元数据,它看起来非常混乱。

    http://kuujinbo.info/iTextInAction2Ed/index.aspx?ch=Chapter12&ex=MetadataXmp 5]

自动执行此过程的最佳方法是什么。

谢谢。

1 个答案:

答案 0 :(得分:0)

在ISO 32000-1中,允许使用两种不同类型的元数据:

  • 信息字典中的元数据
  • XMP元数据流。

信息字典在ISO 32000-2中已弃用。

您引用的示例是XMP示例。 XMP代表可扩展元数据平台。元数据以纯文本格式存储在XML格式的二进制文件中。 XMP可以在PDF,JPG,PNG等中使用。您还可以在其他类型的文件中找到XMP元数据。

此外,XMP是可选的。 XMP规范的第一个版本于2004年发布(由Adobe在2001年开发),而第一个PDF规范于1993年发布。不言而喻,许多PDF文件缺少XMP格式的元数据。

如果要检测文件是否为PDF文件,可以查看前7个字节。如果前7个字节与%PDF-1.匹配,则您的PDF文件可能遵循ISO 32000-1(2008)。如果前7个匹配%PDF-2.,则您拥有一个声称符合ISO 32000-2(2017)的PDF文件。