本文目录导读:

- 方法一:使用Python脚本(推荐,跨平台)
- 方法二:使用LibreOffice(免费开源,适合Linux/服务器)
- 方法三:使用Microsoft Office COM对象(仅Windows)
- 方法四:使用在线API(适合无本地Office环境)
- 选择建议
将Word文档转换为PDF文件,可以通过以下几种方式实现,具体取决于你的使用场景:
使用Python脚本(推荐,跨平台)
推荐使用 python-docx 和 docx2pdf 库。
安装依赖:
pip install python-docx docx2pdf
脚本示例:
import os
from docx2pdf import convert
def word_to_pdf(input_path, output_path=None):
"""
将Word文档转换为PDF
:param input_path: Word文件路径
:param output_path: PDF输出路径(可选,默认同目录同名PDF)
"""
# 如果没有指定输出路径,生成与输入同名的PDF文件
if output_path is None:
output_path = os.path.splitext(input_path)[0] + '.pdf'
try:
# 转换单个文件
convert(input_path, output_path)
print(f"转换成功: {output_path}")
except Exception as e:
print(f"转换失败: {e}")
# 示例:转换单个文件
word_to_pdf("文档.docx")
# 示例:批量转换文件夹中的所有docx文件
def batch_convert(folder_path):
for file in os.listdir(folder_path):
if file.endswith('.docx'):
word_to_pdf(os.path.join(folder_path, file))
batch_convert("./word_files")
注意: docx2pdf 依赖于系统安装的Microsoft Word(Windows)或LibreOffice(macOS/Linux)。
使用LibreOffice(免费开源,适合Linux/服务器)
安装LibreOffice:
- Ubuntu/Debian:
sudo apt install libreoffice - macOS:
brew install --cask libreoffice - Windows: 下载安装包
Python脚本:
import subprocess
import os
def convert_with_libreoffice(input_path, output_dir=None):
"""
使用LibreOffice命令行转换Word为PDF
"""
if output_dir is None:
output_dir = os.path.dirname(input_path)
# LibreOffice命令行参数
cmd = [
'libreoffice',
'--headless', # 无界面模式
'--convert-to', 'pdf', # 转换格式
'--outdir', output_dir, # 输出目录
input_path
]
result = subprocess.run(cmd, capture_output=True, text=True)
if result.returncode == 0:
print(f"转换成功,输出到: {output_dir}")
else:
print(f"转换失败: {result.stderr}")
# 使用示例
convert_with_libreoffice("文档.docx")
使用Microsoft Office COM对象(仅Windows)
需要安装Microsoft Office:
import win32com.client
import os
def word_to_pdf_com(input_path, output_path=None):
"""
使用Word应用程序(需要安装Office)转换
"""
if output_path is None:
output_path = os.path.splitext(input_path)[0] + '.pdf'
word = win32com.client.Dispatch("Word.Application")
word.Visible = False # 隐藏Word界面
try:
doc = word.Documents.Open(os.path.abspath(input_path))
doc.SaveAs(os.path.abspath(output_path), FileFormat=17) # 17=PDF格式
doc.Close()
print(f"转换成功: {output_path}")
except Exception as e:
print(f"转换失败: {e}")
finally:
word.Quit()
# 使用示例
word_to_pdf_com("文档.docx")
安装依赖: pip install pywin32
使用在线API(适合无本地Office环境)
使用免费的在线转换API(如 pdfcrowd 或 ilovepdf),但通常有文件大小限制。
示例使用 pdfkit 和 wkhtmltopdf:
# 注意:这适用于HTML转PDF,Word需先转为HTML import pdfkit # 先使用python-docx提取内容生成HTML,再转PDF
选择建议
| 场景 | 推荐方法 | 优点 | 缺点 |
|---|---|---|---|
| 本地Windows+Office | 方法一(docx2pdf) | 简单高效 | 依赖Word安装 |
| Linux/服务器 | 方法二(LibreOffice) | 免费开源,批量处理 | 转换效果可能稍差 |
| 简单的Python脚本 | 方法一(docx2pdf) | 代码简洁 | 跨平台需配置 |
| 嵌入式/无GUI环境 | 方法二(LibreOffice) | 无图形界面依赖 | 需要安装LibreOffice |
最简单的方案(如果已安装Word):
# 直接用docx2pdf命令行工具 pip install docx2pdf docx2pdf 文档.docx
脚本均可批量处理或集成到自动化流程中。