Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/187.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用python解压并保存PDF格式的zlib数据_Python_Pdf_Zlib - Fatal编程技术网

用python解压并保存PDF格式的zlib数据

用python解压并保存PDF格式的zlib数据,python,pdf,zlib,Python,Pdf,Zlib,我们每天都会收到PDF文件,我们需要把图像拿出来。例如,我想做的是使用python将图像从中恢复。我们得到的大多数pdf文件都是多页的,我们希望将每个嵌入的图像导出到单独的文件中。大多数都有jpeg文件,但他的一个没有 对象5作为zlib压缩流嵌入。我很确定它是zlib压缩的,因为它被标记为FlateCode,流的开始是\x78\x9c,这是zlib的典型特征。你可以看到(部分) 问题是,如何“放气”并保存生成的文件 谢谢你分享你的智慧。我到处找,尝试了很多东西,但都没能找到工作。我设法像这样解

我们每天都会收到PDF文件,我们需要把图像拿出来。例如,我想做的是使用python将图像从中恢复。我们得到的大多数pdf文件都是多页的,我们希望将每个嵌入的图像导出到单独的文件中。大多数都有jpeg文件,但他的一个没有

对象5作为zlib压缩流嵌入。我很确定它是zlib压缩的,因为它被标记为FlateCode,流的开始是\x78\x9c,这是zlib的典型特征。你可以看到(部分)

问题是,如何“放气”并保存生成的文件


谢谢你分享你的智慧。

我到处找,尝试了很多东西,但都没能找到工作。我设法像这样解压数据:

import zlib
with open("MDL1703140088.pdf", "rb") as f:
    pdf = f.read()

image = zlib.decompress(pdf[640:69307])
640是zlib页眉(
b'x\x9c'
)位置,69307是类似pdf规范页脚的位置。
b'\nendstream\n'
在那里。详细信息见,可以找到一些有用的问答。但在这种情况下可以省略结束位置,因为它似乎忽略了以下非压缩数据。您可以通过以下方式对此进行验证:

decomp = zlib.decompressobj()
image = decomp.decompress(pdf[640:])
print(decomp.unused_data)  # starts from b'\nendstream\n
到目前为止还不错。但是,当我将
图像
写入PNG文件时,任何图像查看器都无法读取该文件。实际上,解压后的数据到处都是空的。我附加了一些PNG标题,但没有运气。嘿,太多了


正如我之前所说(奇怪的是,我的评论被人删除了),你最好使用一些其他现有的工具。如果Acrobat不是你的选择,那怎么办
pdftopng MDL1703140088.pdf。
完美地为我提供了一个有效的PNG文件。显然,您可能知道,命令行工具可以在Python中执行。

是的,我们每天都会收到几十个pdf文件,其中至少有四页。我们需要自动提取,相信我,你检查过了吗?是的,当我尝试使用wand(最简单的)时,我的整个macbook无缘无故地崩溃了。而且,我也不允许在服务器上安装额外的库,因为它将被部署到服务器上。所以,我用它来提取jpg文件,但是带有“\x78\x9c”的图像我不知道该怎么做。服务器有inkscape吗?它可以在命令行模式下运行。不,它不能,我也不能安装iet:(使用pdftopng是一个好主意。当然。但是(总是有一个但不存在;D)我不能在它将运行的服务器上添加库或工具。服务器不是我们的:(