import PyPDF2
import os
# 获取当前目录下所有PDF文件
pdf_files = [f for f in os.listdir() if f.endswith('.pdf')]
# 如果目录下没有PDF文件
if not pdf_files:
print("当前目录下没有PDF文件。")
else:
# 显示PDF文件列表
print("请选择要加密的PDF文件:")
print("0. 加密所有PDF文件")
for idx, pdf in enumerate(pdf_files, start=1):
print(f"{idx}. {pdf}")
# 用户输入选择的编号
try:
choice = int(input("请输入文件编号: "))
if choice == 0:
# 如果选择0,则加密所有PDF文件
for pdf in pdf_files:
with open(pdf, 'rb') as input_pdf:
# 读取PDF文件
pdf_reader = PyPDF2.PdfReader(input_pdf)
# 创建一个PdfWriter对象,用于写入加密后的PDF
pdf_writer = PyPDF2.PdfWriter()
# 将原始PDF中的每一页添加到PdfWriter对象
for page_num in range(len(pdf_reader.pages)):
page = pdf_reader.pages[page_num]
pdf_writer.add_page(page)
# 设置密码
password = 'xxxxxxxxxxxx'
pdf_writer.encrypt(password)
# 生成加密后的PDF文件名
output_file_path = pdf.replace('.pdf', '_Ok.pdf')
# 创建加密后的PDF文件并保存
with open(output_file_path, 'wb') as output_pdf:
pdf_writer.write(output_pdf)
print(f"PDF {pdf} 加密成功!加密后的文件保存为 {output_file_path}")
# 删除原始未加密的PDF文件
os.remove(pdf)
print(f"原文件 {pdf} 已删除。")
elif 1 <= choice <= len(pdf_files):
# 如果选择了一个文件
selected_file = pdf_files[choice - 1]
# 打开选中的PDF文件
with open(selected_file, 'rb') as input_pdf:
# 读取PDF文件
pdf_reader = PyPDF2.PdfReader(input_pdf)
# 创建一个PdfWriter对象,用于写入加密后的PDF
pdf_writer = PyPDF2.PdfWriter()
# 将原始PDF中的每一页添加到PdfWriter对象
for page_num in range(len(pdf_reader.pages)):
page = pdf_reader.pages[page_num]
pdf_writer.add_page(page)
# 设置密码
password = 'xxxxxxxxxxxx'
pdf_writer.encrypt(password)
# 生成加密后的PDF文件名
output_file_path = selected_file.replace('.pdf', '_Ok.pdf')
# 创建加密后的PDF文件并保存
with open(output_file_path, 'wb') as output_pdf:
pdf_writer.write(output_pdf)
print(f"PDF 加密成功!加密后的文件保存为 {output_file_path}")
# 删除原始未加密的PDF文件
os.remove(selected_file)
print(f"原文件 {selected_file} 已删除。")
else:
print("选择的编号无效。")
except ValueError:
print("请输入有效的编号。")