2011-09-27 85 views
3

我使用CFDOCUMENT创造CF9.0.1一个PDF PDF。但是,每次使用CFDOCUMENT生成新PDF时,如果输入相同,则MD5哈希似乎不同。CFDOCUMENT创建了不同的MD5哈希为相同的输入

测试代码很简单:

<cfdocument name=FileData1 format="PDF" localurl="yes" pagetype="A4"><h3>I am happy!</h3></cfdocument> 
<cfdocument name=FileData2 format="PDF" localurl="yes" pagetype="A4"><h3>I am happy!</h3></cfdocument> 
<cffile ACTION="write" FILE="C:\happy1.pdf" OUTPUT=#FileData1# ADDNEWLINE=NO NAMECONFLICT="Override"> 
<cffile ACTION="write" FILE="C:\happy2.pdf" OUTPUT=#FileData2# ADDNEWLINE=NO NAMECONFLICT="Override"> 

生产的这两个文件有不同的文件的MD5散列虽然两者PDF长得一模一样。我有一个用户需求,如果文件是相同的忽略PDF的再生,所以没有人知道如果强制CF9生成具有相同MD5哈希(位相似性)相同的PDF,如果给定相同的输入?

我跑的Hex文件比较,发现文件中三个部分的区别:

  • 的字体名字,例如: 62176/FONTNAME/OJSSWJ + TimesNewRomanPS(该OJSSWJ是随机的)
  • 时间戳/ CreationDate(d:20110927152929 + 08'00' )
  • 某种在结束键的:<] /信息12 0 R /尺寸13 >>

感谢您的帮助提前!

回答

4

他们将永远是相同的。

时间戳/ CreationDate(d:20110927152929 + 08'00' )

的creationDate是在创建时的时间戳,从而除非你在同一第二每次创建它,它不会是相同的。

您可能能够修改PDF和删除或修改该位。

或者使用不同的方法来确定是否应创建PDF,它创建于MD5比较结果好像处理能力的浪费。

+0

感谢您的意见,但我希望有一种方法实际上迫使PDF生成在相同的HTML内容相同的PDF(例如指定一个固定的创建日期如果可能的话)。我的例子是严格地简化了要求,这是因为发生的事情是这些文件是在多方发送的时候生成的,我们需要跟踪传入的文件以确保它不是重复文件。 – andrwo

+0

当文件传入时,删除更改的PDF部分,然后删除MD5,然后检查其中的重复项。 –