为何PDF的/ID字段与创建及最后修改日期不匹配?
PDF创建/修改日期匹配但
/ID字段哈希不一致的原因 先澄清一个普遍误区:/ID数组的两个哈希值并非严格对应「文档创建时哈希」和「修改时哈希」。根据PDF规范,它的定义是:
- 第一个哈希是文档首次生成时,基于文件内容+部分文件系统属性生成的唯一标识
- 第二个哈希是文档最后一次保存时,基于当时的文件内容+对应属性生成的标识
但实际场景中,哪怕/CreationDate和/ModDate显示一致,/ID的两个哈希也可能不一样,常见原因有这几个:
- 隐性内部结构变动:不少PDF编辑器在保存时,会自动做一些用户感知不到的优化——比如整理对象引用、清理冗余字典项、更新XMP元数据里的内部时间戳。这些改动不会修改trailer里的日期字段,但会改变文件二进制内容,直接导致第二个哈希值变化。
- 无修改的「另存为」操作:用PDF阅读器的「另存为」功能时,很多工具会自动压缩文件、重构交叉引用表。就算你没改任何内容,这些操作也会改变文件的二进制结构,进而影响
/ID的第二个哈希,但日期字段可能保持原样。 - 日期字段被人为篡改:有人会手动修改trailer里的
/CreationDate和/ModDate,把它们改成一致,但忘了同步修改/ID的哈希值。这种情况属于刻意的文档伪造,目的是让文档看起来没被改动过。 - 工具实现差异:不同PDF工具对
/ID哈希的生成逻辑有细微差别。有些工具生成第二个哈希时,参考的文件属性范围和第一个哈希不同,哪怕文档内容没变化,也可能出现哈希不一致,同时日期字段保持同步的情况。
说白了:日期字段只是可修改的元数据标记,而/ID的哈希是基于实际文件内容计算的。只要文件二进制有任何变动(哪怕是肉眼完全不可见的),第二个哈希就会变,和日期是否匹配没有强制绑定关系。
内容的提问来源于stack exchange,提问作者Melo
相关产品推荐
相关产品推荐

