Как читать эту 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)