:::

解鎖或加密PDF檔案:Colab PDF Protector / Unlocking or Encrypting PDF Files: Colab PDF Protector

6月 02, 2025 , , 0 Comments Edit Copy Download

2025-0110-081711.png

PDF檔案的安全性加密與解除限制通常需要特別的軟體。如果我們只有手機的話,不妨來使用我開發的Colab PDF Protector,用Google Colab的腳本新增或移除PDF的安全性設定吧。

PDF file security encryption and decryption often require specialized software. If you only have a mobile phone, consider using my Colab PDF Protector, a Google Colab script designed to add or remove security settings from PDFs.


PDF的安全性設定 / PDF Security Settings

2025-0110-073045.png

PDF (Portable Document Format) 檔案的保全設定,主要目的是為了保護檔案內容不被未經授權的存取、編輯或列印。你可以透過設定密碼來限制開啟檔案,或者設定權限密碼來限制使用者複製、列印等操作。這些保護措施可以保護檔案在傳輸和分享時,避免遭受未經授權的取用。

2025-0110-073023.png

設定 PDF 安全性的方式,通常會區分為「開啟密碼」和「權限密碼」。「開啟密碼」是指當使用者嘗試打開 PDF 檔案時,必須輸入正確的密碼才能檢視內容;而「權限密碼」則是用來限制使用者對檔案的操作,例如是否允許複製文字、列印或編輯。透過這兩層密碼的設定,你可以更精細地控制檔案的授權條款。此外,有些 PDF 軟體還允許你設定數位憑證(digital certificate)來保護檔案,以此確保檔案的來源的可靠程度。

PDF命令列編輯工具:qpdf / PDF command line editing tool: qpdf

2025-0110-073146.png

https://github.com/qpdf/qpdf 

PDF安全性管理通常都得仰賴專門的PDF工具,例如Adobe Acrobat Pro或是X-Change PDF Editor。在Linux作業系統裡,我們通常是使用qpdf來處理PDF檔案。qpdf 是一款功能強大的命令列工具和 C++ 函式庫,專門用於對 PDF 檔案進行內容保留的轉換。它不僅可以執行 PDF 檔案的線性化(linearization,也稱為網路最佳化或快速網路檢視),還支援加密和解密 PDF 檔案,這包括了「開啟密碼」和「權限密碼」的設置。

舉例來說,我們可以用以下指令來為PDF加上開啟密碼「qazwsx」:

qpdf --encrypt qazwsx qazwsx 256 -- <input.pdf> <output.pdf>

如果我們要加上權限密碼「qazwsx」,讓PDF禁止列印與複製的話,指令如下:

qpdf --encrypt "" qazwsx 256 -extract=n -modify=none -annotate=n -- <input.pdf> <output.pdf>

當然,qpdf也能夠解除開啟密碼,不過你需要輸入明確的密碼本身,例如「qazwsx」。使用qpdf解除開啟密碼的指令如下:

qpdf --password=qazwsx --decrypt -- <input.pdf> <output.pdf>

qpdf能在多個平台運作,但是這也包括基於Linux作業系統運作的Google Colab。所以我們就可以在Colab安裝並使用qpdf,以此來為PDF檔案加密或解密。


Colab PDF Protector / Colab PDF Protector

BLOG_colab_PDF_Protector-crop.png

我把qpdf包裝成Colab腳本並開發了Colab PDF Protector。你可以上傳待處理的 PDF 檔案、設定密碼、選擇要加密還是解密,這個工具會嘗試增加或移除 PDF 的保護限制,並輸出一個處理後的 PDF 檔案。

必須注意的是,此工具必須要你知道密碼才能使用。它不能拿來做猜測密碼的破解工具喔。

https://colab.research.google.com/github/pulipulichen/Colab-PDF-Protector/blob/main/Colab_PDF_Protector.ipynb

https://colab.research.google.com/github/pulipulichen/Colab-PDF-Protector/blob/main/Colab_PDF_Protector.ipynb 

整個操作主要都在Google Colab上進行。這次我們就用手機來操作,看看如何移除PDF檔案上的密碼吧。


範例檔案 / Sample files

https://pulipulichen.github.io/Colab-PDF-Protector/example%20file/2023.02.12%20%E6%A8%A1%E5%9E%8B%E6%9E%B6%E6%A7%8B%E5%9C%96+FSB%E9%97%9C%E9%8D%B5%E5%AD%97%E6%8A%BD%E5%8F%96%20b.pdf

https://pulipulichen.github.io/Colab-PDF-Protector/example%20file/2023.02.12%20%E6%A8%A1%E5%9E%8B%E6%9E%B6%E6%A7%8B%E5%9C%96+FSB%E9%97%9C%E9%8D%B5%E5%AD%97%E6%8A%BD%E5%8F%96%20b.pdf

這是一個已經加上開啟密碼的PDF檔案。檔案名稱故意加上了中文跟空格,以此確保這種非英文的檔案名稱也能正常處理。

該檔案的相關密碼如下:

  • 開啟密碼:open_password
  • 編輯密碼:edit_password

Screenshot_20250109_215137_Xodo.png

就算是在手機中,也得要輸入密碼才能開啟。在Colab腳本中,這兩個皆是對應的預設密碼。

必須注意的是,開啟密碼跟編輯密碼一樣的時候,只有開啟密碼能夠生效。兩者密碼不一樣的時候,才能讓開啟密碼跟編輯密碼都生效。


用手機操作Colab PDF Protector / Use Colab PDF Protector with your mobile phone

