Python利用Spire.Doc for Python高效实现Word转PDF

 更新时间:2025年09月12日 08:16:12   作者:用户372157426135  
在工作中,经常会遇到需要把 Word 文档转换成 PDF 的情况,本文将介绍如何借助 Spire.Doc for Python库,实现 doc 转 pdf、docx 转 pdf,需要的可以了解下

在工作中,经常会遇到需要把 Word 文档转换成 PDF 的情况。比如生成报表、分发文档、或者做归档保存,PDF 格式在排版和跨平台显示上更稳定。

传统的做法往往依赖 Microsoft Office 或 LibreOffice 等软件来完成转换,但在自动化环境(如服务器、Docker 容器、Linux 系统)中,这类方式会遇到一些限制:需要额外安装软件、依赖复杂,甚至存在兼容性问题。

因此,很多开发者更希望使用无依赖的 Python 库来完成转换。本文将介绍如何借助 Spire.Doc for Python库,在不依赖 Office 的情况下,实现 doc 转 pdf、docx 转 pdf,并支持批量转换与多种转换设置。

一、安装 Spire.Doc for Python

在使用之前,需要先安装库。可以直接使用以下 pip 命令来安装:

pip install spire-doc

安装完成后,就可以在 Python 代码中使用 from spire.doc import * 导入该库的模块来处理和转换 Word 文档。

二、Python Word 转 PDF 基本示例

下面是 Word 转 PDF 一个最基础的示例。只需要两步:加载文件、保存为 PDF。

from spire.doc import *

# 创建文档对象
doc = Document()

# 加载 Word 文件
doc.LoadFromFile("input.docx")

# 转换并保存为 PDF
doc.SaveToFile("output.pdf", FileFormat.PDF)

# 关闭文档,释放资源
doc.Close()

代码说明

  • Document():创建一个 Word 文档对象。
  • LoadFromFile("input.docx"):加载指定路径的 Word 文件。
  • SaveToFile("output.pdf", FileFormat.PDF):将文档保存为 PDF 格式。
  • Close():关闭文档,释放资源。

三、批量转换 Word 文档为 PDF

如果有大量 Word 文件需要转换,可以将它们放在一个目录下,然后遍历目录并批量转换。以下是具体的代码示例:

import os
from spire.doc import *

input_dir = "word_files"
output_dir = "pdf_files"
os.makedirs(output_dir, exist_ok=True)

for file in os.listdir(input_dir):
    if file.endswith(".doc") or file.endswith(".docx"):
        doc = Document()
        doc.LoadFromFile(os.path.join(input_dir, file))
        pdf_path = os.path.join(output_dir, file.rsplit(".", 1)[0] + ".pdf")
        doc.SaveToFile(pdf_path, FileFormat.PDF)
        doc.Close()

代码说明

  • os.listdir(input_dir):遍历文件夹中的所有文件。
  • file.endswith(".doc") or file.endswith(".docx"):只处理 Word (.doc 或 .docx)文件。
  • os.makedirs(output_dir, exist_ok=True):如果目标文件夹不存在,则自动创建。
  • 每次处理完一个文档后调用 Close(),避免内存占用过多。

四、转换设置与优化

在不同的应用场景下,生成的 PDF 可能需要不同的属性,例如文件体积更小、排版更精细、符合归档标准等。Spire.Doc for Python 提供了可调节的参数来满足这些需求。

1. 图片优化(减小 PDF 大小)

# 将图像压缩到原始质量的40%
document.JPEGQuality = 40

# 保留原始图像质量
# document.JPEGQuality = 100

这样可以有效减小 PDF 文件大小,适合包含大量图片的 Word 文档。

2. 字体嵌入处理(避免乱码)

# 创建 ToPdfParameterList 类的对象
parameter = ToPdfParameterList()

# 将字体嵌入到生成的PDF中
parameter.IsEmbeddedAllFonts = True

# 将文档保存为PDF
document.SaveToFile("output.pdf", parameter)

避免目标设备缺少字体时,导致 PDF 显示异常。

3. PDF/A 合规标准

# 创建 ToPdfParameterList 类的对象
parameters = ToPdfParameterList()

# 设置 PDF/A 合规标准
parameters.PdfConformanceLevel = PdfConformanceLevel.Pdf_A1A

# 将文档保存为 PDF/A-1a 文件
document.SaveToFile("output.pdf", parameters)

用于生成符合 PDF/A 标准的文件,常用于档案归档。

4. 加密与权限控制

# 创建 ToPdfParameterList 类的对象
parameter = ToPdfParameterList()

# 设置打开密码和权限密码,并用其保护生成的 PDF 文件
openPsd = "abc123"
permissionPsd = "E-iceblue"
parameter.PdfSecurity.Encrypt(openPsd, permissionPsd, PdfPermissionsFlags.Default, PdfEncryptionKeySize.Key128Bit)

# 将文档保存为加密的PDF
document.SaveToFile("output.pdf", parameter)

