06《Python 办公自动化教程》Word 转换 PDF
off999 2024-09-21 20:59 40 浏览 0 评论
在工作中 Word 文档通常不是最终版本,在发给甲方或者其他同事时,我们还需要把Word文档转换为PDF格式文件。那为什么需要转换 PDF,直接发 Word 文档又有什么问题?
其实直接发 Word 文档问题还是挺大的,可以大致总结以下几点:
- 由于每个人使用的软件或版本都不统一,可能你使用的是微软的 Office2007,而他使用的是金山WPS,这样有可能你本地样式已经好好的 Word 文档,在别人电脑上就出现了乱码;
- PDF 可以直接预览,目前主流浏览器都已经支持;
- PDF 文件无法修改,保证了信息安全。
了解了转换 PDF 格式文件的作用之后,接下来这一小节中,将介绍 Python 第三方模块 pywin32 实现Word 文档转换为 PDF 格式文件。
1. pywin32 模块介绍
在 Windows 上如需使用 Python 编写脚本,很多时候都需要用到 Windows API,但 Python 是没有自带访问 Windows 系统 API 的标准库,所以这时可以使用第三方库 pywin32 来解决,pywin32 模块中直接包装了几乎所有的 Windows API,让开发者可以很方便的调用。
使用 python win32 库实现 Word 转换 PDF,实际上是调用 Word 底层 vba,利用 Word 导出方法完成 PDF 转换,文档地址:
1.1 安装
pywin32 是 Python 的第三方库,使用前需要通过以下命令进行安装:
pip install pywin32
1.2 使用步骤
步骤1:导入 pywin32 下所需模块
from win32com.client import constants,gencache
代码块1步骤2:启动一个新的 Word 进程
word=gencache.EnsureDispatch('Word.Application')
代码块1步骤3:读取要转换的 Word 文档
doc=word.Documents.Open(wordPath,ReadOnly=1)
代码块1步骤4:转换 PDF 格式文件
doc.ExportAsFixedFormat(pdfPath,constants.wdExportFormatPDF)
代码块1ExportAsFixedFormat() 方法可以将文档保存为 PDF 或 XPS 格式,第一个参数指定新的 PDF 或 XPS 文件的路径和文件名,第二个参数是一个枚举值(取值包括:wdExportFormatPDF 和 wdExportFormatXPS)用于指定转换的格式,上述代码中要将文档转换为 PDF 在设置时设置为constants.wdExportFormatPDF。
2. Word 文档转换 PDF
接下来,通过 pywin32 模块分别实现单个 Word 文档的转换和多个Word 文档的转换。
2.1 单个文件转换
根据pywin32模块的使用步骤,封装转换方法 createpdf 方法,代码如下:
def createpdf(wordPath,pdfPath):
word=gencache.EnsureDispatch('Word.Application')
doc=word.Documents.Open(wordPath,ReadOnly=1)
#转换方法
doc.ExportAsFixedFormat(pdfPath,constants.wdExportFormatPDF)
代码块12345代码解释:EnsureDispatch() 方法为启动一个新的 Word 进程,通过启动的 Word 进程读取传入指定的Word 文档,打开 Word 文档后,通过 ExportAsFixedFormat() 方法进行导出 PDF,第一个参数为指定的PDF 文件存储路径,第二个参数为指定导出文件的类型,除 PDF 外,还可以传入 XPS 格式。执行完成后,生成了 “info.pdf” 格式文件,效果如下图所示:
2.2 多个文件转换
完成单个 Word 文档转换之后,日常工作中有时会涉及到批量 Word文 档的转换,这时可以在单个Word 文档转换代码的基础上进行完善,修改后代码如下:
from win32com.client import constants,gencache
import os
def createpdf(wordPath,pdfPath):
word=gencache.EnsureDispatch('Word.Application')
doc=word.Documents.Open(wordPath,ReadOnly=1)
#转换方法
doc.ExportAsFixedFormat(pdfPath,constants.wdExportFormatPDF)
#多个文件的转换
print(os.listdir('.')) #当前文件夹下的所有文件
wordfiles=[]
for file in os.listdir('.'):
if file.endswith(('.doc','.docx')):
wordfiles.append(file)
for file in wordfiles:
filepath=os.path.abspath(file)
index=filepath.rindex('.')
# 拼接文件名及.pdf后缀
pdfpath=filepath[:index]+'.pdf'
createpdf(filepath,pdfpath)
代码解释:通过 Python 中内置的os模块,读取指定目录获取所有的 Word 文档,保存在wordfiles中。通过for…in循环wordfiles,在循环中,首先根据abspath()方法得到文档的绝对路径,将文档名称拼接.pdf作为PDF文件的新名称。调用封装好的createpdf() 方法将文档路径和PDF文件路径传入,进行文件转换。执行完成后,在指定目录就批量生成 PDF 格式文件。
3. pywin32 模块拓展
前面提到pywin32 模块中直接包装了几乎所有的 Windows API,除了前面小节介绍的转换PDF外,还可以进行如下操作,一起来体验下吧!
3.1 弹出MessageBox消息框
使用pywin32实现系统消息框的弹出,代码如下:
import win32api
import win32con
win32api.MessageBox(0, "Hello Python", "消息框标题", win32con.MB_OK)
代码块123代码解释:MessageBox() 方法弹出消息框,第一个参数标识要创建的消息框的所有者窗口,第二个参数指向要显示的消息,第三个参数表示对话框标题,第四个参数指定一组位标志来确定对话框的内容和行为,取值范围如下:
- MB_ABORTRETRYIGNORE:消息框包含三个按钮:中止,重试和忽略;
- MB_OK:消息框包含一个按钮:OK。这是默认值;
- MB_OKCANCEL:消息框包含两个按钮:确定和取消;
- MB_RETRYCANCEL:消息框包含两个按钮:重试和取消;
- MB_YESNO:消息框包含两个按钮:是和否;
- MB_YESNOCANCEL:消息框包含三个按钮:是,否和取消。
执行完成后,弹出消息框效果如下图所示:
3.2 模拟键盘操作
使用 pywin32 模拟按下键盘的回车键(Enter),代码如下:
import win32api,win32con
win32api.keybd_event(13,0,win32con.KEYEVENTF_EXTENDEDKEY)
代码解释:keybd_event() 方法为触发键盘事件,第一个参数为虚拟键码(13表示回车键),第二个参数为硬件扫描码,一般设置为0即可,第三个参数表示操作的标志位,如果值为KEYEVENTF_EXTENDEDKEY则该键被按下,值为KEYEVENTF_KEYUP则该按键被释放。
4. 小结
本节课程我们主要学习了 pywin32 模块的使用。本节课程的重点如下:
- 了解pywin32模块作用及使用步骤;
- 掌握 pywin32模块实现Word文档转换PDF格式文件的方法;
相关推荐
- 笔记本无音频输出设备(笔记本无音频输出设备)
-
1、没有声卡驱动,解决方法就是找到笔记本的官网,下载电脑声卡的驱动安装即可。2、没有外界的音频播放设备,解决方法就是买一个外界的音频播放设备插到电脑主机的音频接口上即可。笔记本电脑显示未安装任何音频输...
- iso文件能用手机打开吗(iso文件能用手机打开吗安全吗)
-
一般的压缩软件就可以打开的,比如,好压软件,这个打开只是解压形式的,如果你说的是运行iso文件,这个没有,况且安卓系统也不支持iso运行ISO文件一般用于光盘镜像文件的存储,如果想要在手机上运行ISO...
- win7系统卡顿怎么优化(win7很慢很卡怎么优化)
-
1、首先打开安全卫士,进入安全卫士首页,单击软件窗口右下角的“更多”图标,打开扩展应用程序。2、单击选择“我的工具”。3、在我的工具菜单里面找到“人工服务”单击打开人工服务。4、在人工服务对话框有很多...
- 如何查看c盘微信聊天记录(如何查看c盘微信聊天记录内存大小)
-
微信群中的消息只要没删除基本都能保存,想要找微信群中几个多月前的消息可以直接根据日期来查找聊天记录。操作如下:1、打开想要查找记录的微信群,点击右上角人形图标;2、点击查找聊天内容;3、选择按日...
- office2016家庭版激活密钥(office家庭版激活码2019)
-
走淘宝吧,因为零售版的密钥只能用一次。大概几块钱就能激活2016。如果你不在乎钱的话可以向我一样,订阅一个office365.实在不行可以和几个人一起买一个家庭版的365.出现这个情况,找微软申诉是没...
- 移动硬盘驱动器下载安装(移动硬盘驱动器下载安装教程)
-
1、右键单击您的桌面,选择“新建文件夹”,并命名该文件夹(例如“usb驱动程序”);2、然后到本站下载驱动程序;3、将其解压缩至在您的桌面上刚刚创建的usb驱动程序文件夹;4、单击开始菜单,然后选择设...
- 电脑硬盘格式化工具(电脑 格式化硬盘)
-
硬盘格式化工具很多,PQMACGIG8.0(中文就叫硬盘分区魔法师)是比较好的一个,这个是在WINDOWS下比叫好用,(个人感觉)FDISK也是比较好的一个,这个一般用在DOS下分区格式化WIN...
- photoshop是一款什么软件(ps指的是什么软件)
-
这个说法是错误的,ps软件“即:photoshop”是由美国著名的“adobe阿多比”公司出品的专业的图像处理软件,它不是由微软公司出品的软件。众所周知的是,微软公司以设计视窗操作系统名满全球,它出...
- ipad越狱的好处与坏处(ipad越狱好不好)
-
好处一: 1、重命名、重组应用程序 如果你看着Sparrow(iOS最优秀邮件客户端)这个名字不爽,越狱之后就可以改成“Email”,如果你觉得“豆瓣电台”这个名字不给力,那就改成“中央人民广...
- win7光盘重装系统步骤图解(win7光盘如何重装系统)
-
1.确认您的电脑支持从光盘启动。如果支持,可以直接将Windows7安装光盘插入电脑的光驱中。 2.打开电脑,按下F2、F10、F12或Delete等键进入BIOS设置界面。 ...
- 电脑已联网却无法上网(电脑已经联网了但是不能上网)
-
电脑连上网后,仍可能存在无法上网的情况,这可能是由多种原因造成的。以下是一些可能的原因和解决方法:1.浏览器问题:有时候,浏览器可能会出现故障,导致无法正常访问网络。您可以尝试清除浏览器的缓存和co...
- u盘价格一览表(u盘单价)
-
不同品牌价格不同,不同内存价格也不同,例如8g、16g、32g、64g等多种容量大小的,根据容量的不同,报价在29元到120元之间不等。闪存盘虽然小,但相对来说却有很大的存储容量。U盘大多能够存储比一...
- windows查看ip命令(windows如何查看ip地址)
-
查看电脑IP: 1)使用Windows+R键打开“运行”窗口,然后输入CMD进入命令提示窗口2)进入命令窗口之后,输入:ipconfig/all回车即可...
- 内存条的作用(内存条的作用和参数配置)
-
内存条是存储电脑运行所需的数据和程序,帮助CPU快速读取和运行,提高计算机的运行速度和处理能力。内存条也被称为随机存取存储器(RAM),是电脑中非常必要的一个组件。常见的内存条类型有DDR、DDR2、...
- autocad2012安装失败(autocad2012无法安装)
-
如果您遇到CAD2012安装不了的问题,可能有几个原因导致这种情况。以下是一些常见的解决方法:1.确保系统要求:首先,请确保您的计算机符合CAD2012的系统要求。检查您的操作系统版本、内存、处理器...
欢迎 你 发表评论:
- 一周热门
-
-
抖音上好看的小姐姐,Python给你都下载了
-
全网最简单易懂!495页Python漫画教程,高清PDF版免费下载
-
Python 3.14 的 UUIDv6/v7/v8 上新,别再用 uuid4 () 啦!
-
飞牛NAS部署TVGate Docker项目,实现内网一键转发、代理、jx
-
python入门到脱坑 输入与输出—str()函数
-
宝塔面板如何添加免费waf防火墙?(宝塔面板开启https)
-
Python三目运算基础与进阶_python三目运算符判断三个变量
-
(新版)Python 分布式爬虫与 JS 逆向进阶实战吾爱分享
-
失业程序员复习python笔记——条件与循环
-
系统u盘安装(win11系统u盘安装)
-
- 最近发表
- 标签列表
-
- python计时 (73)
- python安装路径 (56)
- python类型转换 (93)
- python进度条 (67)
- python吧 (67)
- python的for循环 (65)
- python格式化字符串 (61)
- python静态方法 (57)
- python列表切片 (59)
- python面向对象编程 (60)
- python 代码加密 (65)
- python串口编程 (77)
- python封装 (57)
- python写入txt (66)
- python读取文件夹下所有文件 (59)
- python操作mysql数据库 (66)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python多态 (60)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)
