3

我想知道两个 pdf 文件的相似性,但我不想做详细内容比较。仅从其外部结构是否有任何解决方案。有可能吗?谢谢!

4

3 回答 3

3

这听起来可能很困难,但这里是 PDF 元数据中的一些容易获得的成果,按难度排序。

  1. 文档元数据,例如eBook-titleTitle
  2. 文档中的页数(计数/Page指令)
  3. 比较每个页面的元数据,例如MediaBox, CropBox, BleedBox,TrimBox
  4. 查找图像和文档特定字体等嵌入内容,看看它们是否完美匹配。
  5. 提取纯文本并比较单词:字数、最常用的单词等。对于西方语言,您可以像strings在 Linux 上一样通过字符串查找器运行 PDF。或者您可以进入文件并找到(blah blah blah) Tj,这是大多数文本在 PDF 内容中的存储方式。

最后,您可以通过使用 GhostScript 或其他库将它们转换为光栅格式,然后以这种方式进行比较来作弊。如果您转换为像 100 像素这样的低分辨率,那么粗略的细节可能看起来很相似。

如果您从未直接使用过 PDF,那并不可怕!它只是一个文本文件(在解压缩后),您可以或多或少地逐行解析。我在HTML 文档中更多地讨论 PDF 到 PDF的答案。

于 2009-03-30T04:13:05.577 回答
0

您可以通过对它们运行哈希(如 md5)来判断两个文件是否不同,但这不会告诉您它们之间的相似程度。

有一些二进制差异程序可以告诉您两个二进制文件的不同之处并得到合理的结果,但是许多二进制文件,尤其是文档容器,在只有很小的内部内容差异时会显示出很多二进制差异。

我不熟悉pdf格式的细节。也许其他人知道可能有帮助的内置机制。

于 2009-03-30T03:50:52.337 回答
0

PDF 不仅仅是一个文本文件。它是 B 树的二进制转储。使用压缩对象,您还可以将对象数据压缩在其他二进制对象中,这样您就看不到它们了。

如果你想做低级的文本操作,你真的需要使用一个像样的工具。Acrobat 9.0 有一个菜单选项来浏览内部 PDF 结构,或者您可以使用 IText 之类的东西。

于 2009-03-30T07:34:58.507 回答