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

使用Python實現(xiàn)為PDF文檔設置和移除密碼

 更新時間:2024年03月28日 08:25:43   作者:Eiceblue  
在數字化時代,文檔的安全性變得越來越重要,特別是對于包含敏感信息的PDF文件,所以本文主要來和大家介紹一下如何使用Python實現(xiàn)為PDF文檔設置和移除密碼,需要的可以參考下

在數字化時代,文檔的安全性變得越來越重要。特別是對于包含敏感信息的PDF文件,確保其不被未經授權的人員訪問或修改是至關重要的。本文將介紹如何使用Python在PDF文檔中設置密碼,以及如何移除已經設置的密碼。

首先,我們需要安裝第三方庫 Spire.PDF for Python。可以下載后手動安裝或者使用以下pip命令安裝:

pip install Spire.PDF

PDF加密基礎知識

我們可以給PDF文件設置密碼或禁止某些功能來保護PDF。加密PDF時有以下兩種類型的密碼:

打開密碼或稱用戶密碼(open password):這是訪問PDF文件所需的密碼。設置了用戶密碼后,每次打開文件時都需要輸入正確的密碼。

權限密碼(permissions password):控制對PDF文件的操作權限,例如是否允許打印、復制或編輯文檔等。

兩種密碼結合使用可以為PDF文件提供多層次的安全保護。

在Python中,我們也可以使用Spire.PDF for Python提供的 PdfDocument.Security.Encrypt(openPassword: string, permissionPassword: string, permissions: PdfPermissionsFlags, keySize: PdfEncryptionKeySize) 方法為PDF文檔設置這兩種密碼。

代碼示例如下:

Python 為PDF文檔設置密碼

from spire.pdf.common import *
from spire.pdf import *
 
# 加載PDF文件
pdf = PdfDocument()
pdf.LoadFromFile("示例文檔.pdf")
 
# 用指定密碼加密 PDF 文件, 并設置操作權限和密鑰大小
pdf.Security.Encrypt("123", "abc", PdfPermissionsFlags.Print, PdfEncryptionKeySize.Key128Bit)
 
# 保存加密的PDF文件
pdf.SaveToFile("加密PDF文檔.pdf", FileFormat.PDF)
以上代碼為PDF文檔設置了打開密碼和權限密碼,并允許打印操作和指定了一個 128 位的加密密鑰大小。Spire.PDF for Python還支持40位(Key40Bit)和256位(Key256Bit)密鑰大小。

加密的PDF文檔:

使用密碼打開后其權限限制如圖:

Python移除PDF文檔中的密碼

from spire.pdf.common import *
from spire.pdf import *
 
# 加載已加密的PDF文檔
pdf = PdfDocument()
pdf.LoadFromFile("加密PDF文檔.pdf", "123")
 
# 將打開密碼和權限密碼設置為空
pdf.Security.Encrypt(str(), str(), PdfPermissionsFlags.Default, PdfEncryptionKeySize.Key128Bit, "abc")
 
# 保存PDF文檔
pdf.SaveToFile("解除PDF密碼.pdf", FileFormat.PDF)
在這個示例中,我們先使用設置的密碼打開PDF文檔后,然后再次調用Encrypt()方法并將PDF用戶密碼和權限密碼這兩個參數設置為空,即可刪除PDF文件中的密碼。

知識補充

除了上文的內容,小編還為大家整理了一些Python實現(xiàn)PDF加密解密的方法,希望對大家有所幫助

Python實現(xiàn)PDF解密

實現(xiàn)代碼

from PyPDF2 import PdfReader #pdf的讀取方法
from PyPDF2 import PdfWriter #pdf的寫入方法
from Crypto.Cipher import AES #高加密的方法,要引入不然會報錯