可以为 PDF 设置打开密码,并限制打印、复制等操作。

五、异常处理

import os
from spire.doc import *

input_dir = "word_files"
output_dir = "pdf_files"
os.makedirs(output_dir, exist_ok=True)

for file in os.listdir(input_dir):
    if file.endswith(".doc") or file.endswith(".docx"):
        try:
            doc = Document()
            doc.LoadFromFile(os.path.join(input_dir, file))
            pdf_path = os.path.join(output_dir, file.rsplit(".", 1)[0] + ".pdf")
            doc.SaveToFile(pdf_path, FileFormat.PDF)
            print(f"成功转换: {file} → {pdf_path}")
        except Exception as e:
            print(f"转换失败: {file}, 错误信息: {str(e)}")
        finally:
            if 'doc' in locals():
                doc.Close()

代码说明

  • try ... except ... finally:保证即使出错,程序也能继续执行。
  • print(f"..."):方便输出日志,便于排查问题。
  • finally 确保即使出错,也会关闭文档,避免内存泄漏。

六、适用场景

  • 自动化报表生成:将 Word 报表定时转换为 PDF。
  • 文档归档:统一转换为 PDF/A,方便长期保存。
  • 在线服务:搭建“上传 Word → 下载 PDF”的 Web 接口。
  • 批量处理:快速将大量 Word 文件转换为 PDF,提升工作效率。

七、总结

本文介绍了在 Python 中使用 Spire.Doc 实现 Word 文档到 PDF 的转换方法。通过实例演示了:

  • 单文件和批量文件的转换流程;
  • 转换过程中可配置的参数,如图像压缩、字体嵌入、PDF/A 合规性和加密设置;
  • 异常处理与资源释放的注意事项,确保在批量或自动化场景下程序稳定运行。

总体来看,利用 Spire.Doc 可以在不依赖 Office 的环境中完成高效、稳定的 Word 到 PDF 转换,并且转换选项灵活,可根据具体需求调整。上述方法适合在报表生成、文档归档或在线文档处理等场景中应用。

到此这篇关于Python利用Spire.Doc for Python高效实现Word转PDF的文章就介绍到这了,更多相关Python Word转PDF内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python Django 页面上展示固定的页码数实现代码

    Python Django 页面上展示固定的页码数实现代码

    这篇文章主要介绍了Python Django 页面上展示固定的页码数实现代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-08-08
  • Python表达式的优先级详解

    Python表达式的优先级详解

    在本篇文章里小编给大家整理了关于Python表达式的优先级的知识点内容,需要的朋友们可以学习下。
    2020-02-02
  • Python中requirements.txt简介(推荐)

    Python中requirements.txt简介(推荐)

    Python项目中必须包含一个 requirements.txt 文件,用于记录所有依赖包及其精确的版本号,以便新环境部署,这篇文章主要介绍了Python中requirements.txt简介,需要的朋友可以参考下
    2022-11-11
  • python3中http协议提供文件服务器功能详解

    python3中http协议提供文件服务器功能详解

    http协议是互联网的通用基础协议,也可以利用其来开发文件服务器,给客户提供文件浏览,查看,下载,上传等功能,这篇文章主要介绍了python3中http协议提供文件服务器功能,需要的朋友可以参考下
    2023-06-06
  • django orm 通过related_name反向查询的方法

    django orm 通过related_name反向查询的方法

    今天小编就为大家分享一篇django orm 通过related_name反向查询的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-12-12
  • python数据处理67个pandas函数总结看完就用

    python数据处理67个pandas函数总结看完就用

    这篇文章主要介绍了python数据处理67个pandas函数的梳理总结,看完就可以去用了,有需要的朋友可以借鉴参考下,希望能够有所帮助
    2021-11-11
  • Python(wordcloud)如何根据文本数据(.txt文件)绘制词云图

    Python(wordcloud)如何根据文本数据(.txt文件)绘制词云图

    这篇文章主要给大家介绍了关于Python(wordcloud)如何根据文本数据(.txt文件)绘制词云图的相关资料,词云Wordcloud是文本数据的一种可视化表示方式,它通过设置不同的字体大小或颜色来表现每个术语的重要性,需要的朋友可以参考下
    2024-05-05
  • Python中数组遍历的方法总结

    Python中数组遍历的方法总结

    数组是编程中经常使用的数据结构,用于存储和操作一组元素,Python提供了多种方法来遍历数组,本文将深入探讨这些方法,提供详细的示例代码,希望对大家有所帮助
    2023-11-11
  • pandas把dataframe转成Series,改变列中值的类型方法

    pandas把dataframe转成Series,改变列中值的类型方法

    下面小编就为大家分享一篇pandas把dataframe转成Series,改变列中值的类型方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-04-04
  • 解决Django中修改js css文件但浏览器无法及时与之改变的问题

    解决Django中修改js css文件但浏览器无法及时与之改变的问题

    今天小编就为大家分享一篇解决Django中修改js css文件但浏览器无法及时与之改变的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08

最新评论