Python批量转换文件夹下图片为PDF

前言

最近遇到需要批量把图片转换成pdf的需求,要求转换之后输出到对应的转化目录下,由于需要转换的图片文件非常多,这就萌生了想要写个小程序的想法。 实现思路: (1)先弹窗选择对应的文件夹路径 (2)递归选中的文件夹路径下的文件列表,如果是文件夹则递归,如果是图片格式文件,新建一个PDF文件,保存到对应的目录下

import os
import fitz
import tkinter as tk
from tkinter import filedialog

# 转换前后的目录跟文件夹
covert_path = []
# 图片后缀文件名
pic_name_list = [.jpg, .png, .bmp, .jpeg, .JPG, .PNG, .JPEG]


def get_file_path():
    """
    获取转换文件夹的跟目录,并保存目标跟目录到数组中
    """
    root = tk.Tk()
    root.withdraw()
    file_path = filedialog.askdirectory()
    covert_path.append(file_path)
    covert_path.append(file_path + "-转换结果")


def covert_img_to_pdf(file_path):
    """
    打开路径文件夹并转换文件夹下的图片为PDF文件
    """
    docunames = os.listdir(file_path)
    doc = fitz.open()
    save = False
    for docuname in docunames:
        tempPath = file_path + "\" + docuname
        if os.path.isdir(tempPath):
            covert_img_to_pdf(tempPath)
        else:
            file_suffix = os.path.splitext(docuname)[1]
            if file_suffix in pic_name_list:
                img = fitz.open(tempPath)  # 打开图片
                pdfbytes = img.convertToPDF()   # 使用图片创建单页的 PDF
                imgpdf = fitz.open("pdf", pdfbytes)
                doc.insertPDF(imgpdf)
                save = True
    if save:
        file_name = os.path.basename(file_path) + ".pdf"
        new_file_path = file_path.replace(covert_path[0], covert_path[1])
        if os.path.exists(new_file_path) == False:
            os.makedirs(new_file_path)  # 多层创建目录
        doc.save(new_file_path + "\" + file_name)


if __name__ == __main__:
    get_file_path()
    covert_img_to_pdf(covert_path[0])
经验分享 程序员 微信小程序 职场和发展