(完整代码在文末附注)

今天接到个新任务,女王大人给了一堆PDF叫我帮忙转成WORD,最后,要是能把相同类型文档整合在一起就最好了。(需要多word文件整合成一个Word脚本的文末留言)

这不是一个两个PDF,也不是五个、八个的,这真的是海量的PDF文档啊。就算我有相关平台的PDF转WORD的权益,这手脑估计都得废掉。

只能靠小聪明了,度娘懒得问了,还是直接问ChatGPT吧。想法很美好,现实很骨感。

生成的代码经调试,并不能完美执行,报错。几经周折,总算能完美执行,并转换成WORD,怀着激动的心情,打开生成的word,傻眼了,什么鬼!

乱码呀,嗯,说明我的思路不对,继续调测。经过反复几次调整后,不敢说所见即所得,但大体上排版、文字都与PDF保持一致。在粘贴代码前,先说下运行环境:

1、Windows系统环境。

2、安装Python环境:从官网下载安装Python 3.x版本的环境,建议下载最新版本。安装过程中记得勾选“Add Python 3.x to PATH”。

3、安装Python-docx库、安装comtypes库:在CMD中输入

pip install python-docx

pip install comtypes

命令进行安装。

4、安装Microsoft Office软件:这个库需要依赖Microsoft Office软件,需要安装Microsoft Office 2010或更新版本,以便使用其中的Word程序。

5、复杂脚本,保存为,并记住你的脚本目录地址,然后在命名行方式下输入:

python.exe <你的盘符>:/文件名或目录,比如我把文件保存在D盘的bat文件夹里面,并命名pdftoword.py,那么我就执行

python.exe d:/bat/pdftoword.py



具备以上环境后,此代码可以完美运行了。而且完全本地化运行免除了PDF上传云端转换、付费软件转换的烦恼。对于普通人来说,以上步骤可能需要花费一些时间和精力,但只要按照步骤进行操作,大多数人应该都能够完成。特别是转换文件多的情况下直接挂起运行就好,释放双手,去干其他的活吧。

效果图示

源码:

import os import comtypes.client from pathlib import Path def pdf_to_docx(pdf_path): # 创建保存路径 docx_path = Path(pdf_path).with_suffix('.docx') # 创建 Word 应用程序对象 word = comtypes.client.CreateObject('Word.Application') # 设置为不可见 word.Visible = False # 打开 PDF 文件 doc = word.Documents.Open(pdf_path) # 将 PDF 文件内容复制到 Word 文件中 doc.Content.Copy() # 新建一个空白 Word 文件 new_doc = word.Documents.Add() # 粘贴 PDF 文件内容到新建的 Word 文件中 new_doc.Content.Paste() # 保存并关闭新建的 Word 文件 new_doc.SaveAs(str(docx_path)) new_doc.Close() # 关闭 Word 应用程序 word.Quit() if __name__ == '__main__': # 待转换的 PDF 文件夹路径,把D:batpath换成你需要输入输出的PDF文件夹就好。 pdf_folder = r'D:batpath' # 遍历 PDF 文件夹内的所有 PDF 文件 for file in os.listdir(pdf_folder): if file.endswith('.pdf'): pdf_path = os.path.join(pdf_folder, file) pdf_to_docx(pdf_path) print(f'{pdf_path} 转换成功!')

脚本首次运行会弹出OFFICE提醒,勾选不再提醒,然后确定即可。