用Python+PIL将多个jpg图像批量合并成一个pdf文件

老猿Python

共 1358字,需浏览 3分钟

 · 2021-08-13

一、引言

在《用Python+PIL将目录下jpg图像批量转成pdf文件》介绍了将一个目录下所有的jpg文件批量转成一对一的pdf文件的方法,但单位后来又要求将所有图片合并到一个PDF中看,在实际工作中,确实有时还需要将批量图片文件合并生成一个PDF文件,本文就简单介绍一下该方法。


二、实现方法

要将多张图片合并到一个PDF文件,还是用上文介绍的PIL库,只是不是逐一将图像文件存储为PDF文件,而是将图像文件打开后的对象实例添加到一个列表中,最后在一起存储到PDF中即可。


需要注意的是,存储是必须通过图像对象的save方法,因此将所有文件都装入后,需要从链表中将第一个文件取下作为调用save方法的对象实例,同时要从链表中删除取下的对象。


这样方法处理的PDF文件,其图像在PDF中的顺序与装载到链表中的顺序一致。


三、完整代码

下面的代码既将每个图片文件生成对应的PDF文件,同时还生成一个将所有图片都合并到一个PDF文件的合并文件:


from PIL import Imageimport os



def jpg2pdf(jpgFile): global imglist

path,fileName = jpgFile.rsplit('\\',1) preName,postName = fileName.rsplit('.',1)



img = Image.open(jpgFile) imglist.append(img) return img.save(path+"\\"+preName+'.pdf', "PDF", resolution=100.0, save_all=True)



def jpg2pdfByPath(pathName): global imglist imglist = [] imgfile = '' files = os.listdir(pathName) for f in files: if f.lower().find(".jpg")>0 :

jpg2pdf(pathName+'\\'+f) imgfile = f

imgMerge = imglist.pop(0) #取出第一个图片示例

imgMerge.save(pathName+r'\merge.pdf',"PDF", resolution=100.0, save_all=True, append_images=imglist) print("all images processed!")



jpg2pdfByPath(r'F:\temp\pic')


四、小结

本文介绍了使用Python+PIL库将多个图片合并成一个PDF文件的方法。


写博不易,敬请支持:

如果阅读本文于您有所获,敬请点赞、评论、收藏,谢谢大家的支持!



浏览 19
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报