Python 高效实现 Word 转 PDF:告别 Office 依赖

在工作中,经常会遇到需要把 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% doc.JPEGQuality = 40 # 保留原始图像质量 (图片质量参数:0-100) # doc.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 转换,并且转换选项灵活,可根据具体需求调整。上述方法适合在报表生成、文档归档或在线文档处理等场景中应用。

Read more

Python pytest 框架通关指南:自动化测试不再难

Python pytest 框架通关指南:自动化测试不再难

文章目录 * 一、pytest介绍 * 1.1 pytest的优点 * 1.2 主流Python接口自动化框架对比 * 二、安装 * 三、用例运行规则 * 四、pytest命令参数 * 4.1 常见参数 * 4.2 命令使用示例 * 五、pytest配置文件 * 5.1 常见配置选项 * 5.2 配置示例 * 六、前后置操作 * 6.1 setup_method 和 teardown_method * 6.2.setup_class 和 teardown_class * 七、断言 * 7.1 基本数据类型断言:

By Ne0inhk
机器学习:数据清洗与预处理 | Python

机器学习:数据清洗与预处理 | Python

个人主页-爱因斯晨 文章专栏-Python学习 文章目录 * 个人主页-爱因斯晨 * 文章专栏-Python学习 * 前言 * 了解数据清洗 * 数据清洗的步骤 * 1. 环境准备与库导入 * 2. 数据加载 * 3. 数据初探与理解 * 4. 缺失值处理 * 5. 重复值处理 * 6. 异常值处理 * 7. 数据类型转换 * 8. 数据标准化 / 归一化(预处理) * 实例实践 * 总结 前言 我们不论在学习机器学习还是数据分析中,都会涉及很多数据。但原数据不可避免有很多杂志,为了确保结果的准确性,我们需要首先进行数据清洗和预处理。 了解数据清洗 数据清洗就像是一场数据的“大扫除”。它是从原始数据中找出并修正那些错误、不完整、重复或不一致的数据。通过数据清洗,能显著提升数据质量,为后续数据分析、挖掘和建模等工作提供准确、可靠、干净的数据基础,从而让基于数据得出的结论更具可信度和价值。 数据清洗的步骤 1. 环境准备与库导入

By Ne0inhk
ksycopg2实战:Python连接KingbaseES数据库的完整指南

ksycopg2实战:Python连接KingbaseES数据库的完整指南

摘要:本文详细介绍了KingbaseES数据库的Python专用驱动ksycopg2的使用方法。内容涵盖驱动安装、连接配置、CRUD操作等基础功能,以及事务管理、连接池等高级特性。ksycopg2作为遵循Python DBAPI 2.0规范的线程安全适配器,针对KingbaseES进行了深度优化,支持数据类型映射、批量操作等特性。文章提供了完整的业务表创建示例和员工管理系统实战案例,包含环境配置、性能优化建议和常见问题解决方案,帮助开发者快速掌握该驱动的使用技巧。通过详细的代码示例,展示了如何高效安全地操作KingbaseES数据库。 一、安装ksycopg2:KingbaseES的Python ksycopg2是 专为KingbaseES数据库设计的Python适配器 ,完全遵循Python DB API 2.0规范,具有线程安全的特性。它不仅提供了高效的数据操作能力,还支持KingbaseES特有的功能特性。 与通用的PostgreSQL驱动psycopg2相比,ksycopg2针对KingbaseES进行了深度优化,特别是在数据类型映射、事务处理和高级功能支持方面表现更加

By Ne0inhk
AI 的智能体专栏:手把手教你用豆包打造专属 Python 智能管家,轻松解决编程难题

AI 的智能体专栏:手把手教你用豆包打造专属 Python 智能管家,轻松解决编程难题

AI 的智能体专栏:手把手教你用豆包打造专属 Python 智能管家,轻松解决编程难题 AI 的智能体专栏:手把手教你用豆包打造专属 Python 智能管家,轻松解决编程难题,本文介绍了如何利用豆包平台打造专属Python智能管家。首先简述豆包平台的核心优势,接着说明创建前的准备工作,包括注册账号、明确定位和收集训练资料。随后详细讲解创建流程,从新建智能体、基础设置、能力配置到测试优化,还提及集成代码执行环境等高级功能扩展,以及使用技巧与实际应用案例。该智能官能解决多种Python编程问题,可提升学习效率和问题解决速度,是实用的个性化编程助手。 前言     人工智能学习合集专栏是 AI 学习者的实用工具。它像一个全面的 AI 知识库,把提示词设计、AI 创作、智能绘图等多个细分领域的知识整合起来。无论你是刚接触 AI 的新手,还是有一定基础想提升的人,都能在这里找到合适的内容。从最基础的工具操作方法,到背后深层的技术原理,专栏都有讲解,还搭配了实例教程和实战案例。这些内容能帮助学习者一步步搭建完整的 AI 知识体系,让大家快速从入门进步到精通,

By Ne0inhk