目录
  1. 1. 效果
  2. 2. 源码
  3. 3. 封装
python实现照片批量转pdf

使用python实现调用Tkinter窗口选择照片文件,并将选中的照片转换成PDF格式,文件将根据照片数量输出单个的PDF文件;

效果

示例

源码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
from tkinter import filedialog
import tkinter as tk
from reportlab.lib.pagesizes import portrait
from reportlab.pdfgen import canvas
from PIL import Image
import os

# 创建Tkinter应用程序主窗口
root = tk.Tk()
root.title("照片转PDF")
root.geometry('400x300+{}+{}'.format(int((root.winfo_screenwidth() - 400) / 2), int((root.winfo_screenheight() - 300) / 2)))
# 版权声明标签
copyright_label = tk.Label(root, text="© 2023 嗜血星空earth", font=("微软雅黑", 8))
copyright_label.place(relx=0.5, rely=1, anchor='s')

# 说明标签
explain_label = tk.Label(root, text="说明:本程序用于将多张照片转换为单个PDF文件。选择一个或多个照片文件后,程序将自动创建同样数量的PDF文件。", font=("微软雅黑", 10), wraplength=350)
explain_label.pack(pady=20)


# 创建选择文件按钮和标签
file_label = tk.Label(root, text="未选择任何文件。")
file_label.pack(pady=(10, 0))
def select_file():
# 弹出文件选择对话框
file_paths = filedialog.askopenfilenames(title='请选择要转换的照片文件', filetypes=[('Image files', '*.jpg;*.png')])

if file_paths:
# 显示已选择文件个数
file_label.config(text=f"已选择 {len(file_paths)} 个文件。")

# 逐一处理每个照片
for image_path in file_paths:
# 打开照片并获取其宽度和高度
image = Image.open(image_path)
width, height = image.size

# 设定PDF文件路径及文件名
path, filename_ext = os.path.splitext(image_path)
pdf_path = path + ".pdf"

# 创建PDF对象并设置页面大小
c = canvas.Canvas(pdf_path, pagesize=portrait((width, height)))

# 将照片添加到PDF页面上,并去除默认的页边距
c.setPageSize(portrait((width, height)))
c.drawImage(image_path, 0, 0, width, height)

# 保存PDF文件
c.save()

print("PDF 文件已生成。")
else:
file_label.config(text="未选择任何文件。")

# 创建按钮以触发选择文件对话框和转换操作
select_button = tk.Button(root, text="选择文件", command=select_file)
select_button.pack(pady=(10, 20))

# 运行主程序循环
root.mainloop()

封装

py文件打包成exe文件便于后期使用;

1
pyinstaller -F --noconsole --hidden-import tkinter main.py
文章作者: 嗜血星空earth
文章链接: http://sxxkearth.github.io/2023/06/15/python%E8%B0%83%E7%94%A8%E7%9A%84Tkinter%E7%AA%97%E5%8F%A3%E6%B7%BB%E5%8A%A0%E8%8F%9C%E5%8D%95%E6%A0%8F/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请附以署名及出处!

评论