图片转化为PDF工具

# -*- coding:utf-8 -*-

import os
from fpdf import FPDF
from gooey import Gooey, GooeyParser
import datetime


def ttime():
# 获得当前时间
now = datetime.datetime.now()
# 转换为指定的格式
otherStyleTime = now.strftime("%Y-%m-%d %H:%M:%S")
return otherStyleTime

def start_pdf(i_path, o_path, w, h, num):
t = ttime()
print(f'{t}------------开始生成PDF!')
pdf = FPDF()
pdf.set_auto_page_break(0) # 自动分页设为False
p_x = (pdf.w - w) // 2
p_y = (pdf.h - h) // 2
image_type = ['jpg', 'png', 'JPG', 'PNG']
imagelist = [i for i in os.listdir(i_path) if i.split('.')[1] in image_type]

for n, image in enumerate(sorted(imagelist)):
if num == 2 and n == 1:
pdf.image(os.path.join(i_path, image), x=p_x, y=150, w=w, h=h) # 指定宽高
else:
pdf.add_page()
if num == 2:
p_y = 0
pdf.image(os.path.join(i_path, image), x=p_x, y=p_y, w=w, h=h) # 指定宽高
pdf.output(o_path + ".pdf", "F")
name = o_path.split('\\')[-1]
tt = ttime()
print(f'{tt}------------{name}.pdf已完成!')


@Gooey(
richtext_controls=True, # 打开终端对颜色支持
program_name="图片转化PDF小工具", # 程序名称
encoding="utf-8", # 设置编码格式,打包的时候遇到问题
progress_regex=r"^progress: (\d+)%$", # 正则,用于模式化运行时进度信息
language='chinese',
)
def main():
parser = GooeyParser(description="jpg、png、JPG、 PNG")
parser.add_argument('图片目录', help="请导入目录", widget="DirChooser")
parser.add_argument('PDF目录', help="请保存PDF", widget="FileSaver")
parser.add_argument("serialNumber", metavar='图片的w', help='原图转化w=0',default='190')
parser.add_argument("serialNumber1", metavar='图片的h', help='原图转化h=0',default='100')
parser.add_argument("connect", metavar='PDF一页中图片的个数', help="请选择数量", choices=['1', '2'], default='1')
# parser.add_argument('文件输入', widget="DirChooser") # 文件选择框
# parser.add_argument('文件保存', widget="FileSaver") # 日期选择框
args = parser.parse_args() # 接收界面传递的参数
return args


def run():
r = main()
i_path, o_path, w, h, num = r.图片目录, r.PDF目录, r.serialNumber, r.serialNumber1, r.connect
start_pdf(i_path, o_path, int(w), int(h), int(num))


if __name__ == '__main__':
run()


posted @ 2021-12-29 15:11  信-^0^-  阅读(98)  评论(0)    收藏  举报