使用Java或iText生成两个完全相同的PDF

时间:2012-06-27 07:21:06

标签: java pdf-generation itext

我使用此example(FirstPDF)删除了“new Date()”句子,生成了两个PDF。

它们看起来相同,但在计算它们的md5哈希时,它们实际上是不同的。

我已经检查了他们并注册了creationDate,即使源代码中未包含句子document.addCreationDate()

问题很简单:是否有可能以任何方式使用任何API生成两个完全相等的字节到字节的PDF?

3 个答案:

答案 0 :(得分:5)

  

这应该是它应该如何。除了元数据中的日期之外,还有   也是每次生成PDF时添加的唯一ID   划伤。

from

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:1)

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

文件标识符通常是根据日期,路径名称,文件大小,PDF文件内容的一部分(例如信息词典中的条目)创建的哈希。                                                                      。
文件标识符在文档加密中涉及(和必需)。因此,具有不同文件标识符的加密PDF文件将具有完全不同的流。

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