2012-06-27 65 views
0

我已使用此example(FirstPDF)删除“new Date()”句子生成了两个PDF。使用Java或iText生成两个完全相同的PDF

他们看起来是平等的,但是当他们计算一个md5散列时,他们真的不一样。

我检查过他们,他们注册了一个creationDate,即使句子document.addCreationDate()没有被包含在源代码中。

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

+3

为什么你需要生成两个相同的文件?生成一个,放在文件系统上,然后复制一个文件。 –

回答

5

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

from

+0

感谢您的信息。 – paco

1

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

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

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

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

文件标识符通常是基于日期,路径名称,文件大小,PDF文件内容的一部分(例如信息字典中的条目)创建的散列。

文件标识符在文件加密中涉及(和强制)。因此,具有不同文件标识符的加密PDF文件将具有完全不同的流。

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

相关问题