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])
