在日常办公中,Word与PDF的格式互转是最常见的需求之一。合同存档需转PDF防篡改,PDF内容修改需转Word再编辑。利用Python脚本可以批量自动化处理这些任务,大幅提升效率。本文总结三种经过验证的实现方案,覆盖轻量级、高保真和跨平台场景,并提供完整代码与避坑指南。
一、Word转PDF:轻量级方案docx2pdf
docx2pdf库底层调用Microsoft Word的Office接口,能最大程度保留原排版(目录、页眉页脚等)。适合Windows环境下快速批量转换。
安装:pip install docx2pdf
示例代码:- from docx2pdf import convert
- import os
- # 单个文件转换
- convert("report.docx", "report.pdf")
- # 批量转换整个文件夹
- input_folder = r"C:\待处理文档"
- output_folder = r"C:\已转PDF"
- if not os.path.exists(output_folder):
- os.makedirs(output_folder)
- convert(input_folder) # 默认在原路径生成PDF
- print("所有Word已转换为PDF")
复制代码
局限:依赖本地安装的Microsoft Word,Linux服务器或无Office环境无法使用。
二、Word转PDF:企业级稳定方案win32com
若需要在后台静默转换,或需要更精细的控制(如加密PDF),可以调用Word的COM接口。
安装:pip install pywin32
示例代码:- import win32com.client
- import os
- def word_to_pdf(word_path, pdf_path):
- word = win32com.client.Dispatch("Word.Application")
- word.Visible = False # 后台运行
- doc = word.Documents.Open(os.path.abspath(word_path))
- # FileFormat=17 代表 wdFormatPDF
- doc.SaveAs2(os.path.abspath(pdf_path), FileFormat=17)
- doc.Close()
- word.Quit()
- word_to_pdf("合同草稿.docx", "合同正式稿.pdf")
复制代码
同样依赖于Word软件,但控制粒度更细,适合集成到企业级流程中。
三、PDF转Word:开源神器pdf2docx
pdf2docx 基于PyMuPDF解析PDF布局结构,重建为Word文档,对文字型PDF还原度高。
安装:pip install pdf2docx
示例代码:- from pdf2docx import Converter
- pdf_file = "扫描件_纯文字版.pdf"
- docx_file = "还原后的文档.docx"
- cv = Converter(pdf_file)
- # start=0, end=None 表示转换全部页面,也可指定页码范围
- cv.convert(docx_file, start=0, end=None)
- cv.close()
- print("转换完成!请检查格式微调。")
复制代码
关键说明:
- 如果PDF是由Word直接导出的(文本型PDF),转换效果极佳,段落和表格基本能还原。
- 如果PDF是扫描仪生成的图片型PDF,pdf2docx无法直接识别文字,需要先引入OCR技术(如PaddleOCR)提取文字后再写入Word。
四、跨平台高保真方案:LibreOffice命令行
若需兼容复杂排版(分栏、艺术字、公式)或无法使用Microsoft Office,可通过LibreOffice的命令行实现企业级转换。LibreOffice是开源跨平台办公套件,需先安装。
示例代码(使用subprocess调用系统命令):- import subprocess
- # Word转PDF
- subprocess.run([
- "libreoffice", "--headless", "--convert-to", "pdf",
- "--outdir", "output_folder", "input.docx"
- ])
- # PDF转Word(需LibreOffice 7.0+)
- subprocess.run([
- "libreoffice", "--headless", "--convert-to", "docx",
- "--outdir", "output_folder", "input.pdf"
- ])
复制代码
优势:跨平台(Windows/Linux/Mac)、无Office依赖、支持复杂排版。局限:需额外安装LibreOffice,初次配置稍复杂。
五、进阶建议与注意事项
1. 异常处理:批量转换时,务必加入 try-except 块,记录失败的文件名,避免程序因单个损坏文件崩溃。
2. 打包分发:若需要让非技术人员使用,可用 PyInstaller 将 .py 脚本打包成 .exe 可执行文件,免去Python环境安装。
3. GUI界面:结合 tkinter 或 PyQt 添加按钮和进度条,提升易用性。
4. 性能优化:对于大量文件,考虑多线程或异步处理。
选择哪种方案,取决于你的操作系统、是否需要Office许可、排版复杂度以及批量规模。建议先在小样本上测试效果,再投入正式流程。掌握这些代码,即可实现Word与PDF互转的自动化办公流。 |