选择文件夹,然后生成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