我一直试图想办法用python3从密码保护的pdf中获取页数。到目前为止,我已经尝试过模块pypdf2和pdfminer2。 两者都失败了,因为文件没有被解密。
#!/usr/bin/python3
from PyPDF2 import PdfFileReader
pdfFile = PdfFileReader(open("document.pdf", "rb"))
print(pdfFile.numPages)
此代码将生成错误:
PyPDF2.utils.PdfReadError: File has not been decrypted
有没有办法在没有解密的情况下获取页数?
答案 0 :(得分:1)
您可以使用 pdfrw
示例强>,
a.pdf 和 b.pdf 是相同的pdf。差异 b.pdf 密码保护pdf 和 a.pdf 是简单的pdf 没有任何保护和没有页面是30
>>> from pdfrw import PdfReader
>>> print len(PdfReader('b.pdf').pages)
30
>>> print len(PdfReader('a.pdf').pages)
30
安装使用以下命令
pip install pdfrw
详细信息 PDFRW
答案 1 :(得分:0)
以下对我有用:
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
打开解锁文件并执行操作。