用Python解压缩PDF中的FlateDecode对象

时间:2018-12-04 08:50:13

标签: python python-3.x

我正在尝试以下代码来解压缩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

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