4、【办公自动化】Python实现Word转PDF

在日常办公过程中,总是离不开和文档打交道,有一个最常用的场景就是把 Word 文档转成 PDF 格式。PDF 文档的优势在于:在不同编辑器或不同设备上,打开后不会出现格式错乱或文字乱码。原因也很简单,Word 转 PDF 的本质是将可读写的 Word 变成了只读的 PDF。

最近就遇到一个好玩的问题,我打算将自己写的一篇 Word 笔记,转成 PDF 保存在U盘里备份。起初想到最直接的方式就是修改扩展名了,如下:

4、【办公自动化】Python实现Word转PDF

原本以为这样就完事了,准备用 PDF 阅读器打开检查一下转换的效果:

4、【办公自动化】Python实现Word转PDF

额,这下尴尬了,是转换没成功?我又改成通过浏览器方式打开看看,结果让人失望:

4、【办公自动化】Python实现Word转PDF

于是,找度娘问了一下,大致上提供了两种解决的方法:

方法1、打开 Word 文档,另存为..,把保存类型改为 .pdf 即可。

4、【办公自动化】Python实现Word转PDF

方法2、下载PDF转换器进行转换,优势是可以批量转换,网上的PDF转换器参差不齐,有的免费有的收费。

当进行一个 Word 文档转换还可以使用方法1,但是当一大堆 Word 文档需要转成 PDF,这意味着每个都打开再另存为,这操作简直要疯了!作为一名菜鸟程序员,我总是想去找别人造好的轮子拿来用—-下载PDF转换器,可是还要去搜索免费的,如果是比较重要而机密的文档怎么能放心的在线转换?思来想去,想到了正在学习的无敌Python,用几行核心代码就应该能实现上面批量转换的需求。

经过了解和学习,有很多第三方库可以实现批量转 PDF 的需求,比如 pywin32、comtypes 等。这里,我将以comtypes库为例,分析下具体转换的实现思路。Word 转换成 PDF 的本质,就是模拟我们在 Windows 上打开 Word 文档并另存为 .pdf 的操作过程。因此,实现起来也很简单。

第一步,下载依赖:

pip install comtypes

第二步,代码实现同一个目录下批量生成.pdf

import os
import comtypes.client


def get_path():
    path = os.getcwd() # 获取当前运行路径
    filename_list = os.listdir(path)
    wordname_list = [filename for filename in filename_list if filename.endswith((".doc", ".docx"))]
    for wordname in wordname_list:
        # 分离word文件名称和后缀,转化为pdf名称
        pdfname = os.path.splitext(wordname)[0] + '.pdf'
        # 如果当前word文件对应的pdf文件存在,则不转化
        if pdfname in filename_list:
            continue
        wordpath = os.path.join(path, wordname) # word所在目录
        pdfpath = os.path.join(path, pdfname) #存放生成的pdf目录
        #生成器
        yield wordpath,pdfpath

if __name__ == '__main__':
    word = comtypes.client.CreateObject("Word.Application")
    word.Visiable=0 #设置可见性,不可见

    for w,p in get_path():
        newpdf = word.Documents.Open(w)
        newpdf.SaveAS(p, FileFormat=17)  #17表示PDF格式
        newpdf.Close()

第三步,运行程序查看效果:

4、【办公自动化】Python实现Word转PDF

另外,我在 Piyp 官网上也搜到 docx2pdf ,从简介上看,它可以通过非代码的方式快速实现批量转换,简直太劲爆了!docx2pdf 是基于脚手架 CLI 方式操作的:

第一步,下载依赖:

pip install docx2pdf

第二步,通过命令实现 Word 批量转换成 PDF:

4、【办公自动化】Python实现Word转PDF

需要注意

  • 实现单个转换:第一个参数指定具体的word文档,第二个参数是转换后的pdf文档。
  • 实现批量转换:第一个参数路径是word文档的路径,第二个参数是存放生成pdf文档的路径。

转换效果如下所示:

4、【办公自动化】Python实现Word转PDF

docx2pdf 依赖下载及API,可参考: https://pypi.org/project/docx2pdf/。

至此,通过 Python 轻松搞定了 Word 文档转 PDF 格式的问题。转换实现的方式不止一种,可以代码实现,也可以非代码实现,并兼容了批量转换操作。

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
青葱年少的头像青葱年少普通用户
上一篇 2023年3月29日
下一篇 2023年3月29日

相关推荐