pdf2image-convert_from_path为带有颜色的pdf返回空图像

时间:2019-12-06 13:42:20

标签: python image-processing

我有一组pdf文件,每个文件都包含一张A4纸的扫描件,尺寸不同。我想将它们转换为图像并修复传出图像的分辨率。

我要转换为jpg(不调整大小)的代码:

from pdf2image import convert_from_path

filename_in = 'myfile.pdf'
filename_out = 'myfile.jpg'

jpeg = convert_from_path( filename_in )
jpeg[0].save( filename_out , 'JPEG' )

如果我尝试转换的pdf中有任何颜色,则以上操作无效,并且传出的图像完全是白色的(尺寸非零)。这是一个已知问题,是否存在解决方案?

我正在使用Python 3.7.3。

我无法共享pdf文件,因为它们包含私人信息。

1 个答案:

答案 0 :(得分:0)

您可以尝试提取图像并纠正分辨率,而不用转换PDF。

尝试pdfreader,这是从文档中提取所有图像(内联图像和XObject)的示例代码。

from pdfreader import SimplePDFViewer, PageDoesNotExist

fd = open(you_pdf_file_name, "rb")
viewer = SimplePDFViewer(fd)

images = []
try:
    while True:
        viewer.render()
        images.extend(viewer.canvas.inline_images)
        images.extend(viewer.canvas.images.values())
        viewer.next()
except PageDoesNotExist:
    pass

然后,您可以将图像转换为PIL/Pillow对象并保存(或执行所需的任何操作)

for i, img in enumerate(images):
    img.to_Pillow().save("{}.png".format(i))