CFDOCUMENT создает PDF с разными хэшами MD5 для одного и того же ввода - PullRequest
3 голосов
/ 27 сентября 2011

Я использую CFDOCUMENT для создания PDF в CF9.0.1. Однако при использовании одного и того же ввода каждый раз, когда я генерирую новый PDF-файл с использованием 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 генерировать тот же PDF с таким же хешем MD5 (битовое сходство), если дан тот же ввод?

Я запустил HxD Hex File Compare и обнаружил, что файл отличается в трех разделах:

  • Название шрифта, например 62176 / FontName / OJSSWJ + TimesNewRomanPS (OJSSWJ является случайным)
  • Метка времени / дата создания (D: 20110927152929 + 08'00 ')
  • Какой-то ключ в конце: <] / Информация 12 0 R / Размер 13 >>

Заранее спасибо за помощь!

1 Ответ

4 голосов
/ 27 сентября 2011

Они никогда не будут одинаковыми.

Метка времени / CreationDate (D: 20110927152929 + 08'00 ')

CreationDate - это метка времени, когда он был создан, поэтому, если только выкаждый раз создавайте его в одну и ту же секунду, он не будет одинаковым.

Вы можете изменить pdf и удалить или изменить этот бит.

Или использовать другой метод, чтобы определить,Вы должны создать PDF-файл, создать его для md5, сравнить результаты - это напрасная трата вычислительной мощности.

...