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()