pdf批量生成工具

本文介绍了如何使用Python将指定文件夹下的图片转换为PDF,并合并为单个文件,同时提供了一个将脚本打包成可执行文件的步骤。通过Tkinter实现用户选择文件夹功能。
摘要由CSDN通过智能技术生成

选择文件夹,然后生成pdf到指定文件夹,如果需要单独一张的,则去掉删除临时文件的方法
代码如下:

import os  
from PIL import Image  
from PyPDF2 import PdfMerger  
import tkinter as tk  
from tkinter import filedialog

def convert_images_to_pdf(image_dir):    
    # 获取指定文件夹下所有的图片文件名    
    image_files = [f for f in os.listdir(image_dir) if f.endswith(('.jpg', '.jpeg', '.png', '.bmp'))]    
        
    # 创建一个PdfFileMerger对象,用于将多个PDF文件合并为一个文件    
    merger = PdfMerger()    
        
    # 遍历所有图片文件,将每个图片转换为PDF格式,并添加到PdfFileMerger对象中  
    i=0  
    for image_file in image_files:    
        img = Image.open(os.path.join(image_dir, image_file))    
        pdf_path = os.path.splitext(image_file)[0] + ".pdf"  
          
        pdf_path =  "temp_"+str(i)+ ".pdf"
        i+=1
        #生成临时文件  
        img.save(image_dir+"/"+pdf_path, "PDF", resolution=300.0)    
        merger.append(image_dir+"/"+pdf_path)    
            
    # 将所有PDF文件合并为一个文件    
    output_pdf = os.path.join(image_dir, "output.pdf")    
    merger.write(output_pdf)  
    merger.close() # 确保所有操作都已完成  
        
    # 删除临时PDF文件  
    for i in range(len(image_files)):  
        temp_pdf = "temp_" + str(i) + ".pdf"  
        try:  
            os.remove(os.path.join(image_dir, temp_pdf))  
          #  print(f"临时文件 {temp_pdf} 已被成功删除.")  
        except OSError as e:  
            print(f"删除临时文件时出错: {e}")

def select_folder():  
    # 打开文件对话框,让用户选择一个文件夹  
    folder_path = filedialog.askdirectory()  
    if folder_path:  
        print("选中的文件夹路径是:", folder_path)
        convert_images_to_pdf(folder_path)
  
# 创建主窗口  
root = tk.Tk()  
# root.withdraw()  # 隐藏主窗口  
  
# 创建按钮  
button = tk.Button(root, text="选择文件夹", command=select_folder)  
button.pack()  
  
# 运行程序  
root.mainloop()

生成exe文件

pyinstaller --onefile --noconsole pdf生成工具.py
  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值