当前位置:   article > 正文

4、【办公自动化】Python实现Word转PDF_python word转pdf

python word转pdf

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

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

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

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

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

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

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

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

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

第一步,下载依赖:

pip install comtypes

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

  1. import os
  2. import comtypes.client
  3. def get_path():
  4. path = os.getcwd() # 获取当前运行路径
  5. filename_list = os.listdir(path)
  6. wordname_list = [filename for filename in filename_list if filename.endswith((".doc", ".docx"))]
  7. for wordname in wordname_list:
  8. # 分离word文件名称和后缀,转化为pdf名称
  9. pdfname = os.path.splitext(wordname)[0] + '.pdf'
  10. # 如果当前word文件对应的pdf文件存在,则不转化
  11. if pdfname in filename_list:
  12. continue
  13. wordpath = os.path.join(path, wordname) # word所在目录
  14. pdfpath = os.path.join(path, pdfname) #存放生成的pdf目录
  15. #生成器
  16. yield wordpath,pdfpath
  17. if __name__ == '__main__':
  18. word = comtypes.client.CreateObject("Word.Application")
  19. word.Visiable=0 #设置可见性,不可见
  20. for w,p in get_path():
  21. newpdf = word.Documents.Open(w)
  22. newpdf.SaveAS(p, FileFormat=17) #17表示PDF格式
  23. newpdf.Close()

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

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

第一步,下载依赖:

pip install docx2pdf

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

需要注意

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

转换效果如下所示:

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

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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/298311
推荐阅读
相关标签
  

闽ICP备14008679号