ByteScope

Remove PDF Metadata

打開 PDF,看完 Info dict 的欄位和 XMP,再清掉你不想留的——都在這個分頁裡,不會上傳。

檔案不會離開你的瀏覽器 — 全部在本機處理。

把 PDF 拖到這裡

或點一下選檔 — 在這個分頁裡處理,不會上傳

關於這個工具

你用 email 寄出、丟上入口網站、或丟進聊天室的 PDF,通常還帶著誰寫的、哪個程式生出來的、什麼時候寫的。這些住在 Document Information Dictionary——TitleAuthorSubjectKeywordsCreatorProducerCreationDateModDate——也常常再寫進 catalog 底下的 XMP stream。這頁會讀出這八個欄位、以及有沒有 XMP,然後讓你自己決定清哪些。檔案不會離開這個分頁。

Info dict 跟 XMP 是兩份

只把 Info dict 的 Author 清掉,碰不到 XMP;只丟掉 XMP,Info dict 也不會變空。寫檔的程式通常兩邊都填,所以只清一邊,作者還坐在另一邊。按鈕上面的計畫會列出這次會清哪些 Info 欄位、你要留哪些、哪些本來就是空的、XMP 會不會丟掉。計畫什麼都不改的話,按鈕按不了。

交給你之前,會把結果再讀一次

有些 PDF 程式庫在開啟或存檔時會自己把 ProducerModDate 寫回去,結果你拿到的檔案中繼資料不減反增。清完之後,這頁會把輸出再載入一次(關掉那種改寫),檢查清掉的欄位真的是空的。不是空的,就顯示錯誤,不會給你下載。有密碼的 PDF 現在還打不開——會老實講,不會假裝成功。

合約、證件掃描、報稅單,剛好是最想清掉中繼資料、也最不想送到不認識伺服器的檔。這頁是靜態檔,背後沒有 API:PDF 用 File API 在本機打開,JavaScript 在分頁裡處理,清好的 bytes 是瀏覽器自己生的下載。把網路關掉也照樣能用。

常見問題

我的 PDF 會被上傳嗎?

不會。檔案用 File API 在本機打開,在這個分頁裡解析,清好的 PDF 是瀏覽器用記憶體裡的 bytes 生出來的下載。這頁背後沒有 API,連個可以上傳的地方都不存在。對你真正想清的那些 PDF——合約、證件、報稅單——這件事就是這頁存在的理由。

Info dictionary 跟 XMP 差在哪?

Info dictionary 是 trailer 上那八個老欄位(TitleAuthorSubjectKeywordsCreatorProducerCreationDateModDate)。XMP 是 catalog 用 /Metadata 指到的另一包 XML。寫檔的程式通常兩邊都填。清掉一份,另一份還在,所以計畫裡 Info 欄位和 XMP 是分開勾的。

PDF 有密碼的話,這工具解得開嗎?

解不開。加密的 PDF 會讓讀取丟例外,這頁會接住並直接告訴你。它不會忽略加密、不會猜密碼、也不會交出一份它根本沒讀過的「已清除」檔。解鎖是之後的工具;假裝清過一個打不開的檔,比拒絕更糟。

清掉中繼資料會把 PDF 弄壞嗎?簽名呢?

頁面內容不會動。這工具只刪 Info dict 的鍵,以及你有勾選時 catalog 上的 /Metadata stream。有數位簽章的 PDF 是另一回事——檔案的 bytes 一改,簽章就失效,任何中繼資料清除工具都一樣。還需要簽章能通過驗證,就不要清;若你要的是作者消失,那份簽章本來就把你想清掉的中繼資料一起綁住了。

要怎麼確定中繼資料真的沒了?

提供下載之前,會把輸出再載入一次,檢查清掉的欄位。若 ProducerModDate 又出現了,你看到的是錯誤而不是檔案。也可以把下載再丟回這頁,或拿到 binary diff 跟原檔逐 byte 比。解析不出來的日期會標「無法解析」並顯示原始字串,不會默默改寫。