用Python+PIL将多个jpg图像批量合并成一个pdf文件
一、引言
在《用Python+PIL将目录下jpg图像批量转成pdf文件》介绍了将一个目录下所有的jpg文件批量转成一对一的pdf文件的方法,但单位后来又要求将所有图片合并到一个PDF中看,在实际工作中,确实有时还需要将批量图片文件合并生成一个PDF文件,本文就简单介绍一下该方法。
二、实现方法
要将多张图片合并到一个PDF文件,还是用上文介绍的PIL库,只是不是逐一将图像文件存储为PDF文件,而是将图像文件打开后的对象实例添加到一个列表中,最后在一起存储到PDF中即可。
需要注意的是,存储是必须通过图像对象的save方法,因此将所有文件都装入后,需要从链表中将第一个文件取下作为调用save方法的对象实例,同时要从链表中删除取下的对象。
这样方法处理的PDF文件,其图像在PDF中的顺序与装载到链表中的顺序一致。
三、完整代码
下面的代码既将每个图片文件生成对应的PDF文件,同时还生成一个将所有图片都合并到一个PDF文件的合并文件:
from PIL import Image
import 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文件的方法。
写博不易,敬请支持:
如果阅读本文于您有所获,敬请点赞、评论、收藏,谢谢大家的支持!
评论