Pillow

今天找一个标准文件,结果没找到能下载的,后来折腾半天发现道客巴巴有,质量还行。

扒下来是图片文字分离的,文字坐标倒是有了,不过还在研究怎么合并到pdf上去。

这不是本文重点,重点是怎么合并图片到PDF,谷歌许多,都不太理想,最后看到说用Pillow,一试效果还不错。

Code

几个说明:

  • 最后调用save方法的_rgb对应应当是第一页的图片,所以程序循环里面有一个判断
  • 我对文件夹里面的图片进行了排序,请自行修改lambda表达式
  • img到rgb是进行了RGBA到RGB的转换
  • 注意这个代码非常吃内存,但好消息是不会崩!

搜寻过程中了解到的一些工具/库:img2pdf pgmagick ImageMagick fpdf PyPDF2

要提一下的是ImageMagick也不崩,但量大的时候命令行都显示完成了,任务管理器还是显示在占用内存。。

最后分享代码如下:

from PIL import Image
from pathlib import Path

def png_to_pdf():
    fpath = Path(r"path/to/images")
    imgs = []
    paths = [path for path in fpath.iterdir()]
    paths = sorted(paths, key=lambda p: int(p.stem.split("_")[-1]))
    for index, path in enumerate(paths):
        img: Image.Image = Image.open(str(path.resolve()))
        rgb = Image.new('RGB', img.size, (255, 255, 255))
        rgb.paste(img, mask=img.split()[3]) 
        if index == 0:
            _rgb = rgb
        else:
            imgs.append(rgb)

    pdf_path = str(Path("filename.pdf").resolve())
    _rgb.save(pdf_path, "PDF", resolution=200.0, save_all=True, append_images=imgs)

if __name__ == "__main__":
    png_to_pdf()

标签: none

添加新评论