我可以使用poppler 库轻松地从 pdf 创建图像:
pdftoppm -png myfile.pdf > myfile.png
我现在正在尝试使用python-poppler 库在 Python 中执行相同的操作。安装 lib ( sudo apt-get install python-poppler
) 后,我可以使用以下命令加载 pdf 文件:
doc = poppler.document_new_from_file('file://'+urllib(inputF), password=None)
但我现在想从二进制文件中加载一个 pdf 文件。我以为我可以使用该方法poppler.document_new_from_data()
,所以我尝试了以下方法,它返回了一个类型错误:
>>> d = poppler.document_new_from_data(userDoc.binary)
Traceback (most recent call last):
File "<input>", line 1, in <module>
TypeError: document_new_from_data() argument 1 must be string without null bytes, not Binary
我不确定这意味着什么。什么“数据”可以是“没有空字节的字符串,而不是二进制”?我尝试检查该方法的源代码,但源文件(此处)甚至不包含单个.py
文件。
我尝试将二进制文件转换为 base64,但这会导致错误提示TypeError: Required argument 'length' (pos 2) not found
。
欢迎任何帮助!
[编辑] 感谢@Vaulstein 的提示,我现在更进一步:
s = binascii.a2b_base64(userDoc.binary)
r = poppler.document_new_from_data(s, len(s), password='')Syntax Warning: May not be a PDF file (continuing anyway)
Syntax Error (3): Illegal character <75> in hex string
Syntax Error (4): Illegal character <df> in hex string
Syntax Error (5): Illegal character <5d> in hex string
Syntax Error (6): Illegal character <28> in hex string
Syntax Error (7): Illegal character <6e> in hex string
Syntax Error (8): Illegal character <3f> in hex string
Syntax Error (9): Illegal character <ca> in hex string
Syntax Error (10): Illegal character <89> in hex string
Syntax Error (11): Illegal character <db> in hex string
>>> r = poppler.document_new_from_data(s, len(s), password='')
Traceback (most recent call last):
File "<input>", line 1, in <module>
GError: PDF document is damaged
但它似乎仍然不是正确的编码。还有其他想法我该怎么做吗?