c# - 使用 PDF 元数据来识别使用 C# 的文件
问题描述
场景 - 我有 10 家银行的 pdf 文件的报表。它们都是不同的格式。这些文件中的每一个都有一个相应的解析器来提取数据。现在我们根据文件名将文件提供给解析器。
但是现在源没有提供正确的文件名。因此,我们无法将文件路由到相应的解析器。
我的疑惑,
- 每个 pdf 文件都有元数据还是可选的?
- 我可以使用元数据来区分 PDF 文件以将文件路由到相应的解析器。
我使用以下代码从我的文件中提取元数据,它看起来非常混乱。
http://kuujinbo.info/iTextInAction2Ed/index.aspx?ch=Chapter12&ex=MetadataXmp 5]
自动化此过程的最佳方法是什么。
提前致谢。
解决方案
在 ISO 32000-1 中,允许使用两种不同类型的元数据:
- 信息字典中的元数据,
- XMP 元数据流。
在 ISO 32000-2 中不推荐使用 Info 字典。
您引用的示例是 XMP 示例。XMP 代表可扩展元数据平台。它是以纯文本形式存储在 XML 格式的二进制文件中的元数据。XMP 可用于 PDF、JPG、PNG、... 不限于 PDF;您还可以在其他类型的文件中找到 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 文件。
推荐阅读
- python - 如何从多维(深度未知)python字典中递归删除每个键?
- html - 当缩小到手机和平板电脑大小时,我的登录注册面板和搜索消失了
- wordpress - Woocommerce 更新自定义字段时从购物车中删除商品
- javascript - 从 React 中最底层的 Hierarchical 组件触发警报 (https://material-ui.com/components/alert/#alert)
- r - 基于 UI 元素从 Shiny 调用 R 代码
- java - CustomAdapter Not Showing Data
- javascript - TextField hover highlight animation QML QtQuick.Control 2.15
- android - how to use DefaultTimeBar outSide of PlayerView in Android
- python - Remove substring and merge rows in python/pandas
- android - Android Studio Gradle Build Error: Could not determine the dependencies of task ':app:compileFreeDebugJavaWithJavac'