在这篇教程中,我们将介绍如何使用 Python 编写一个批量解密 PDF 文件的工具,并创建一个图形界面(GUI),以便更轻松地操作。我们将使用 PyPDF2 库来处理 PDF 文件,并使用 Tkinter 库创建图形界面。此外,我们还将介绍如何将该脚本转换为可执行文件(.exe),并为其添加自定义图标。
1. 安装必要的库
首先,我们需要安装两个 Python 库:
- PyPDF2:用于读取和操作 PDF 文件。
- Tkinter:用于创建图形界面。
运行以下命令来安装 PyPDF2:
pip install pypdf2
Tkinter 是 Python 的标准库,通常已经包含在安装包中,因此不需要单独安装。
2. 编写批量解密 PDF 文件的 Python 脚本
以下是一个简单的 Python 脚本,能够批量解密 PDF 文件。它包括一个图形界面,允许用户选择要解密的 PDF 文件并进行批量解密。
Python 脚本:batch_pdf_decrypt_gui.py
import os
from PyPDF2 import PdfReader, PdfWriter
import tkinter as tk
from tkinter import filedialog
from tkinter import messagebox
def decrypt_pdf(input_pdf, output_pdf):
try:
# 打开PDF文件
with open(input_pdf, "rb") as infile:
reader = PdfReader(infile)
# 检查文件是否加密
if reader.is_encrypted:
reader.decrypt("") # 如果没有密码,则传递空字符串尝试去除加密
writer = PdfWriter()
# 将所有页面写入新的PDF文件
for page_num in range(len(reader.pages)):
writer.add_page(reader.pages[page_num])
# 保存解密后的PDF文件
with open(output_pdf, "wb") as outfile:
writer.write(outfile)
print(f"成功解密并保存文件: {output_pdf}")
else:
print(f"文件 {input_pdf} 没有加密")
except Exception as e:
print(f"解密文件 {input_pdf} 时出错: {e}")
def batch_decrypt_pdfs(pdf_files):
for input_pdf in pdf_files:
output_pdf = os.path.join(os.path.dirname(input_pdf), f"decrypted_{os.path.basename(input_pdf)}")
decrypt_pdf(input_pdf, output_pdf)
def select_files():
# 让用户选择一个或多个 PDF 文件
file_paths = filedialog.askopenfilenames(title="选择需要解密的PDF文件", filetypes=[("PDF files", "*.pdf")])
return file_paths
def on_decrypt_button_click():
# 获取选择的 PDF 文件
pdf_files = select_files()
if not pdf_files:
messagebox.showerror("错误", "请至少选择一个 PDF 文件!")
return
# 开始解密
try:
batch_decrypt_pdfs(pdf_files)
messagebox.showinfo("成功", "PDF 文件解密成功!")
except Exception as e:
messagebox.showerror("错误", f"解密过程中出现错误: {e}")
# 创建主窗口
root = tk.Tk()
root.title("PDF 批量解密工具")
root.geometry("400x200")
# 解密按钮
decrypt_button = tk.Button(root, text="解密选中的PDF文件", command=on_decrypt_button_click)
decrypt_button.pack(pady=50)
# 运行主循环
root.mainloop()
3. 脚本说明
decrypt_pdf:这个函数用于解密单个 PDF 文件。如果 PDF 文件被加密,它会尝试去除加密(不需要密码)。然后,它会将解密后的内容保存为新的 PDF 文件。batch_decrypt_pdfs:这个函数接受一个 PDF 文件列表,批量解密每个文件并将结果保存为新的文件。select_files:该函数允许用户通过文件对话框选择多个 PDF 文件。on_decrypt_button_click:当用户点击解密按钮时,程序会获取用户选择的文件并开始解密。- GUI:使用
Tkinter创建了一个简单的图形界面,用户可以输入密码并选择需要解密的 PDF 文件。
4. 打包 Python 脚本为可执行文件(.exe)
为了让没有 Python 环境的用户也能运行这个工具,你可以将 Python 脚本打包为一个可执行文件(.exe)。我们将使用 PyInstaller 进行打包。
4.1 安装 PyInstaller
pip install pyinstaller
4.2 打包脚本为可执行文件
在命令行中,导航到脚本所在目录,然后运行以下命令:
pyinstaller --onefile --windowed --icon=myicon.ico batch_pdf_decrypt_gui.py
--onefile:将所有文件打包成一个单独的.exe文件。--windowed:防止程序运行时弹出命令行窗口(适用于图形界面应用)。--icon=myicon.ico:指定图标文件(如果你有一个自定义图标,可以提供图标文件的路径)。
4.3 结果
执行打包命令后,PyInstaller 会生成一个 dist 文件夹,里面包含打包好的 .exe 文件。你可以将这个 .exe 文件分发给其他用户,运行时不需要 Python 环境。
5. 总结
在这篇教程中,我们:
- 使用
PyPDF2创建了一个批量解密 PDF 文件的工具。 - 使用
Tkinter创建了图形界面,方便用户选择文件并输入密码。 - 使用
PyInstaller将 Python 脚本打包为独立的.exe文件,便于在没有 Python 环境的计算机上运行。
这个工具可以帮助你轻松地解密 PDF 文件,并通过简单的图形界面进行操作。
程序和源代码打包下载地址:https://benson88.lanzn.com/i3H0D2ocadxa