PDF到IMG到PDF都在内存中完成

时间:2018-06-12 05:28:04

标签: python pdf in-memory

为了从PDF中删除敏感内容,我将其转换为图像并再次转换为PDF。

我可以在保存jpeg图像时执行此操作,但是我最终会调整我的代码,以便文件始终在内存中。内存中的PDF - > JPEG在内存中 - > PDF在记忆中。我在中间步骤方面遇到了麻烦。

from pdf2image import convert_from_path, convert_from_bytes
import img2pdf

images = convert_from_path('testing.pdf', fmt='jpeg')
image = images[0]

# opening from filename
with open("output/output.pdf","wb") as f:
    f.write(img2pdf.convert(image.tobytes())) 

在最后一行,我收到错误:

ImageOpenError: cannot read input image (not jpeg2000). PIL: error reading image: cannot identify image file <_io.BytesIO object at 0x1040cc8f0>

我不确定如何将此图片转换为img2pdf正在寻找的字符串。

1 个答案:

答案 0 :(得分:1)

pdf2image模块将图像提取为枕头图像。并根据枕头tobytes() documention:“此方法从内部存储器返回原始图像数据。”这是一些位图表示。

要使代码正常工作,请使用BytesIO模块,如下所示:

# opening from filename
import io
with open("output/output.pdf","wb") as f, io.BytesIO() as output:
    image.save(output, format='jpg')
    f.write(img2pdf.convert(output.getvalue()))