当前位置 博文首页 > 老猿Python:用Python+PIL将多个jpg图像批量合并成一个pdf文件

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

    作者:[db:作者] 时间:2021-08-19 15:52

    一、引言

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

    写博不易,敬请支持:

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

    如对文章内容存在疑问,可在博客评论区留言,或通过扫描博客左边的二维码关注:老猿Python 微信公号发消息咨询。

    关于老猿的付费专栏

    1. 付费专栏《 使用PyQt开发图形界面Python应用》专门介绍基于Python的PyQt图形界面开发基础教程,对应文章目录为《 使用PyQt开发图形界面Python应用专栏目录》;

    2. 付费专栏《 moviepy音视频开发专栏 )详细介绍moviepy音视频剪辑合成处理的类相关方法及使用相关方法进行相关剪辑合成场景的处理,对应文章目录为《moviepy音视频开发专栏文章目录》;

    3. 付费专栏《 OpenCV-Python初学者疑难问题集》为《 OpenCV-Python图形图像处理 》的伴生专栏,是笔者对OpenCV-Python图形图像处理学习中遇到的一些问题个人感悟的整合,相关资料基本上都是老猿反复研究的成果,有助于OpenCV-Python初学者比较深入地理解OpenCV,对应文章目录为《 OpenCV-Python初学者疑难问题集专栏目录 》

    4. 付费专栏《Python爬虫入门 》站在一个互联网前端开发小白的角度介绍爬虫开发应知应会内容,包括爬虫入门的基础知识,以及爬取CSDN文章信息、博主信息、给文章点赞、评论等实战内容。

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

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

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

    老猿Python,跟老猿学Python!

    ? ? 前往老猿Python博文目录 ?

    cs