用Python+PIL將多個(gè)jpg圖像批量合并成一個(gè)pdf文件

一、引言
在《用Python+PIL將目錄下jpg圖像批量轉(zhuǎn)成pdf文件》介紹了將一個(gè)目錄下所有的jpg文件批量轉(zhuǎn)成一對(duì)一的pdf文件的方法,但單位后來(lái)又要求將所有圖片合并到一個(gè)PDF中看,在實(shí)際工作中,確實(shí)有時(shí)還需要將批量圖片文件合并生成一個(gè)PDF文件,本文就簡(jiǎn)單介紹一下該方法。
二、實(shí)現(xiàn)方法
要將多張圖片合并到一個(gè)PDF文件,還是用上文介紹的PIL庫(kù),只是不是逐一將圖像文件存儲(chǔ)為PDF文件,而是將圖像文件打開(kāi)后的對(duì)象實(shí)例添加到一個(gè)列表中,最后在一起存儲(chǔ)到PDF中即可。
需要注意的是,存儲(chǔ)是必須通過(guò)圖像對(duì)象的save方法,因此將所有文件都裝入后,需要從鏈表中將第一個(gè)文件取下作為調(diào)用save方法的對(duì)象實(shí)例,同時(shí)要從鏈表中刪除取下的對(duì)象。
這樣方法處理的PDF文件,其圖像在PDF中的順序與裝載到鏈表中的順序一致。
三、完整代碼
下面的代碼既將每個(gè)圖片文件生成對(duì)應(yīng)的PDF文件,同時(shí)還生成一個(gè)將所有圖片都合并到一個(gè)PDF文件的合并文件:
from PIL import Imageimport osdef jpg2pdf(jpgFile):global imglistpath,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 imglistimglist = []imgfile = ''files = os.listdir(pathName)for f in files:if f.lower().find(".jpg")>0 :jpg2pdf(pathName+'\\'+f)imgfile = fimgMerge = imglist.pop(0) #取出第一個(gè)圖片示例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')
四、小結(jié)
本文介紹了使用Python+PIL庫(kù)將多個(gè)圖片合并成一個(gè)PDF文件的方法。
寫博不易,敬請(qǐng)支持:
如果閱讀本文于您有所獲,敬請(qǐng)點(diǎn)贊、評(píng)論、收藏,謝謝大家的支持!
評(píng)論
圖片
表情
