昨天有个项目需要批量为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中可直接被无视,但足够满足基本需求了。
August 07,2024 14:05:17
阅读69
撰写评论