在处理 PDF 文件时,您可能会遇到加密的文档。这意味着在输入正确的密码之前,您无法查看或编辑内容。了解如何检查 PDF 是否加密以及如何确定正确的密码,对于访问敏感文件内容至关重要。在这篇文章中,我们将介绍如何使用 Python 及 Spire.PDF for Python 库来实现这些功能。
安装 Spire.PDF for Python
本教程需要用到 Spire.PDF for Python 和 plum-dispatch v1.7.4。可以通过以下 pip 命令将它们轻松安装到 Windows 中。
pip install Spire.PDF
如果您不清楚如何安装,请参考此教程: 如何在 Windows 中安装 Spire.PDF for Python
Python 判断 PDF 是否加密
Spire.PDF for Python 提供了 PdfDocument.IsPasswordProtected(fileName: str) 方法,用于判断 PDF 文件是否加密。具体步骤如下:
- 指定输入和输出文件路径。
- 使用 PdfDocument.IsPasswordProtected() 方法判断 PDF 是否加密。
- 将判断结果保存到文本文件中。
- Python
from spire.pdf import *
# 指定输入和输出文件路径
inputFile = "示例文档.pdf"
outputFile = "加密状态检查结果.txt"
# 检查 PDF 是否加密
isProtected = PdfDocument.IsPasswordProtected(inputFile)
# 将结果写入文本文件
with open(outputFile, "w", encoding="utf-8") as fp:
fp.write("该PDF文件" + ("已加密!" if isProtected else "未加密!"))
Python 确定 PDF 的正确密码
Spire.PDF for Python 没有提供直接验证加密 PDF 文档的密码是否正确的方法,但开发者可以通过尝试加载 PDF 并捕获异常来实现。如果密码不正确,将抛出异常。具体步骤如下:
- 指定输入和输出文件路径。
- 使用 PdfDocument.IsPasswordProtected() 方法判断 PDF 是否加密。
- 创建一个待测试的密码列表。
- 如果文档已加密,遍历密码列表,使用 PdfDocument.LoadFromFile(filename: str, password: str) 方法加载 PDF。
- 如果未抛出异常,则表示密码正确;否则,密码不正确。
- 将结果保存到文本文件中。
- Python
from spire.pdf import *
# 指定输入和输出文件路径
inputFile = "示例文档.pdf"
outputFile = "正确密码验证结果.txt"
# 判断 PDF 是否加密
isEncrypted = PdfDocument.IsPasswordProtected(inputFile)
# 创建待测试的密码列表
passwords = ["密码123", "测试密码", "admin123", "abc"]
# 创建文本文件存储结果
with open(outputFile, "w", encoding="utf-8") as fp:
if isEncrypted:
for value in passwords:
try:
# 尝试使用当前密码加载 PDF
doc = PdfDocument()
doc.LoadFromFile(inputFile, value)
# 如果成功,说明密码正确
fp.write(f'密码 "{value}" 是正确的\n')
except SpireException:
# 如果抛出异常,说明密码不正确
fp.write(f'密码 "{value}" 不正确\n')
else:
fp.write("该PDF文档没有加密,无需验证密码\n")
申请临时 License
如果您希望删除结果文档中的评估消息,或者摆脱功能限制,请该Email地址已收到反垃圾邮件插件保护。要显示它您需要在浏览器中启用JavaScript。获取有效期 30 天的临时许可证。