欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python實現(xiàn)PDF加密解密操作全攻略

 更新時間:2025年07月18日 08:25:24   作者:E-iceblue  
日常工作中,我們常常需要處理加密的 PDF 文件,本文我們主要來看看如何使用Python進(jìn)行PDF加密解密全攻略操作,包括判斷加密狀態(tài),驗證密碼與安全操作等,希望對大家有所幫助

日常工作中,我們常常需要處理加密的 PDF 文件。這些文件要求輸入密碼才能查看或編輯內(nèi)容,給自動化處理帶來挑戰(zhàn)。同時,我們有時也需要為 PDF 設(shè)置密碼保護敏感信息,或移除密碼以方便分享。 今天,我們來了解如何使用 Spire.PDF for Python 輕松實現(xiàn)以下操作:

  • 為 PDF 文件設(shè)置密碼保護
  • 從加密的 PDF 文件中移除密碼
  • 判斷 PDF 文件是否加密
  • 驗證并確定正確的 PDF 密碼

掌握這些技能,可以讓我們有效管理 PDF 文檔的安全性,解決加密文件帶來的訪問限制問題。

準(zhǔn)備工作

本文將要使用到的 Spire.PDF for Python 是一款功能全面的 PDF 操作庫,可以通過 Python 代碼對 PDF 中的各種元素進(jìn)行操作,如加解密操作等,不需要任何第三方工具。

如果你沒有安裝,以下有兩種方法:

  • 直接在 cmd 中使用 pip install spire.pdf 命令安裝 Spire.PDF for Python:
  • 也可以從官網(wǎng) 下載 Spire.PDF for Python 的壓縮包,解壓縮后從“lib”文件夾中獲取 .whl 文件。 然后運行以下命令安裝 Spire.PDF for Python 。
pip install G:\spire.pdf.python_9.8.1\lib\Spire.Pdf-9.8.1-py3-none-win_amd64.whl

注意:以上命令中的 G:\...\Spire.Pdf-9.8.1-py3-none-win_amd64.whl需要替換成你的實際路徑。

如果在安裝中遇到了問題,可以前往官方詳細(xì)的 安裝指南 獲取幫助。

Python 對 PDF 文檔進(jìn)行密碼保護

當(dāng)我們需要限制對 PDF 文件的訪問權(quán)限時,例如保護公司機密報告或客戶合同,為 PDF 設(shè)置密碼是最直接有效的方法。

對于 PDF,有兩種用于安全目的的密碼類型可供選擇: "打開密碼" 和 "權(quán)限密碼"。

  • 打開密碼,也稱為用戶密碼,用于限制未經(jīng)授權(quán)訪問 PDF 文件。
  • 權(quán)限密碼,也被稱為主密碼或所有者密碼,允許你對其他人能夠在 PDF 文件中執(zhí)行的操作設(shè)置各種限制。

如果一個 PDF 文件同時使用這兩種密碼進(jìn)行保護,那么可以使用任意一種密碼來打開該文件。

Spire.PDF for Python 提供了一個 PdfDocument.Security.Encrypt() 方法,讓我們可以使用打開密碼和(或)權(quán)限密碼來保護 PDF 文件。

以下是使用 Spire.PDF for Python 實現(xiàn) PDF 密碼保護的步驟:

  • 創(chuàng)建一個 PdfDocument 對象。
  • 使用 PdfDocument.LoadFromFile() 方法加載要加密的示例 PDF 文檔。
  • 使用 PdfDocument.Security.Encrypt(String openPassword, String permissionPassword, PdfPermissionsFlags permissions, PdfEncryptionKeySize keySize) 方法來對 PDF 文件進(jìn)行加密,以設(shè)置打開密碼和權(quán)限密碼。
  • 使用 PdfDocument.SaveToFile() 方法將結(jié)果保存為文件。   

注:PdfDocument.Security.Encrypt() 方法,其中 PdfPermissionsFlags 參數(shù)用于指定用戶對文檔的操作權(quán)限。

from spire.pdf import *

# 創(chuàng)建一個 PdfDocument 對象
doc = PdfDocument()

# 從指定路徑加載示例 PDF 文件
doc.LoadFromFile("某公司數(shù)據(jù)報告.pdf")

# 使用打開密碼 ("openPsd")、權(quán)限密碼 ("permissionPsd") 和允許打印權(quán)限對 PDF 文件進(jìn)行加密
doc.Security.Encrypt("openPsd", "permissionPsd", PdfPermissionsFlags.Print,
                     PdfEncryptionKeySize.Key128Bit)

