python,多图片转换成pdf文件

匿名 (未验证) 提交于 2019-12-02 22:51:30
# -*- coding:utf-8 -*-#!/usr/bin/env pythonimport osfrom reportlab.lib.pagesizes import A4, landscapefrom reportlab.pdfgen import canvasfrom 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()
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!