(完整代码在文末附注)
今天接到个新任务,女王大人给了一堆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提醒,勾选不再提醒,然后确定即可。