python - 加密的 PDF 不会写入磁盘
问题描述
我有一些加密pdf的代码,出于某种原因,一旦我加密了pdf,写作就会挂起。如果我注释掉pdf_writer.encrypt(password)
没有问题并且事情写得正确。我试过以最高权限运行脚本并修改文件夹选项,但也许我错过了一些简单的东西。
with open(filename, 'rb') as pdf_file:
pdf_reader = PyPDF2.PdfFileReader(pdf_file)
pdf_writer = PyPDF2.PdfFileWriter()
for page_number in range(pdf_reader.numPages):
pdf_writer.addPage(pdf_reader.getPage(page_number))
pdf_writer.encrypt(password)
filename_encrypted = filename.parents[0] / f "{filename.stem}_encrypted.pdf"
with open(filename_encrypted, 'wb') as pdf_file_encrypted:
pdf_writer.write(pdf_file_encrypted)
任何帮助将不胜感激。
解决方案
我不明白为什么 PyPDF2 不能正常工作,所以我尝试了另一个名为 pikepdf 的模块,一切正常。无论如何,这实际上似乎是一个比 PyPDF2 更好的模块。
import pikepdf
filename = pathlib.Path(r"path\to\pdf\test.pdf")
password = 'password'
with Pdf.open(filename) as pdf:
filename_encrypted = filename.parents[0] / f"{filename.stem}_encrypted.pdf"
pdf.save(filename_encrypted, encryption=Encryption(user=password, owner=password))
推荐阅读
- intellij-idea - 在其他项目中实现符号是否意味着去其源代码?
- .net - 无法在 Visual Studio 2017 中禁用 IOException 中断
- excel - 如何在睡前更新图像?
- android - 将数据从firebase加载到android recyclerview
- javascript - 导入.md文件错误渲染vue模板
- php - 磅号在发送的电子邮件中显示为“」”符号,标题元标记为 charset=utf-8
- reactjs - 将 React Hook 和 redux 一起用于 React 功能组件是否不好?
- c# - C# - 从 IP 地址/DNS 名称获取操作系统
- qt - 如何在 Qt Creator IDE 中集成终端?
- csv - Highcharts:如何仅将CSV中的一个数据»类别«显示为一行