pdfparser от pdfminer: PDFException: PDFDocument не инициализирован - PullRequest
0 голосов
/ 08 февраля 2019

Я не понимаю эту ошибку.Я хочу открыть PDF и перебрать страницы, но я получаю это исключение, и я не могу найти много, погугливая его.

Вот пример, который терпит неудачу

from pdfminer.pdfparser import PDFParser, PDFDocument
from os.path import basename, splitext

file = 'tmpfiles/tmpfile.pdf'
filename = splitext(basename(file))[0]
fp = open(file, 'rb')
parser = PDFParser(fp)
doc = PDFDocument(parser)
num_page = 0
text = ""
pages = doc.get_pages()
for p in pages:
    print("do whatever")

Вот трассировка

Traceback (most recent call last):
  File "test.py", line 20, in <module>
    for p in pages:
  File "/home/.../anaconda3/lib/python3.6/site-packages/pdfminer/pdfparser.py", line 544, in get_pages
    raise PDFException('PDFDocument is not initialized')
pdfminer.pdftypes.PDFException: PDFDocument is not initialized

У меня есть Python 3.6

Перед этим я сохраняю pdf-файл следующим образом, потому что у меня есть содержимое в кодированной строке base64

decoded = base64.b64decode(content_string)
with open(tmpfiles_path+'tmpfile.pdf', 'wb') as fout:
     fout.write(decoded)

Может быть, файл сохраняется с какой-то защитой?

1 Ответ

0 голосов
/ 08 февраля 2019

Проблема была в версии pdfminer, которую я использовал.Установив pdfminer.six и изменив код таким образом

from pdfminer.pdfpage import PDFPage

file = 'tmpfiles/tmpfile.pdf'
fp = open(file, 'rb')
pages = PDFPage.get_pages(fp)
for p in pages:
    print("do whatever")

Теперь все работает.

...