前幾天有個朋友諮詢我這個“修電腦的”:如果要把一個內部 PDF 文件發給別人,如何脫敏?當然別人也是他的朋友,只是給他參閱下,並不是要發到公網上傳播。最簡單的辦法就是用 PDF 編輯軟件把敏感部分都擦除掉啦。然而他用的是 MacOS,這類編輯軟件基本都是收費的,他又不想為此特意花那個錢(好像找我幫忙沒有成本一樣╮(╯_╰)╭)。在遠在未來的一頓飯的壓迫下,我只能去嘗試下免費的方法了。
Preview
MacOS 的 Preview 是一個很強大的 App,可以查看圖片,甚至做一些簡單的圖片編輯工作。令人驚喜的,它也可以查看 PDF 並且做一些塗鴉。
比如有這樣一個 PDF 文件:
如果要把右側的 Adobe 標遮掉,可以打開 Show Mockup Toolbar,使用 Draw 工具進行塗抹。
但是這種方法有一個弊端,就是 PDF 被再次打開後,塗鴉可以被刪除。
一個辦法就是把 PDF 文件轉為圖片。從 Preview 的菜單 File->Export,選擇格式為 JPEG 即可。但這個辦法只能將 PDF 的第一頁輸出為圖片,無法滿足我們的要求。
Automator
無奈,去網上搜索了一番。無意間發現可以利用 MacOS 的 Automator 來達到批量轉換 PDF 所有頁到圖片。經過對 Automator、Apple Script 一番研究,較為滿意實現了以下目標:
- 將 PDF 所有頁都輸出為圖片
- 在 Finder 中集成右鍵菜單以便隨時、快速地轉換
- 這些圖片可以輸出在與 PDF 文件相同的文件夾下
首先創建一個 Quick Action 類型的 Document,然後配置其輸入為 Finder 中的 PDF 文件。這樣只有 PDF 文件,會在右鍵的 Quick Action 菜單有此服務了。接下來每個步驟介紹如下:
- Set Value of Variable:將選中的文件作為對象賦值到變量 file 上
- Run AppleScript:獲取選中文件所在文件夾
- Set Value of Variable:將該文件夾設置到變量 filefolder 上
- Get Value of Variable:將變量 file 上的文件作為下個步驟的輸入。如果沒有這一步,則 filefolder 會作為下個步驟的輸入了。
- Render PDF Pages as Images:將 PDF 文件的每一頁輸出為圖片。這一步就是我們要的批量處理。
- Move Finder Items:將上述圖片文件移動到 filefolder 變量所指向的文件夾中,也就是跟源文件相同的目錄中。因為上一步默認會把圖片存在 /private/var/folders 的某個目錄下。
然後將此 Document 保存,名稱可以取為 PDF to Images。我們可以看看具體使用辦法:
但是這個辦法還是有一個問題沒法解決——有些 PDF 文件設置了導出密碼。必須把密碼清除了,才能使用 Automator 來處理。如果不知道密碼,那就行不通了。
截圖
那還有其他什麼辦法嗎?截圖!當然,不是說手動一張一張去截屏,而是有一個 App 就叫“截圖(Jietu)”。它支持滾動截圖,而且是免費的。但是這個滾動截圖功能在某些情況會漏掉或重複截屏。也可能因為這樣,所以最新的 2.2.2 版本也沒有了這個功能。不過還好我有 2.2.1 版本的。用 Preview 打開 PDF 文件後,利用滾動截屏功能順利地截取到了所有頁面的一個長圖。沒有遺漏或重複,當然也有可能是 PDF 文件頁數比較少。好幾十頁乃至上百頁的還沒有測試過。
到這裡,總算可以交差了。然而事情並沒有結束。當我嘗試對十幾頁的長圖片用 Preview 預覽,放大時竟然無法正常顯示內容(可能由於圖片太大的緣故)。於是我又腦洞地把這張長圖轉為了 PDF。這樣的 PDF 只有一頁,這一頁的中間就是一個細長條的圖片,必須放大後才能看清。嗯,把這樣的 PDF 發出去,自然也增加了閱讀成本,這大概也可以算是脫敏的一部分吧:)
希望朋友不要忘記這一頓飯。