簡體   English   中英

使用Java或iText生成兩個完全相等的PDF

[英]Generate two exactly equal PDFs with Java or iText

通過使用此示例 (FirstPDF)刪除了“ new Date()”語句,我生成了兩個PDF。

它們看起來相等,但是在它們上計算md5哈希值時,它們實際上是不同的。

我已經檢查了它們,並且它們注冊了creationDate ,即使句子document.addCreationDate()不包含在源代碼中。

問題很簡單:任何API都可以以任何方式生成兩個字節完全相同的PDF嗎?

這應該是這樣。 除了元數據中的日期外,每次從頭開始生成PDF時,都會添加一個唯一的ID。

如果您需要兩個相同的文件來提供相同的MD5哈希值,為什么不復制已經創建的文件呢?

如果您需要通過兩個單獨的API調用來創建兩個相同的文件,則可以使用任何值得的PDF創建API:

  • 由於這些API均包含一個調用,用於將輸出PDF的創建和修改日期設置為所需的任何值...只是不要讓此設置自動發生! 兩次使用相同的設置。
  • 注意! PDF還支持文檔UUID的設置。 其中一些API還會為每個新文檔設置一個任意的UUID(這會破壞您的MD5哈希值),除非您積極防止這種情況發生。

如上所述這里 ,文件不等於因為他們有不同的標識符(有兩個文件,在不同的時刻創建的,應該有不同的ID如PDF規范中定義)。

文件標識符通常是基於日期,路徑名,文件大小,PDF文件內容的一部分(例如,信息詞典中的條目)創建的哈希。

文件標識符與文檔加密有關(並且是必需的)。 結果,具有不同文件標識符的加密PDF文件將具有完全不同的流。

通過設計,您永遠不能使用相同的代碼創建兩個相同的PDF。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM