在Python中使用PyPDF2编写PDF以密码保护PDF时出现问题



这是代码

import PyPDF2,os
output = PyPDF2.PdfFileWriter()
input_stream = PyPDF2.PdfFileReader(open("/root/Desktop/temp_dir/Mr praveen.pdf", "rb"))
for i in range(0, input_stream.getNumPages()):
output.addPage(input_stream.getPage(i))
outputstream = open("/root/Desktop/name.pdf", "wb")
output.encrypt("mani", use_128bit=True)
output.write(outputstream)
outputStream.close()

运行此代码时,我收到错误

提高utils。PdfReadError("在字节%s的流后找不到"endstream"标记。"%utils.hexStr(stream.tell((((PyPDF2.utils.PdfReadError:在字节0xa721的流之后找不到"endstream"标记。请帮帮我。

pypdf在2022年得到了巨大的改进。请更新您的代码(请参阅迁移指南(,然后重试。

问题是您使用的PDF不符合标准。我们添加了许多健壮性修复程序,以便pypdf可以处理不兼容的PDF文档,但最好只修复PDF。

修复损坏的PDF文档

MuPDF的多工具可以修复损坏的PDF文档:

mutool clean -d input.pdf output.pdf

最新更新