Как читать эту PDF-форму, используя PyPDF2 в Python

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

Я пытаюсь прочитать этот PDF-файл, используя PyPDF2 или Pdfminer, но он говорит, что файл не был расшифрован в Pypdf2, а в pdfminer, он говорит, что он может распаковать этот PDF-файл. Кто-нибудь, дайте мне знать, как сделать это в среде Windows Python3. Я не могу использовать poppler, так как я не могу установить poppler в этих окнах.

1 ответ

Решение

Это ограниченный файл PDF. В большинстве случаев вы можете расшифровать файл, который не запрашивает пароль, используя PyPDF2 с пустой строкой:

from PyPDF2 import PdfFileReader

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

К сожалению, дело не в вашем файле или другом 128-bit AES уровень шифрования, который не поддерживается для PyPDF2 decrypt() метод, который будет возвращать NotImplementedError,

В качестве простого обходного пути вы можете сохранить этот файл как новый файл в Adobe Reader или аналогичный, и новый файл должен работать для вашего кода.

Кроме того, вы можете сделать это программно, используя qpdfкак обсуждалось в этом выпуске GitHub:

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)
Другие вопросы по тегам