> 技术文档 > python如何word转pdf_python word转pdf

python如何word转pdf_python word转pdf

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


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

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

import comtypes.clientdef 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)。

from docx2pdf import convert# 单文件转换convert(\"input.docx\", \"output.pdf\")# 批量转换整个文件夹convert(\"input_folder/\", \"output_folder/\")

安装

pip install docx2pdf

依赖

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

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

comtypes类似,但使用pywin32库。

import win32com.clientdef 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\")

安装

pip install pywin32

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

依赖LibreOffice的命令行工具unoconv

import subprocessdef docx_to_pdf(input_path, output_path): subprocess.run([\"unoconv\", \"-f\", \"pdf\", \"-o\", output_path, input_path])# 示例docx_to_pdf(\"input.docx\", \"output.pdf\")

安装

# Linuxsudo apt install unoconv# macOSbrew install unoconv

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

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

import asposewords as awdoc = aw.Document(\"input.docx\")doc.save(\"output.pdf\", aw.SaveFormat.PDF)

安装

pip install aspose-words

注意事项

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

完整示例(推荐docx2pdf

from docx2pdf import convertdef 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\")

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