接下來就請拿出手機,讓我們在手機上面操作Colab看看吧。

Step 1. 開啟Colab / Open Colab

Screenshot_20250109_220358_Chrome.png

https://colab.research.google.com/github/pulipulichen/Colab-PDF-Protector/blob/main/Colab_PDF_Protector.ipynb

首先,請用手機開啟Colab PDF Protector。等到上方紅圈的部分出現了RAM跟Disk,就表示Colab已經準備好了,可以進行下一步操作。

Step 2. 上傳待處理的PDF檔案 / Pending PDF Upload

Screenshot_20250109_220432_Chrome.png

開啟左上角的選單。

Screenshot_20250109_220458_Chrome.png

開啟「Show file browser」檔案瀏覽器。

Screenshot_20250109_220554_Chrome.png

等待「sample_data」資料夾出現,表示檔案瀏覽器已經準備好了。接下來請按下上傳按鈕。在手機上選擇你要處理的PDF檔案來上傳。

Screenshot_20250109_220614_Chrome.png

第一次上傳的時候會出現警告訊息。這個訊息是告訴你,這個檔案只是暫時存放在你帳號底下的虛擬機器裡面,不會長期保存。當然,其他人也無法看到你上傳的檔案。在Colab上的檔案會在不使用後一段時間自動刪除,處理完之後請記得把它下載你的電腦保存喔。確認後按「OK」繼續。

Screenshot_20250109_220659_Chrome.png

確認你要處理的檔案已經上傳之後,按下「X」關閉選單。

Step 3. 設定密碼與動作 / Set Passwords and Action

Screenshot_20250109_220722_Chrome.png

回到Colab筆記本。接下來我們要設定 OPEN_PASSWORD 開啟密碼跟 EDIT_PASSWORD 編輯密碼,然後將 PDF_ACTION  處理動作設為「Decrypt」解密。

Step 4. 執行腳本 / Run Scripts

Screenshot_20250109_220733_Chrome.png

準備好之後,開啟選單。

Screenshot_20250109_220758_Chrome.png

依序選擇「Runtime」執行階段跟「Run all」執行所有指令。

Screenshot_20250109_220806_Chrome.png

第一次執行的時候會出現警告訊息。因為這是我在GitHub上的筆記本,可能會有不安全的腳本。你可以確認下面程式碼的內容,如果沒有問題,則按下「Run anyway」繼續執行。

Screenshot_20250109_220838_Chrome.png

如果看到筆記本下方出現了「All PDFs have been processed. Check the /content/output directory.」,那就表示已經執行完成了。如果發生錯誤,上方會出現錯誤訊息的內容。舉例來說,密碼錯誤訊息如下:

qpdf: /content/o_lock.pdf: invalid password

Step 5. 下載處理完成的PDF檔案 / Download the Processed PDF File

Screenshot_20250109_220846_Chrome.png

接下來我們要來下載處理完成的檔案。請按左上角的選單。

Screenshot_20250109_220849_Chrome.png

開啟「Show file browser」檔案瀏覽器。

Screenshot_20250109_220934_Chrome.png

在「output」底下可以找到處理完的PDF檔案。如果沒有出現的話,表示執行過程發生了錯誤。選擇你要下載的檔案,按右邊的選單圖示。

Screenshot_20250109_220943_Chrome.png

按「Download」下載。

Screenshot_20250109_221016_Xodo.png

這樣下載的PDF檔案就沒有安全性限制,可以直接開啟了。


結語 / Conclusion

2025-0110-081018.png

有了Colab,我們就算用手機也能為PDF檔案加密跟解密,真的很感謝Google推出了這麼棒的服務。

Screenshot_20250110_081202_Xodo.png

不過必須注意的是,加上編輯限制PDF檔案,在電腦裡雖然不能複製或列印,但是用Android的Xodo PDF閱讀器卻還是能夠照常複製跟加上註解。這可能是Android APP的特殊功能吧?總之,編輯限制可能沒有PDF宣稱的來得可靠就是了。

2025-0110-081435.png

如果要提高大家複製或編輯的門檻,不妨可以試試看我之前介紹過的ScanSim PDF。他可以將PDF檔案轉換成以圖片構成的PDF,使其無法被直接選取複製。雖然最後仍可以用OCR識別文字的內容,不過至少還是提升一點防護效果吧。

https://queryweb.easycard.com.tw/thsrc_web/

https://queryweb.easycard.com.tw/thsrc_web/

當初會想要做Colab PDF Protector的原因是為了處理高鐵購票證明的PDF檔案。雖然我們可以從高鐵網頁上下載證明,但證明被開啟密碼鎖定。如果要將證明傳送給其他人報帳的話,我們就需要把PDF檔案的開啟密碼移除,不然就得把密碼告訴別人才行,這樣太尷尬了。

希望這個Colab PDF Protector能夠幫助到只有手機卻想要幫PDF檔案加密或解密的你。


這篇關於Colab PDF Protector的介紹就到這裡了。文章最後要來問大家的是:你是怎麼幫PDF加密的呢?

  • 1. 使用軟體幫PDF檔案加上開啟密碼或編輯密碼。
  • 2. 將PDF檔案用帶有密碼的方式壓縮,例如7-zip。
  • 3. 印出來再掃描,這樣就不能直接選取複製了。
  • 4. 不給人看,這就是物理加密。(但可能會被檢察官搜出來!)
  • 5. 其他:歡迎在下面留言,說說你的看法吧!