来自 pdfminer 的 pdfparser:PDFException:PDFDocument 未初始化
pdfparser from pdfminer: PDFException: PDFDocument is not initialized
我不明白这个错误。我想打开一个 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
我有python3.6
在执行此操作之前,我会像这样保存 pdf 文件,因为我的内容是 base64 编码的字符串
decoded = base64.b64decode(content_string)
with open(tmpfiles_path+'tmpfile.pdf', 'wb') as fout:
fout.write(decoded)
会不会是文件被保护起来了?
问题出在我使用的 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")
现在可以了。
我不明白这个错误。我想打开一个 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
我有python3.6
在执行此操作之前,我会像这样保存 pdf 文件,因为我的内容是 base64 编码的字符串
decoded = base64.b64decode(content_string)
with open(tmpfiles_path+'tmpfile.pdf', 'wb') as fout:
fout.write(decoded)
会不会是文件被保护起来了?
问题出在我使用的 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")
现在可以了。