用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+rmerge.pdf,"PDF", resolution=100.0, save_all=True, append_images=imglist)
    print("all images processed!")


jpg2pdfByPath(rF:	emppic)

四、小结

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

写博不易,敬请支持:

关于老猿的付费专栏

  1. 付费专栏《专门介绍基于Python的PyQt图形界面开发基础教程,对应文章目录为《 》;
  2. 付费专栏《)详细介绍moviepy音视频剪辑合成处理的类相关方法及使用相关方法进行相关剪辑合成场景的处理,对应文章目录为《》;
  3. 付费专栏《》为《》的伴生专栏,是笔者对OpenCV-Python图形图像处理学习中遇到的一些问题个人感悟的整合,相关资料基本上都是老猿反复研究的成果,有助于OpenCV-Python初学者比较深入地理解OpenCV,对应文章目录为《》

前两个专栏都适合有一定Python基础但无相关知识的小白读者学习,第三个专栏请大家结合《》的学习使用。

对于缺乏Python基础的同仁,可以通过老猿的免费专栏《》从零开始学习Python。

如果有兴趣也愿意支持老猿的读者,欢迎购买付费专栏。

老猿Python,跟老猿学Python!

☞ ░ ░

经验分享 程序员 微信小程序 职场和发展