# 將加密后的 PDF 文件保存到指定的文件路徑
doc.SaveToFile("加密文檔.pdf", FileFormat.PDF)

# 關(guān)閉文檔
doc.Close()

(加密后的文件打開的輸入界面)

Python 從加密的 PDF 文檔中移除密碼

當(dāng)你擁有加密 PDF 的密碼,但需要移除密碼以方便文件共享或批量處理時(例如解除對歸檔文檔的訪問限制),通過再次調(diào)用 PdfDocument.Security.Encrypt() 方法,并將打開密碼和權(quán)限密碼設(shè)置為空字符串,即可解除 PDF 文件的密碼保護。

以下是關(guān)鍵步驟:

  • 創(chuàng)建一個 PdfDocument 對象。
  • 使用 PdfDocument.LoadFromFile(String fileName, String password) 方法加載加密- 的 PDF 文檔。
  • 使用 PdfSecurity.Encrypt(String openPassword, String permissionPassword, PdfPermissionsFlags permissions, PdfEncryptionKeySize keySize, String originalPermissionPassword) 方法,通過將打開密碼和權(quán)限密碼設(shè)為空字符串來解密PDF文件。
  • 使用 PdfDocument.SaveToFile() 方法保存結(jié)果文件。
from spire.pdf import *

# 創(chuàng)建一個 PdfDocument 對象
doc = PdfDocument()

# 使用 "openPsd" 打開密碼加載加密的 PDF 文件
doc.LoadFromFile("加密文檔.pdf", "openPsd")

# 通過將打開密碼和權(quán)限密碼設(shè)為空字符串
doc.Security.Encrypt(str(), str(), PdfPermissionsFlags.Default, PdfEncryptionKeySize.Key128Bit, "permissionPsd")

# 將移除密碼后的 PDF 文件保存到指定的文件路徑
doc.SaveToFile("移除密碼.pdf", FileFormat.PDF)

# 關(guān)閉文檔
doc.Close()

(解密前后的PDF文件)

Python 判斷 PDF 是否加密

在批量處理大量 PDF 文件時,你可能需要先篩選出加密的文件進(jìn)行特殊處理(例如集中解密)。手動檢查每個文件是否加密效率低下且容易出錯。

Spire.PDF for Python 提供了 PdfDocument.IsPasswordProtected(fileName: str) 靜態(tài)方法,只需傳入文件路徑即可快速判斷 PDF 是否加密。

關(guān)鍵步驟如下:

  • 指定輸入和輸出文件路徑。
  • 使用 PdfDocument.IsPasswordProtected() 方法判斷 PDF 是否加密。
  • 將判斷結(jié)果用 Python 標(biāo)準(zhǔn)庫 tkinter 以彈窗提示。
from spire.pdf import *

import tkinter as tk
from tkinter import messagebox

# 指定輸入和輸出文件路徑
inputFile = "加密文檔.pdf"

# 檢查 PDF 是否加密
isProtected = PdfDocument.IsPasswordProtected(inputFile)

# 初始化主窗口(隱藏)
root = tk.Tk()

# 隱藏主窗口
root.withdraw()

# 將結(jié)果以提示框形式顯示
messagebox.showinfo("結(jié)果", "該PDF文件" + ("已加密!" if isProtected else "未加密!"))

(運行程序彈出已加密提示)

Python 確定 PDF 的正確密碼

如果你擁有一個加密的 PDF 文件和一些可能的密碼,但不確定哪個密碼是正確的,手動逐一測試非常耗時。 雖然 Spire.PDF 沒有提供直接驗證密碼的方法,但可以通過嘗試使用密碼加載 PDF 文件并捕獲異常的方式間接驗證。如果密碼正確,加載成功;否則會拋出異常。

關(guān)鍵步驟如下:

  • 指定輸入和輸出文件路徑。
  • 使用 PdfDocument.IsPasswordProtected() 方法判斷 PDF 是否加密。
  • 創(chuàng)建一個待測試的密碼列表。
  • 如果文檔已加密,遍歷密碼列表,使用 PdfDocument.LoadFromFile(filename: str, password: str) 方法加載 PDF。
  • 如果未拋出異常,則表示密碼正確;否則,密碼不正確。
  • 將結(jié)果用 Python 標(biāo)準(zhǔn)庫 tkinter 以彈窗提示。
from spire.pdf import *

import tkinter as tk
from tkinter import messagebox

# 指定輸入和輸出文件路徑
inputFile = "加密文檔.pdf"

# 判斷 PDF 是否加密
isEncrypted = PdfDocument.IsPasswordProtected(inputFile)

