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

时间:2017-08-22 04:32:51

标签: python pdf encryption

我一直试图想办法用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

有没有办法在没有解密的情况下获取页数?

2 个答案:

答案 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打开解锁文件并执行操作。