python如何word转pdf

在Python中,将Word文档(.docx.doc)转换为PDF可以通过多种库实现。以下是几种常见的方法及详细步骤:


方法1:使用 python-docx + comtypes(仅Windows,需安装Word)

适用于Windows系统,依赖本地安装的Microsoft Word。

python 复制代码
import comtypes.client

def docx_to_pdf(input_path, output_path):
    word = comtypes.client.CreateObject("Word.Application")
    doc = word.Documents.Open(input_path)
    doc.SaveAs(output_path, FileFormat=17)  # 17是PDF格式的代码
    doc.Close()
    word.Quit()

# 示例
docx_to_pdf("input.docx", "output.pdf")

注意

  • 仅支持Windows且需安装Microsoft Word。
  • 需安装comtypes库:pip install comtypes

方法2:使用 docx2pdf(跨平台,推荐)

基于libreofficeunoconv的封装,支持跨平台(Windows/macOS/Linux)。

python 复制代码
from docx2pdf import convert

# 单文件转换
convert("input.docx", "output.pdf")

# 批量转换整个文件夹
convert("input_folder/", "output_folder/")

安装

bash 复制代码
pip install docx2pdf

依赖

  • Windows:需安装Microsoft Word或LibreOffice。
  • macOS/Linux:需安装LibreOffice(sudo apt install libreoffice)。

方法3:使用 pywin32(仅Windows,类似comtypes

comtypes类似,但使用pywin32库。

python 复制代码
import win32com.client

def docx_to_pdf(input_path, output_path):
    word = win32com.client.Dispatch("Word.Application")
    doc = word.Documents.Open(input_path)
    doc.SaveAs(output_path, FileFormat=17)
    doc.Close()
    word.Quit()

# 示例
docx_to_pdf("input.docx", "output.pdf")

安装

bash 复制代码
pip install pywin32

方法4:使用 unoconv(Linux优先)

依赖LibreOffice的命令行工具unoconv

python 复制代码
import subprocess

def docx_to_pdf(input_path, output_path):
    subprocess.run(["unoconv", "-f", "pdf", "-o", output_path, input_path])

# 示例
docx_to_pdf("input.docx", "output.pdf")

安装

bash 复制代码
# Linux
sudo apt install unoconv
# macOS
brew install unoconv

方法5:使用 Aspose.Words(付费库,功能强大)

适用于企业级应用,支持高级格式转换。

python 复制代码
import asposewords as aw

doc = aw.Document("input.docx")
doc.save("output.pdf", aw.SaveFormat.PDF)

安装

bash 复制代码
pip install aspose-words

注意事项

  1. 跨平台兼容性
    • 推荐docx2pdf(需LibreOffice)或python-docx+comtypes(仅Windows)。
  2. 格式保真
    • 复杂格式(如表格、图表)建议使用docx2pdfAspose.Words
  3. 无头模式
    • Linux服务器可配置LibreOffice的无头模式:

      bash 复制代码
      libreoffice --headless --convert-to pdf *.docx

完整示例(推荐docx2pdf

python 复制代码
from docx2pdf import convert

def convert_word_to_pdf(input_file, output_file):
    try:
        convert(input_file, output_file)
        print(f"转换成功:{output_file}")
    except Exception as e:
        print(f"转换失败:{e}")

# 使用示例
convert_word_to_pdf("report.docx", "report.pdf")

选择方法时,请根据操作系统、依赖环境和需求(如批量转换、格式复杂度)决定。

相关推荐
没有梦想的咸鱼185-1037-166311 小时前
【遥感技术】从CNN到Transformer:基于PyTorch的遥感影像、无人机影像的地物分类、目标检测、语义分割和点云分类
pytorch·python·深度学习·机器学习·数据分析·cnn·transformer
钟爱蛋炒饭11 小时前
基于深度学习神经网络协同过滤模型(NCF)的视频推荐系统
python·神经网络·机器学习
eqwaak011 小时前
Python Pillow库详解:图像处理的瑞士军刀
开发语言·图像处理·python·语言模型·pillow
RE-190111 小时前
制冷剂中表压对应温度值的获取(Selenium)
爬虫·python·selenium·jupyter·pandas·danfoss·reftools
测试老哥11 小时前
Python+selenium自动化生成测试报告
自动化测试·软件测试·python·selenium·测试工具·职场和发展·测试用例
热爱生活的五柒11 小时前
Zotero + Word 插件管理参考文献的引用
word·zotero·ieee
IT北辰12 小时前
Linux 系统python环境( Miniconda),最新版
linux·运维·python
keerduoba12 小时前
PDFParser 的pickle.loads 寻找链(源码)wmctf2025-pdf2text
python·pdf·pickle·pdf与pickle反序列化
该用户已不存在13 小时前
PHP、Python、Node.js,谁能称霸2025?
python·node.js·php
luckys.one13 小时前
第12篇|[特殊字符] Freqtrade 交易所接入全解:API、WebSocket、限频配置详解
网络·ide·python·websocket·网络协议·flask·流量运营