我正在使用以下代码从某些pdf表单中提取名称和值对:
from pdfminer.pdfparser import PDFParser
from pdfminer.pdfdocument import PDFDocument
from pdfminer.pdftypes import resolve1
fp = open(filename, 'rb')
parser = PDFParser(fp)
doc = PDFDocument(parser)
fields = resolve1(doc.catalog['AcroForm'])['Fields']
for i in fields:
field = resolve1(i)
name, value = field.get('T'), field.get('V')
我的问题是我提取的值像这样出来:
b'idea'
b'_cv1'
b'08'
b'\xfe\xff\x002\x000\x001\x008\x000'
b'\x80 bla bla blah bli bloh.\r\x80 Ensure the water is clear'
b"032r01u0\xec4t'341"
/'_s1'
/'no'
/'medium'
/b'S\xec'
它们是PSLiterals或字节(来自pdfminer)。 我不知道如何处理PSLiterals,字节是多种类型的,因为可以在Windows / macos或其他语言上编译字节格式。
我想以一种干净,自动化的方式将它们转换为字符串,但是现在我陷入了.decode('utf8')或.decode('latin-1')失败的困境。 名称(键)没有问题,它们可以很好地解码(如utf-8)。
现在,我将所有内容转换为字符串,并在以后使用替换,但这不是理想的解决方案。
有人可以指出我正确的方向吗?谢谢。