CFDOCUMENT使用不同的MD5哈希创建具有相同输入的PDF

时间:2011-09-27 07:49:39

标签: coldfusion coldfusion-9 cfdocument

我正在使用CFDOCUMENT在CF9.0.1中创建PDF。但是,每次使用CFDOCUMENT生成新PDF时,输入相同,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?

我运行了HxD Hex File Compare,发现该文件有三个部分:

  • 字体名称,例如62176 / FontName / OJSSWJ + TimesNewRomanPS(OJSSWJ是随机的)
  • 时间戳/ CreationDate(D:20110927152929 + 08'00')
  • 最后的某种键:&lt;] / Info 12 0 R / Size 13&gt;&gt;

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:4)

他们永远不会是一样的。

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

creationDate是创建它的时间戳,因此除非你每次都在同一秒创建它,否则它将不会相同。

您可以修改pdf并删除或修改此位。

或者使用不同的方法来确定是否应该创建pdf,将其创建为md5比较结果似乎浪费了处理能力。