一、python的安装

python 3 10 5的安装

二、python编辑器的安装

在这里我使用的是VS code 1.62.3

三、pywin32库的安装

在CMD里面使用pip install pywin32进行安装

四、全部代码

import os, win32com.client, gc# Word
def word2Pdf(filePath, words):# 如果没有文件则提示后直接退出if(len(words)<1):print ("\n【无 Word 文件】\n")return# 开始转换print ("\n【开始 Word -> PDF 转换】")try:print ("打开 Word 进程...")word = win32com.client.Dispatch("Word.Application")word.Visible = 0word.DisplayAlerts = Falsedoc = Nonefor i in range(len(words)):print(i)fileName = words[i] # 文件名称fromFile = os.path.join(filePath, fileName) # 文件地址toFileName = changeSufix2Pdf(fileName) # 生成的文件名称toFile = toFileJoin(filePath,toFileName) # 生成的文件地址print ("转换:"+fileName+"文件中...")# 某文件出错不影响其他文件打印try:doc = word.Documents.Open(fromFile)doc.SaveAs(toFile,17) # 生成的所有 PDF 都会在 PDF 文件夹中print ("转换到:"+toFileName+"完成")except Exception as e:print(e)# 关闭 Word 进程print ("所有 Word 文件已打印完毕")print ("结束 Word 进程...\n")doc.Close()doc = Noneword.Quit()word = None except Exception as e:print(e)finally:gc.collect()# Excel
def excel2Pdf(filePath, excels):# 如果没有文件则提示后直接退出if(len(excels)<1):print ("\n【无 Excel 文件】\n")return# 开始转换print ("\n【开始 Excel -> PDF 转换】")try:print ("打开 Excel 进程中...")excel = win32com.client.Dispatch("Excel.Application")excel.Visible = 0excel.DisplayAlerts = Falsewb = Nonews = Nonefor i in range(len(excels)):print(i)fileName = excels[i] # 文件名称fromFile = os.path.join(filePath, fileName) # 文件地址print ("转换:"+fileName+"文件中...")# 某文件出错不影响其他文件打印try:wb = excel.Workbooks.Open(fromFile)for j in range(wb.Worksheets.Count): # 工作表数量,一个工作簿可能有多张工作表toFileName = addWorksheetsOrder(fileName, j+1) # 生成的文件名称toFile = toFileJoin(filePath,toFileName) # 生成的文件地址ws = wb.Worksheets(j+1) # 若为[0]则打包后会提示越界ws.ExportAsFixedFormat(0,toFile) # 每一张都需要打印print ("转换至:"+toFileName+"文件完成")except Exception as e:print(e)# 关闭 Excel 进程print ("所有 Excel 文件已打印完毕")print ("结束 Excel 进程中...\n")ws = Nonewb.Close()wb = Noneexcel.Quit()excel = Noneexcept Exception as e:print(e)finally: gc.collect()# PPT
def ppt2Pdf(filePath, ppts):# 如果没有文件则提示后直接退出if(len(ppts)<1):print ("\n【无 PPT 文件】\n")return# 开始转换print ("\n【开始 PPT -> PDF 转换】")try:print ("打开 PowerPoint 进程中...")powerpoint = win32com.client.Dispatch("PowerPoint.Application")ppt = None# 某文件出错不影响其他文件打印for i in range(len(ppts)):print(i)fileName = ppts[i] # 文件名称fromFile = os.path.join(filePath, fileName) # 文件地址toFileName = changeSufix2Pdf(fileName) # 生成的文件名称toFile = toFileJoin(filePath,toFileName) # 生成的文件地址print ("转换:"+fileName+"文件中...")try:ppt = powerpoint.Presentations.Open(fromFile,WithWindow=False)if ppt.Slides.Count>0:ppt.SaveAs(toFile, 32) # 如果为空则会跳出提示框(暂时没有找到消除办法)print ("转换至:"+toFileName+"文件完成")else:print("(错误,发生意外:此文件为空,跳过此文件)")except Exception as e:print(e)# 关闭 PPT 进程print ("所有 PPT 文件已打印完毕")print ("结束 PowerPoint 进程中...\n")ppt.Close()ppt = Nonepowerpoint.Quit()powerpoint = Noneexcept Exception as e:print(e)finally:gc.collect()# 修改后缀名
def changeSufix2Pdf(file):return file[:file.rfind('.')]+".pdf"
# 添加工作簿序号
def addWorksheetsOrder(file, i):return file[:file.rfind('.')]+"_工作表"+str(i)+".pdf"
# 转换地址
def toFileJoin(filePath,file):return os.path.join(filePath,'pdf',file[:file.rfind('.')]+".pdf")# 开始程序
print ("====================程序开始====================")
print ("【程序功能】将目标路径下内所有的 ppt、excel、word 均生成一份对应的 PDF 文件,存在新生成的 pdf 文件夹中(需已经安装office,不包括子文件夹)")
print ("注意:若某 PPT 和 Excel 文件为空,则会出错跳过此文件。若转换 PPT 时间过长,请查看是否有报错窗口等待确认,暂时无法彻底解决 PPT 的窗口问题(为空错误已解决)。在关闭进程过程中,时间可能会较长,十秒左右,请耐心等待。")
filePath = input ("输入目标路径:(若为当前路径:"+os.getcwd()+",请直接回车)\n")# 目标路径,若没有输入路径则为当前路径
if(filePath==""):filePath = os.getcwd()# 将目标文件夹所有文件归类,转换时只打开一个进程
words = []
ppts = []
excels = []for fn in os.listdir(filePath):if fn.endswith(('.doc', 'docx')):words.append(fn)if fn.endswith(('.ppt', 'pptx')):ppts.append(fn)if fn.endswith(('.xls', 'xlsx')):excels.append(fn)# 调用方法
print ("====================开始转换====================")# 新建 pdf 文件夹,所有生成的 PDF 文件都放在里面
folder = filePath + '\\pdf\\'
if not os.path.exists(folder):os.makedirs(folder)word2Pdf(filePath,words)
excel2Pdf(filePath,excels)
ppt2Pdf(filePath,ppts)
print ("====================转换结束====================")
print ("\n====================程序结束====================")
os.system("pause")

