Python从受密码保护的pd获取页数

2024-09-29 00:16:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我一直在想办法用python3从受密码保护的pdf文件中获取页数。到目前为止,我已经尝试过模块pypdf2和pdfminer2。 由于文件未解密,两者都失败。在

#!/usr/bin/python3
from PyPDF2 import PdfFileReader
pdfFile = PdfFileReader(open("document.pdf", "rb"))
print(pdfFile.numPages)

此代码将产生错误

^{pr2}$

有没有一种方法可以在不解密的情况下得到页数?在


Tags: 模块文件frombinpdfusrpython3密码保护
2条回答

以下几点对我有用:

from PyPDF2 import PdfFileReader
pdf = PdfFileReader(open('path/to/file.pdf','rb'))
pdf.decrypt(password)
print pdf.getNumPages()

我建议使用qpdf之类的命令行工具删除读保护(很容易安装,例如在Ubuntu上使用apt-get install qpdf,如果你还没有的话):

qpdf password=PASSWORD decrypt SECURED.pdf UNSECURED.pdf 然后用pdfminer打开未锁定的文件并完成您的工作。在

您可以使用pdfrw

示例

a.pdfb.pdf是相同的pdf。区别是b.pdf密码保护的pdfa.pdf是简单的pdf没有任何保护,页数为30页

>>> from pdfrw import PdfReader
>>> print len(PdfReader('b.pdf').pages)
30
>>> print len(PdfReader('a.pdf').pages)
30

要安装,请使用以下命令

^{pr2}$

详细信息PDFRW

相关问题 更多 >