移除PDF密码

2020-11-27  本文已影响0人  Noza_ea8f
from PyPDF2 import PdfFileReader, PdfFileWriter

# 读取文件
pdf_reader = PdfFileReader("_傅雷家书_1606477755.pdf")
# 解密
pdf_reader.decrypt("qp22")
pdf_writer = PdfFileWriter()
for page in range(pdf_reader.getNumPages()):
    pdf_writer.addPage(pdf_reader.getPage(page))

# 未加密pdf
with open("encrypted.pdf", "wb") as out:
    pdf_writer.write(out)

上面是我COPY的利用PyPDF2 移除PDF密码的一段程序;
但是当我运行之后


image.png

查了一下,网友说:
所以原因就在于:
1)这个被加密的pdf可能是从高版本的acrobot中来的,所以对应的加密算法代号为‘4’
2)然而,现有的pypdf2模块并只支持加密算法代号为‘1’或者‘2’的pdf加密文件,所以才会报这样的错。

那怎么解决这个错误呢?
我觉得吧,这都是因为pypdf2没有更新(在github上看到的讨论是这个模块快要被放弃维护了,以后打算出pypdf3),所以这才会导致这种不兼容错误吧。

所以只能通过别的途径来破解密码了,或者说pypdf2的解密能力有限,我们也可以试试用更低版本的Adobe Acrobat,看看能不能解密成功。

PyPDF3我也试过了,还是不能解决这个问题;

继续搜索,发现知乎有这样一个帖子:
https://zhuanlan.zhihu.com/p/32968668

于是我下载了qpdf
http://www.opdown.com/soft/108452.html
解压后是这样一堆

image.png

把需要转换的PDF文件aa.pdf粘到这里面

运行命令

E:\Python\移除pdf密码\qpdf-8.2.1\bin>qpdf --decrypt aa.pdf bb.pdf

得到结果

aa.pdf: invalid password

说无效的密码,那么把密码加上就行了吧,怎么输入密码呢?参考一下


image.png

再试试

E:\Python\移除pdf密码\qpdf-8.2.1\bin>qpdf --decrypt --password=qp22 aa.pdf bb.pdf

这回成功了!
顺利地得到了无密码的文件bb.pdf!!!

上一篇下一篇

猜你喜欢

热点阅读