栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

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

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1022460.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号