我通过使用此示例(FirstPDF)删除了“new Date()”语句生成了两个 PDF。
它们看起来相等,但是在对它们计算 md5 哈希时,它们确实不同。
我已经检查了它们并且它们注册了一个creationDate
,即使该句子document.addCreationDate()
不包含在源代码中。
问题非常简单:是否可以通过任何 API 以任何方式生成两个字节对字节完全相同的 PDF?
我通过使用此示例(FirstPDF)删除了“new Date()”语句生成了两个 PDF。
它们看起来相等,但是在对它们计算 md5 哈希时,它们确实不同。
我已经检查了它们并且它们注册了一个creationDate
,即使该句子document.addCreationDate()
不包含在源代码中。
问题非常简单:是否可以通过任何 API 以任何方式生成两个字节对字节完全相同的 PDF?
这是应该的。除了元数据中的日期外,每次从头开始生成 PDF 时,还会添加一个唯一 ID。
如此处所述,文件不相等,因为它们具有不同的标识符(在不同时刻创建的两个文件应具有 PDF 规范中定义的不同 ID)。
文件标识符通常是根据日期、路径名、文件大小、PDF 文件的部分内容(例如信息字典中的条目)创建的散列。
.
文件标识符涉及(并且是强制性的)文档加密。因此,具有不同文件标识符的加密 PDF 文件将具有完全不同的流。
按照设计,您永远不能使用相同的代码创建两个相同的 PDF。
如果您需要两个相同的文件给您相同的 MD5 哈希,为什么不复制一个已经创建的文件呢?
如果您需要通过两个单独的 API 调用创建两个相同的文件,那么您可以使用任何物有所值的 PDF 创建 API: