文章
為什麼在 PDF 上塗黑文字常常沒有用
在一段文字上畫一個黑色矩形,看起來文字就不見了,但在大多數 PDF 編輯器裡,其實並沒有。你蓋住的文字,仍然以可選取字元的形式存在檔案裡;那個矩形只是疊在上面的一個新形狀。只要複製那一頁、搜尋它,或用別的檢視器打開它,被「遮蔽」的句子就可能重新出現。以下說明為什麼會這樣,以及一種真正會移除文字、而不是遮住文字的做法。
疊在上面的形狀,不等於刪除
PDF 頁面把兩種東西分開存放:文字物件(每一個都是帶有位置與字型的字元),以及放在頁面上的繪圖物件,包括你新增的任何矩形、螢光標記或註解。當你在 PDF 檢視器裡畫一個黑色矩形,其實是在既有文字物件上方,加了一個新的繪圖物件。頁面看起來像是被遮蔽了,因為那個矩形在視覺上蓋住了文字。但沒有任何動作告訴檔案要移除底下的文字物件,所以它們會維持在原本的位置,內容也完全不變。

原始文字是怎麼重新現身的
因為文字物件從來沒有離開過檔案,四種常見動作都可能讓它們曝光:選取並複製那一行被「塗黑」的文字、在整份文件裡執行文字搜尋、用任何 PDF 轉文字工具擷取原始文字,或用一個以不同順序渲染文字物件與繪圖物件的檢視器打開檔案。這些都不需要什麼特殊技巧。這件事已經不只一次公開發生過:曾經有 PDF 對外釋出時,敏感段落上蓋著黑色矩形,結果被發現底下其實還留著可讀、可複製的文字,這個失誤還因此上了新聞,而不是被悄悄掩蓋過去。
先把頁面轉成圖片
正確的做法,是在遮蔽之前先移除文字圖層,而不是之後才做。用像 pdf-to-image 這樣的工具,把 PDF 頁面轉成純圖片,再用 image-redact 在這張圖片的敏感區域上畫上遮蔽色塊。到了這一步,頁面上已經沒有任何文字物件,只剩下像素,所以那個色塊底下沒有任何可以復原的東西。用 image-to-pdf 把遮蔽過的圖片重新組成 PDF,先前那段敏感文字就真的不存在了,剩下的只是一張部分區域被蓋住的頁面圖片。

這樣做犧牲了什麼
把頁面點陣化,會把真正可搜尋的文字變成一張靜態圖片,所以之後任何人閱讀遮蔽過的那一頁,都無法再選取或搜尋這一頁的文字,不管有沒有被遮蔽都一樣。對你要保護的那一頁來說,這是可以接受的代價:另一種做法,也就是保留文字圖層完整無缺、指望沒有人去檢查,正是這篇文章一開始要提醒你避免的錯誤。如果同一份文件裡的其他頁面沒有任何敏感內容,可以維持原樣不動,只點陣化真正需要處理的頁面。
用實心色塊,也要檢查中繼資料
對文字來說,完全不透明的黑色或純色色塊是比較安全的做法;模糊濾鏡如果套用得很輕,有時可以對大字級、普通文字反推回去,所以它比較適合用在人臉或照片上,不太適合用在句子上。遮蔽可見的頁面內容,也不會動到檔案的中繼資料:作者名稱、軟體版本、內嵌照片上的 GPS 座標,或編輯歷史,都可能獨立於頁面內容之外外洩。如果這對你的文件很重要,分享之前先檢查一下自己檔案的中繼資料透露了什麼。
本文涉及的工具
常見問題
在 PDF 檢視器裡直接畫黑色矩形,真的會刪除底下的文字嗎?
通常不會。除非工具具備專門的遮蔽功能,會移除底層的文字物件,否則畫一個形狀只會在頁面上方新增一層。原始字元仍留在檔案裡,可以用一般工具選取、搜尋或擷取出來。
用模糊處理敏感文字,會比用色塊蓋住更安全嗎?
對文字來說,不會。輕度的模糊套用在大字級、普通文字上,有時可以被反推到足以猜出原始字元的程度,短單字或數字尤其容易。對文字而言,比較安全的做法是使用完全不透明的實心色塊,或先點陣化再徹底移除文字圖層;模糊比較適合用在人臉或一般照片內容上。
遮蔽前先把 PDF 轉成圖片,會失去什麼重要的東西嗎?
會失去在你轉換的那些頁面上選取或搜尋文字的能力,因為它們變成了純圖片。對於你正在主動遮蔽的頁面來說,這正是重點:敏感文字不再以可擷取字元的形式存在。如果只需要點陣化其中幾頁,沒有敏感內容的頁面,仍然可以維持一般的 PDF 頁面形式。