def get_reader(filename, password): #讀取pdf的方法(自定義函數)
    try:
        old_file = open(filename, 'rb')
        print('解密開始...')
    except Exception as err:
        return print('文件打開失??!' + str(err))

    #如果是python2將PdfReader改為PdfFileReader
    pdf_reader = PdfReader(old_file, strict=False) #讀取pdf文件

    # 如果是python2將is_encrypted改為isEncrypted
    if pdf_reader.is_encrypted: #解密操作(以下操作是自適應,不會展示在終端中)
        if password is None:
            return print('文件被加密,需要密碼!--{}'.format(filename))
        else:
            if pdf_reader.decrypt(password) != 1:
                return print('密碼不正確!--{}'.format(filename))
    elif old_file in locals():
        old_file.close() #如果pdf文件已經在本地了就關閉
    return pdf_reader #返回讀出pdf的值
    
def deception_pdf(filename, password, decrypted_filename=None): #生成新pdf的方法(自定義函數)
    print('正在生成解密...')
    pdf_reader = get_reader(filename, password) #得到傳入的文件名,和密碼(如果密碼沒有可以不填)
    if pdf_reader is None:
        return print("無內容讀取")

    # 如果是python2將is_encrypted改為isEncrypted
    elif not pdf_reader.is_encrypted:
        return print('文件沒有被加密,無需操作')

    # 如果是python2將PdfWriter改為PdfFileWriter
    pdf_writer = PdfWriter() #寫pdf(記錄pdf內容)

    #如果是python2將append_pages_from_reader改為appendPagesFromReader
    pdf_writer.append_pages_from_reader(pdf_reader)

    if decrypted_filename is None: #創(chuàng)建解密后的pdf文件和展示文件的路徑
        decrypted_filename = "".join(filename.split('.')[:-1]) + '_' + '已解密' + '.pdf'
        print("解密文件已生成:{}".format(decrypted_filename))
    # 寫入新文件
    pdf_writer.write(open(decrypted_filename, 'wb'))

if __name__ == '__main__':
    # 逗號前面的為需要解密的pdf文件路徑,后面的''里面為密碼,如果不知道就用不填
    deception_pdf(r'E:\考研\(zhòng)301數學一\數學書\數學書\2024kaoyanmath1.pdf', '')

Python取消pdf密碼保護

實現(xiàn)代碼

# coding:utf-8
import os
import PyPDF2

def get_reader(filename, password):
    try:
        old_file = open(filename, 'rb')
    except Exception as err:
        print('文件打開失??!' + str(err))
        return None
    # 創(chuàng)建讀實例
    pdf_reader = PyPDF2.PdfReader(old_file, strict=False)
    # 解密操作
    if pdf_reader.is_encrypted:
        if password is None:
            print('%s文件被加密,需要密碼!' % filename)
            return None
        else:
            if pdf_reader.decrypt(password) != 1:
                print('%s密碼不正確!' % filename)
                return None
    if old_file in locals():
        old_file.close()
    return pdf_reader


def decrypt_pdf(filename, password, decrypted_filename=None):
    """
       將加密的文件及逆行解密,并生成一個無需密碼pdf文件
       :param filename: 原先加密的pdf文件
       :param password: 對應的密碼
       :param decrypted_filename: 解密之后的文件名
       :return:
       """
    # 生成一個Reader和Writer
    print('run  文件解密')
    pdf_reader = get_reader(filename, password)
    if pdf_reader is None:
        return
    if not pdf_reader.is_encrypted:
        print('文件沒有被加密,無需操作!')
        return
    pdf_writer = PyPDF2.PdfWriter()
    pdf_writer.append_pages_from_reader(pdf_reader)
    if decrypted_filename is None:
        decrypted_filename = "".join(filename.split('.')[:-1]) + '_' + 'decrypted' + '.pdf'
    print('文件解密完成!')
    # 寫入新文件
    pdf_writer.write(open(decrypted_filename, 'wb'))


decrypt_pdf(r'xxx.pdf', '666')

到此這篇關于使用Python實現(xiàn)為PDF文檔設置和移除密碼的文章就介紹到這了,更多相關Python PDF設置移除密碼內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

最新評論