跳到正文
萌Ta小栈

PDF文件批量随机加密Python脚本

昨天有个项目需要批量为PDF文件设置不同的查看密码,还要看到对应文件加密后的密码,网上找了好久都没找到现成的软件,大部分都是统一密码批量加密。后来翻到一个软件可以实现这个需求,但是要收费99元,免费版又会在每页加上水印,就只好整个Python脚本来解决这个需求了,记一下免得存丢了。

import os
import string
import random
from PyPDF2 import PdfReader, PdfWriter

def generate_random_password(length=4):
    """生成一个指定长度为4的随机密码"""
    password_characters = string.ascii_letters + string.digits
    return ''.join(random.choice(password_characters) for _ in range(length))


def encrypt_pdfs(pdf_folder, output_folder):
    """批量加密指定文件夹中的PDF文件"""

    if not os.path.exists(output_folder):
        os.makedirs(output_folder)

    for filename in os.listdir(pdf_folder):
        if filename.endswith('.pdf'):
            pdf_reader = PdfReader(os.path.join(pdf_folder, filename))
            pdf_writer = PdfWriter()
            for page in range(len(pdf_reader.pages)):
                pdf_writer.add_page(pdf_reader.pages[page])

            # 生成随机密码
            password = generate_random_password()
            # 加密PDF
            pdf_writer.encrypt(user_password=password, owner_password='权限密码')

            # 保存加密后的PDF
            with open(os.path.join(output_folder, f"{filename}"), "wb") as out:
                pdf_writer.write(out)
                print(f"加密文件: {filename},密码: {password}")


# 使用方法
pdf_folder = 'C:\\Users\\12405\\Desktop\\cqp'  # PDF文件所在文件夹
output_folder = 'C:\\Users\\12405\\Desktop\\cqp1'  # 输出加密后的PDF文件夹
encrypt_pdfs(pdf_folder, output_folder)

权限密码在Acrobat中可直接被无视,但足够满足基本需求了。

·1,703 查看 ·173 字 · 约 1 分钟
1,703

回复

按时间排序
访
未显示?请点击刷新

还没有回复,来说两句吧。