python如何合并图片 python合并图片为pdf_python如何合并图片

一、引言

在《用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文件的方法。