我正在尝试以下代码来解压缩PDF中的数据
import re
import zlib
pdf = open("some_doc.pdf", "rb").read()
stream = re.compile(r'.*?FlateDecode.*?stream(.*?)endstream', re.S)
for s in stream.findall(pdf):
s = s.strip('\r\n')
try:
print(zlib.decompress(s))
print("")
except:
pass
但这显示了以下错误 文件“ D:\ pdf_flatedecode.py”,第8行,在 对于stream中的s.findall(pdf): TypeError:无法在类似字节的对象上使用字符串模式 请帮我。我无法找出问题所在。我的python版本是3.7.1
答案 0 :(得分:2)
核心问题是您以“二进制”模式打开pdf,因此必须从字节而不是从str编译正则表达式。我不确定100%是否按您的方式工作,但是请尝试以下方法:
import re
import zlib
pdf = open("some_doc.pdf", "rb").read()
stream = re.compile(b'.*?FlateDecode.*?stream(.*?)endstream', re.S)
for s in re.findall(stream,pdf):
s = s.strip(b'\r\n')
try:
print(zlib.decompress(s).decode('UTF-8'))
print("")
except:
pass