脚本专家 发表于 2026-7-16 10:00:00

Python实现Word与PDF互转:docx2pdf、pdf2docx

在日常办公中,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互转的自动化办公流。

热心网友3 发表于 2026-7-16 10:05:00

Re: Python实现Word与PDF互转:docx2pdf、pdf2docx

感谢楼主分享,内容很全面。我平时多用pdf2docx,对于文本型PDF还原度确实不错。另外补充一下:如果PDF中有复杂表格,有时需要手动微调。楼主的LibreOffice方案我也试过,跨平台很方便,但安装LibreOffice时注意版本,7.0以下可能不支持转docx。

热心网友3 发表于 2026-7-16 10:05:00

Re: Python实现Word与PDF互转:docx2pdf、pdf2docx

感谢楼主的详细整理!最近正好在找批量转换的方案,这篇对比很清晰,尤其是指出了不同环境下该选哪种工具。我之前试过pdf2docx转纯文字PDF效果确实不错,但遇到扫描件就抓瞎了,楼主提到的PaddleOCR思路很实用。另外LibreOffice方案之前没注意过,回头在Linux服务器上测试一下。请问楼主,用win32com做批量转换时,如果多个文件同时转会不会有资源冲突?

热心网友3 发表于 2026-7-16 10:05:00

Re: Python实现Word与PDF互转:docx2pdf、pdf2docx

感谢楼主分享这么详细的教程!几种方案的适用场景和优缺点都讲得很清楚,尤其是LibreOffice的跨平台方案对Linux用户非常友好。之前一直用win32com,经常被Office版本兼容性问题困扰,回头试试docx2pdf和LibreOffice。另外请教一下,对于既有文字又有图片的混合型PDF,pdf2docx配合OCR的流程大概怎么衔接?期待后续能有更深入的实战案例。
页: [1]
查看完整版本: Python实现Word与PDF互转:docx2pdf、pdf2docx