【问题标题】:pdfparser from pdfminer: PDFException: PDFDocument is not initialized来自 pdfminer 的 pdfparser:PDFException:PDFDocument 未初始化
【发布时间】:2019-02-08 17:00:47
【问题描述】:

我不理解这个错误。我想打开一个 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)

可能是文件在保存时受到了一些保护吗?

【问题讨论】:

  • 根据文档 (media.readthedocs.org/pdf/pdfminer-docs/latest/…) 判断,2014 年似乎发生了变化,无需调用initialize,但也许您正在运行旧版本或其他什么?尝试在doc = PDFDocument(parser) 之后调用doc.initialize() 看看是否有效?
  • 我做了 doc = doc.initialize() 现在它说 NoneType 对象没有属性 get_pages。如果我只做 doc.initialize() 我会得到和以前一样的错误
  • 是的,我相信是后者——initialize 可能会初始化对象,而不是创建一个新对象。您是否尝试过使用绝对没有保护或奇怪属性作为完整性检查的 PDF?如果没有,请尝试使用 cloud.google.com/files/CloudStorage.pdf? 之类的内容运行它
  • 好吧,显然我有一个奇怪的 pdfminer 版本,因为我刚刚安装了 pdfminer.six 并更改了几行代码,现在它可以工作了。感谢您的帮助!
  • 没问题!考虑在下面将您的解决方案作为答案发布并接受它 - 您会得到一些分数,它可以帮助以后遇到此帖子的人

标签: python-3.x exception pdfminer pdfparser


【解决方案1】:

问题是我使用的 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")

现在可以了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多