2012-06-27 104 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。

相關問題