# -*- coding:utf-8 -*-
#!/usr/bin/env python
import os
from reportlab.lib.pagesizes import A4, landscape
from reportlab.pdfgen import canvas
from tkinter import *
import time
# 图片文件名称列表
IMAGEFILES = []
class pdfTk(object):
def __init__(self):
\'\'\'用于生成主界面用于填写\'\'\'
self.top = Tk()
self.sw = self.top.winfo_screenwidth()
self.sh = self.top.winfo_screenheight()
self.topw = 500
self.toph = 200
self.top.title(\'图片转pdf生成器\')
self.top.geometry("%dx%d+%d+%d" % (self.topw, self.toph, (self.sw - self.topw) / 2, (self.sh - self.toph) / 2))
self._DIRPATH = StringVar(self.top)
self.emptfmone = Frame(self.top, height=50)
self.emptfmone.pack()
self.dirfm = Frame(self.top)
self.descriptLabel = Label(self.dirfm, width=4, text=\'路径:\')
self.descriptLabel.pack(side=LEFT)
self.dirn = Entry(self.dirfm, width=50, textvariable=self._DIRPATH)
#self.dirn.bind(\'<Return>\', self.setPath)
self.dirn.pack(side=LEFT)
self.dirfm.pack()
self.emptfmtwo = Frame(self.top, height=30)
self.emptfmtwo.pack()
self.btnfm = Frame(self.top)
self.converBtn = Button(self.btnfm, width=10, text=\'生成PDF\', command=self.doneAnyThing,
activeforeground=\'white\', activebackground=\'blue\')
self.quitBtn = Button(self.btnfm, width=10, text=\'退出\', command=self.top.quit, activeforeground=\'white\',
activebackground=\'blue\')
self.converBtn.pack(side=LEFT, padx=10)
self.quitBtn.pack(side=LEFT, padx=10)
self.btnfm.pack()
def doneAnyThing(self):
self.getListImages(self._DIRPATH.get())
pdfFile = self.converPath(self._DIRPATH.get()) + self.dateStr() + ".pdf"
self.convertpdf(pdfFile)
def convertpdf(self, pdfFile):
\'\'\'多个图片合成一个pdf文件\'\'\'
(w, h) = landscape(A4) #
cv = canvas.Canvas(pdfFile, pagesize=landscape(A4))
for imagePath in IMAGEFILES:
cv.drawImage(imagePath, 0, 0, w, h)
cv.showPage()
cv.save()
def getListImages(self, dirPath):
\'\'\'读取指定文件夹下所有的JPEG图片,存入列表\'\'\'
if dirPath is None or len(dirPath) == 0:
raise ValueError(\'dirPath不能为空,该值为存放图片的具体路径文件夹!\')
if os.path.isfile(dirPath):
raise ValueError(\'dirPath不能为具体文件,该值为存放图片的具体路径文件夹!\')
if os.path.isdir(dirPath):
for imageName in os.listdir(dirPath):
if imageName.endswith(\'.jpg\') or imageName.endswith(\'.jpeg\'):
absPath = self.converPath(dirPath) + imageName
IMAGEFILES.append(absPath)
def converPath(self, dirPath):
\'\'\'用于转换路径,判断路径后是否为\\,如果有则直接输出,如果没有则添加\'\'\'
if dirPath is None or len(dirPath) == 0:
raise ValueError(\'dirPath不能为空!\')
if os.path.isfile(dirPath):
raise ValueError(\'dirPath不能为具体文件,该值为文件夹路径!\')
if not str(dirPath).endswith("\\"):
return dirPath + "\\"
return dirPath
def dateStr(self):
\'\'\'用于生成指定格式的日期,目的是为了拼接字符串\'\'\'
return time.strftime("%Y-%m-%d", time.localtime())
def main():
\'\'\'该函数主要用于生成PDF文件\'\'\'
pdfTk()
mainloop()
if __name__ == \'__main__\':
\'\'\'主函数,进行启动\'\'\'
main()
相关文章:
- 怎么把图片文件转换成PDF文件 2022-01-02
- PDF文档转换为图片、图片转成PDF 及PDF合并 2021-12-15
- PDF转换成图片 2021-12-09
- 多图片生成pdf文件 2021-12-23
- pdf图片转换成word文字 2021-12-12