python批量ppt转图片,pdf转图片,word转图片脚本 您所在的位置:网站首页 图片pdf转word表格不见了 python批量ppt转图片,pdf转图片,word转图片脚本

python批量ppt转图片,pdf转图片,word转图片脚本

2023-12-14 21:33| 来源: 网络整理| 查看: 265

头像

前言

某天我们运营在编辑后台的时候说每次上传ppt,pdf,word时都要把每个文件先导出一次图片,然后一个一个上传(png用作预览,ppt,pdf,word源文件不能直接下载的),说效率太低了,问有没有办法只要上传文件就行。当时就想了想每个上传都转一次确实效率低,因为有些导出来可能有几十张图片。 最后通过GitHub和网友博客。最终把自动转图片问题解决。第一次写python脚本有错误不优雅的欢迎指出~

本文python版本3.9.5 需windows 平台,需安装Microsoft Office

脚本思路

运营人员上传ppt,pdf,word到数据库,脚本读取文件远程连接->下载到本地->转图片->上传到云存储->获取远程图片连接->存储到数据库。

连接数据库查询需要转的集合 def connectDatabase(): conn = pymysql.connect(host='127.0.0.1', user='root', password="",database ='pic',port=3306) # host=localhost #也可以写,如果127.0.0.1不能用的话# 登录数据库 cur = conn.cursor(pymysql.cursors.DictCursor) return { "conn":conn, "cur":cur } # 获取需要转的文件集合 def getUrlArr(cur): sql = 'select * from pic' # 写自己的sql语句 arr = '' try: cur.execute(sql) ex = cur.execute(sql) arr = cur.fetchmany(ex) except Exception as e: raise e finally: return arr 下载文件到本地 # 下载文件到本地 def downLoad(url): print('----url-----',url) filename='' try: suffix = os.path.basename(url).split('.')[1] filename = "miaohui."+suffix if os.path.exists(filename): # 如果文件存在 删除文件 os.remove(filename) wget.download(url,filename) except IOError: print('下载失败',url) else: print('\n') print('下载成功',url) return filename ppt转图片 # pip install pywin32 # 初始化PPT def init_powerpoint(): powerpoint = win32com.client.Dispatch('PowerPoint.Application') #comtypes.client.CreateObject("Powerpoint.Application") powerpoint.Visible = 1 return powerpoint # PPT转png def ppt2png(url,pptFileName,powerpoint): try: ppt_path = os.path.abspath(pptFileName) ppt = powerpoint.Presentations.Open(ppt_path) #保存为图片 img_path = os.path.abspath(downLoad_path + '.png') ppt.SaveAs(img_path, 18) # 17保存为jpg格式 # 关闭打开的ppt文件 ppt.Close() except IOError: print('PPT转png失败',url) else: print("PPT转png成功",url) pdf转图片 # pip install PyMuPDF # pdf转图片 def pdf2png(_url,pptFileName): imagePath = os.path.abspath(downLoad_path) try: pdfDoc = fitz.open(pptFileName) for pg in range(pdfDoc.pageCount): page = pdfDoc[pg] rotate = int(0) # 每个尺寸的缩放系数为1.3,这将为我们生成分辨率提高2.6的图像。 # 此处若是不做设置,默认图片大小为:792X612, dpi=96 zoom_x = 1.33333333 # (1.33333333-->1056x816) (2-->1584x1224) zoom_y = 1.33333333 mat = fitz.Matrix(zoom_x, zoom_y).prerotate(rotate) pix = page.get_pixmap(matrix=mat, alpha=False) if not os.path.exists(imagePath): # 判断存放图片的文件夹是否存在 os.makedirs(imagePath) # 若图片文件夹不存在就创建 pix.save(imagePath + '/' + '幻灯片%s.png' % pg) # 将图片写入指定的文件夹内 except IOError: print('pdf转png失败',_url) else: print("pdf转png成功",_url) word转图片

word转图片要先中转一次,先把word转成pdf,然后再把pdf转成图片。

# word转Pdf def word2pdf(word_file): ''' 将word文件转换成pdf文件 :param word_file: word文件 :return: ''' # 获取word格式处理对象 word = Dispatch('Word.Application') # 以Doc对象打开文件 doc_ = word.Documents.Open(word_file) # 另存为pdf文件 suffix = os.path.basename(word_file).split('.')[1] doc_.SaveAs(word_file.replace(suffix, "pdf"), FileFormat=17) print(word_file,'----转pdf成功') # 关闭doc对象 doc_.Close() # 退出word对象 word.Quit() return os.path.basename(word_file).split('.')[0]+'.pdf'

然后在调用上面的pdf2png

上传到对象存储

这里就不贴出来了,我们用的是华为云的OBS。阿里云,腾讯云等对象存储都有各自的Python版SDK,接入也很方便。

最后组在一起调用 if __name__=='__main__': connect = connectDatabase() powerpoint = init_powerpoint() downArr = getUrlArr(connect['cur']) for i in downArr: if(os.path.exists('./'+downLoad_path)): removeFileInFirstDir('./'+downLoad_path) _url = unquote(i['url']) id = i['id'] pptFileName = downLoad(_url)#下载文件 if(('.pdf' in _url) ==True): pdf2png(_url,pptFileName) elif (('.doc' in _url) ==True): _file = os.path.abspath(pptFileName) pdfNmae = word2pdf(_file) pdf2png(_url,pdfNmae) else: ppt2png(_url,pptFileName,powerpoint) #转png imgArr = uploadImg(_url) #上传图片到云存储拿到远程链接 setData(_url,id,imgArr,connect) #保存到数据库 time.sleep(2) print('\n') print('\n') connect['cur'].close() #关闭游标 connect['conn'].close() #断开数据库,释放资源 powerpoint.Quit() input("输入任意键结束")

因为是自己内部用,所以可以使用pyinstaller打包成了一个exe,提供给运营用,资料上传完运行下,便可批量自动转图片了。

#py转exe pyinstaller -c -F -i a.ico ppt_to_img.py 最后

希望本文对你有一些帮助,如有问题,欢迎指正~

python

关于Python的技术储备

在这里给大家分享一些免费的课程供大家学习,下面是课程里面的截图,扫描最下方的二维码就能全部领取,如果图片失效点击蓝色字体便可跳转哦~点这里哦

1.Python所有方向的学习路线

在这里插入图片描述

2.学习软件

工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。 在这里插入图片描述

3.学习资料

在这里插入图片描述

4.实战资料

实践是检验真理的唯一标准。这里的压缩包可以让你再闲暇之余帮你提升你的个人能力。 在这里插入图片描述

5.视频课程

在这里插入图片描述

好啦今天的分享就到这里结束了,快乐的时光总是短暂呢,想学习更多课程的小伙伴不要着急,有更多惊喜哦~在这里插入图片描述



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

      专题文章
        CopyRight 2018-2019 实验室设备网 版权所有