如何在python中使用PyPDF2阅读此pdf表单

时间:2018-04-13 18:07:16

标签: python pdfminer pypdf2 poppler

https://www.fda.gov/downloads/AboutFDA/ReportsManualsForms/Forms/UCM074728.pdf

我正在尝试使用PyPDF2或Pdfminer读取此pdf,但是它说文件尚未在Pypdf2和pdfminer中解密,它说它可以解压缩该pdf。有人让我知道如何在python3 windows环境中这样做。我无法使用poppler,因为我无法在此窗口中安装poppler。

1 个答案:

答案 0 :(得分:2)

这是受限制的PDF文件。在大多数情况下,您可以使用带有空字符串的PyPDF2解密不会提示您输入密码的文件:

from PyPDF2 import PdfFileReader

reader = PdfFileReader('sample.pdf')
reader.decrypt('')

不幸的是,您的文件或128-bit AES加密级别的任何其他加密级别不支持PyPDF2 decrypt()方法将返回NotImplementedError <。 / p>

作为一种简单的解决方法,您可以将此文件保存为Adobe Reader中的新文件或类似文件,新文件应该适用于您的代码。

此外,您可以使用this GitHub issue中讨论的qpdf以编程方式执行此操作:

import os, shutil, tempdir
from subprocess import check_call

    try:
        tempdir = tempfile.mkdtemp(dir=os.path.dirname(filename))
        temp_out = os.path.join(tempdir, 'qpdf_out.pdf')
        check_call(['qpdf', "--password=", '--decrypt', filename, temp_out])
        shutil.move(temp_out, filename)
        print 'File Decrypted'

    finally:
        shutil.rmtree(tempdir)