# 創(chuàng)建待測試的密碼列表
passwords = ["密碼a", "密碼b", "openPsd", "密碼c"]

# 初始化主窗口(隱藏)
root = tk.Tk()

# 隱藏主窗口
root.withdraw()

# 遍歷密碼列表
if isEncrypted:
    for value in passwords:
        try:
            # 嘗試使用當(dāng)前密碼加載 PDF
            doc = PdfDocument()
            doc.LoadFromFile(inputFile, value)
            # 如果成功,說明密碼正確
            messagebox.showinfo("正確", f"密碼 {value} 正確!")
            break
        except SpireException:
            # 如果拋出異常,說明密碼不正確
            messagebox.showerror("錯誤", f"密碼 {value} 是錯誤的!")
else:
    messagebox.showwarning("警告", "該PDF文檔沒有加密,無需驗證密碼!")

(運行程序彈出正確密碼提示)

結(jié)語

通過本文介紹的四種方法,我們可以輕松應(yīng)對各種 PDF 加密相關(guān)需求:

  • 密碼保護:有效控制 PDF 文件的訪問和操作權(quán)限
  • 密碼移除:解除訪問限制,方便文件共享
  • 加密狀態(tài)判斷:快速篩選加密文件進(jìn)行批量處理
  • 密碼驗證:自動嘗試多個密碼,快速找到正確密碼

當(dāng)我們將這些方法集成到自動化工作流中,加密 PDF 文件的管理效率將會大幅提升,我們也得以從繁瑣而不可控的手工操作中解放出來,專注于核心業(yè)務(wù)邏輯。

到此這篇關(guān)于Python實現(xiàn)PDF加密解密操作全攻略的文章就介紹到這了,更多相關(guān)Python PDF加密解密內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • pd.DataFrame統(tǒng)計各列數(shù)值多少的實例

    pd.DataFrame統(tǒng)計各列數(shù)值多少的實例

    今天小編就為大家分享一篇pd.DataFrame統(tǒng)計各列數(shù)值多少的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • Python3 pickle模塊的使用方法詳細(xì)介紹

    Python3 pickle模塊的使用方法詳細(xì)介紹

    pickle提供了一個簡單的持久化功能。可以將對象以文件的形式存放在磁盤上,pickle序列化后的數(shù)據(jù),可讀性差,人一般無法識別,本文詳細(xì)介紹了pickle模塊的使用方法
    2021-10-10
  • 關(guān)于Pandas的Series創(chuàng)建方式和常用屬性

    關(guān)于Pandas的Series創(chuàng)建方式和常用屬性

    這篇文章主要介紹了關(guān)于Pandas的Series創(chuàng)建方式和常用屬性,Series 數(shù)據(jù)結(jié)構(gòu)是用于儲存一個序列的一維數(shù)組,DataFrame 數(shù)據(jù)結(jié)構(gòu)是用于存儲復(fù)雜數(shù)據(jù)的二維數(shù)據(jù)結(jié)構(gòu),本文來詳細(xì)說明一下
    2023-07-07
  • QML實現(xiàn)鐘表效果

    QML實現(xiàn)鐘表效果

    這篇文章主要為大家詳細(xì)介紹了QML實現(xiàn)鐘表效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-06-06
  • Django中提供的6種緩存方式詳解

    Django中提供的6種緩存方式詳解

    這篇文章主要介紹了Django中提供的6種緩存方式詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-08-08
  • 一起來看看python的裝飾器代碼

    一起來看看python的裝飾器代碼

    這篇文章主要為大家詳細(xì)介紹了python裝飾器代碼,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-03-03
  • python輸入多行的方法總結(jié)

    python輸入多行的方法總結(jié)

    Python中的Input()函數(shù)在輸入時,遇到回車符,那么一次輸入就結(jié)束了,這不能滿足輸入多行文本并且行數(shù)也不確定的情形,當(dāng)然輸入空行也是允許的,本文給大家總結(jié)了python輸入多行的方法,需要的朋友可以參考下
    2024-04-04
  • 詳解python中的lambda與sorted函數(shù)

    詳解python中的lambda與sorted函數(shù)

    這篇文章主要介紹了python中的lambda與sorted函數(shù)的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)python,感興趣的朋友可以了解下
    2020-09-09
  • 利用python計算windows全盤文件md5值的腳本

    利用python計算windows全盤文件md5值的腳本

    這篇文章主要介紹了利用python計算windows全盤文件md5值的腳本,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-07-07
  • Python類如何定義私有變量

    Python類如何定義私有變量

    這篇文章主要介紹了Python類如何定義私有變量,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-02-02

最新評論