五、运行

将代码复制到python编辑器之后,运行,会弹出如下对话框


在我圈起来的地方输入需要转换的文件夹下的文件路径即可:D:\2(你自己根据实际情况来输入文件路径)
等待转换

完成

六、将其打包为可执行的.exe文件

1、首先安装pyinstaller,使用安装命令:pip3 install pyinstaller,如下图所示。

2、然后将第五步的代码制作为.py文件,并且命名(我命名为:Office2PDF.py

方法一:pyinstaller-F

我们来将这个.py的文件打包成一个exe,我们直接cmd切换到这个脚本的目录,执行命令:pyinstaller-F D:\Office2PDF.py,如下图所:

在这里介绍一下,D:\Office2PDF.py表示我要打包的文件路径,下面我圈起来的部分,表示打包为.exe路径


方法二:pyinstaller -D 打包

我们来将这个.py的文件打包成一个exe,我们直接cmd切换到这个脚本的目录,执行命令:pyinstaller -D D:\Office2PDF.py,如下图所:

在这里介绍一下,D:\Office2PDF.py表示我要打包的文件路径,下面我圈起来的部分,表示打包为.exe路径


七、程序获取

https://wws.lanzoul.com/ir6HZ07cwkah
密码的话,关注这个公众号,然后回复:提取码

利用python批量将office格式(word、PPT、Excel)转换为PDF相关推荐

  1. python word,ppt,excel转pdf(word转html),转图片

    word,ppt,excel转pdf 装依赖 pip install comtypes==1.1.10 转换 import comtypes.client import osdef ppt_pdf(p ...

  2. 【软件操作】Office将Word文档转换为PDF格式

    一.问题描述 PDF格式(Portable Document Format)相比于Word文档(.doc/.docx格式)体积更大,但具有更好的文档一致性(减少排版问题),修改更困难(不易被外界篡改) ...

  3. Python批量提取docx格式Word文档中所有批注

    封面图片:<Python程序设计基础与应用>(ISBN:9787111606178),董付国,机械工业出版社 图书详情: 用书教师可以联系董老师获取教学大纲.课件.源码.教案.考试系统等配 ...

  4. word,ppt,excel转换为html

    因为最近上班做邮箱附件的预览功能,上网找到的解决方案是转为html文件,自己总结了一下: 1.先添加office组建,右键网站,点击添加引用 2.选择.NET找到你需要的组件,例如Microsoft. ...

  5. Python批量提取docx格式Word文档中所有文本框内的文本

    功能描述: 批量提取指定Word文档(docx格式)中所有文本框中的文本. 测试文件: 参考代码: 执行结果:

  6. Unity 发布Android版,通过WPS Office打开word、excel、pdf等进行浏览

    1.确保手机端安装了Wps office. 2.下载Android Studio项目文件,地址https://download.csdn.net/download/weixin_38548431/12 ...

  7. python批量读取图片并复制入word_提取出 Word 文档里的图片 并利用 python 批量转换格式...

    日常工作中,你是否遇到过这样的场景,领导发来一份 Word 文档,要求你将文档中的图片存储到一个文件夹内,并且还要将图片都改成 .jpg 或者 .png,你会怎么办?你是不是一边内心崩溃,一边开始一张 ...

  8. 【Python】导出docx格式Word文档中的文本、图片和附件等

    [Python]导出docx格式Word文档中的文本.图片和附件等 零.需求 为批量批改学生在机房提交的实验报告,我需要对所有的实验文档内容进行处理.需要批量提取Word文档中的图片和附件以便进一步检 ...

  9. python批量生成图片_利用Python批量生成任意尺寸的图片

    实现效果 通过源图片,在当前工作目录的/img目录下生成1000张,分别从1*1到1000*1000像素的图片. 效果如下: 目录结构 实现示例 # -*- coding: utf-8 -*- imp ...

最新文章

  1. MVVM框架下,WPF实现Datagrid里的全选和选择
  2. [NLP]--NLP programming tutorial
  3. 云原生架构下日志服务数据预处理
  4. 分表后需要注意的那些事儿
  5. TypeScript reflect-metadata 结合方法装饰器实现的一个自定义语法检查的例子
  6. junit测试spring_使用Spring JUnit规则进行参数化集成测试
  7. 如何区分普通感冒流感和新型冠状病毒肺炎?
  8. java读取同包文件_Java实现从jar包中读取指定文件的方法
  9. 关于Aspose对于Word操作的一些扩展及思考
  10. 萌新接触前端的第三课——JavaScript
  11. devc++编程 error: jump to case label错误笔记
  12. 哈理工OJ 1184 早起一水(水题)
  13. 简单的C语言代码实现快速排序
  14. Android Jetpack架构组件(十)之Slices
  15. this.$refs使用方法
  16. MATLAB批量绘图
  17. 编码过程中单词常用的缩写方式(转载)
  18. win10下CUDA版本卸载与更新
  19. python中math函数_python中math模块函数
  20. Linux开机自启动

热门文章

  1. JFinal建立项目
  2. SweetAlert2
  3. Mybatis 示例之 Association (2)
  4. lombok链式编程
  5. nginx搭建静态文件服务器,利用nginx搭建静态资源服务器的方法步骤
  6. 《大数据技术从零开始》自学知识库(2022年整理)
  7. [图解]PDF 格式概述(pdf structure)
  8. smbus协议的command_SMBus读取从设备数据总结
  9. vscode透明背景以及背景图片设置
  10. android wifi断开原因分析