无需完全解析即可提取嵌入式PDF文件

布鲁克斯94

我想构建一个实用程序来从PDF中提取嵌入式文件(请参阅规范的7.11.4节)。但是,我希望该实用程序“小”并且不依赖于完整的PDF解析框架。我想知道文件格式是否可以使一个简单的工具扫描整个文档中的某些标记或序列,并由此知道从何处开始提取嵌入式文件。

潜在的困难包括您扫描的令牌或序列可能有效地存在于文档中的其他位置,从而导致伪造或损坏的文档提取。

我对PDF规范不太熟悉,所以我正在寻找

  • 确认这是可能的
  • 可行的一般方法
等等。

至少有两种情况会使您的生活变得困难:加密文件和对象流(压缩的对象,其中包含对象的集合)。

关于第二项(对象流),一些PDF生成工具会将大多数对象(字典)带入PDF文件中,将它们放在单个对象中,然后压缩该单个对象(通常使用deflate压缩)。这意味着您不能仅浏览PDF文件以查找某些特定令牌,以提取所需的某些信息,而忽略其余信息。您将需要至少部分地实际解释PDF文件的结构。

请注意,即使不使用对象流,也很可能会压缩您要提取的嵌入式文件。

您的程序必须至少能够执行以下操作:
-处理外部参照表
-处理对象流
-将解码/解压缩过滤器应用于数据流。

一旦能够从文件中获取所有对象,从理论上讲,您可以遍历所有对象以查找EmbeddedFile类型的字典。这种方法的缺点是您可能会从文档内部的任何位置提取未引用的文件(例如,因为用户在文件历史记录的某个位置将其删除了)

另一种方法可能是实际浏览文件的结构,以在PDF规范指定的位置上查找嵌入式文件。您至少可以在以下元素中找到嵌入式文件(此列表位于我的头上,可能还有很多其他内容):
-名称字典
-文档大纲
-页面注释

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章