0

我通过使用此示例(FirstPDF)删除了“new Date()”语句生成了两个 PDF。

它们看起来相等,但是在对它们计算 md5 哈希时,它们确实不同。

我已经检查了它们并且它们注册了一个creationDate,即使该句子document.addCreationDate()不包含在源代码中。

问题非常简单:是否可以通过任何 API 以任何方式生成两个字节对字节完全相同的 PDF?

4

3 回答 3

5

这是应该的。除了元数据中的日期外,每次从头开始生成 PDF 时,还会添加一个唯一 ID。

于 2012-06-27T07:36:41.180 回答
1

如此处所述,文件不相等,因为它们具有不同的标识符(在不同时刻创建的两个文件应具有 PDF 规范中定义的不同 ID)。

文件标识符通常是根据日期、路径名、文件大小、PDF 文件的部分内容(例如信息字典中的条目)创建的散列。
.
文件标识符涉及(并且是强制性的)文档加密。因此,具有不同文件标识符的加密 PDF 文件将具有完全不同的流。

按照设计,您永远不能使用相同的代码创建两个相同的 PDF。

于 2014-05-27T08:18:40.673 回答
1

如果您需要两个相同的文件给您相同的 MD5 哈希,为什么不复制一个已经创建的文件呢?

如果您需要通过两个单独的 API 调用创建两个相同的文件,那么您可以使用任何物有所值的 PDF 创建 API:

  • 因为这些 API 中的每一个都包含一个调用,以将输出 PDF 的创建和修改日期设置为您需要的任何值......只是不要让这个设置自动发生!使用相同的设置两次。
  • 注意力!PDF 还支持文档 UUID 的设置。其中一些 API 还会为每个新文档设置任意 UUID(这会破坏您的 MD5 哈希),除非您主动阻止这种情况发生。
于 2012-06-29T16:12:08.247 回答