用Python将Office文档(Word、Excel、PowerPoint)批量转换为PDF

server/2024/10/25 5:31:54/

在处理不同格式的Office文档(如Word、Excel和PowerPoint)时,将其转换为PDF格式是常见的需求。这种转换不仅确保了文件在不同设备和操作系统间的一致性显示,而且有助于保护原始内容不被轻易修改,非常适合于正式报告、提案或资料归档等场景。通过使用Python,开发者可以编写简洁高效的脚本来自动完成这些任务,满足企业或个人对于文档管理的需求。本文将介绍如何使用Python代码实现Word、Excel和PowerPoint文档到PDF文件的批量转换,同时提供用Python将Office文档合并转换为PDF的方法。

文章目录

    • 将Word、Excel和PowerPoint文档批量分别转换为PDF文档
    • 将Word、Excel、PowerPoint和PDF文档合并转换为单个PDF

本文所使用的方法需要用到Spire.Office for Python,PyPI:pip install spire.office

将Word、Excel和PowerPoint文档批量分别转换为PDF文档

我们可以通过判断文档的文件后缀名,然后将对应的文档分别用Document类(Word)、Workbook类(Excel)和Presentation类(PowerPoint)的LoadFromFile方法载入,再分别使用SaveToFile(string: fileName, FileFormat.PDF)方法转换并保存为PDF文档,从而实现Office文档到PDF文件的批量转换。以下是详细操作步骤:

  1. 导入所需模块。
  2. 定义要处理的文件夹路径,获取指定类型的文件并排序。
  3. 创建一个PdfDocument对象。
  4. 遍历文件列表的文件,根据后缀名判断文件类型。
  5. 根据文件类型创建DocumentWorkbookPresentation对象。
  6. 使用LoadFromFile方法载入文档。
  7. 使用SaveToFile方法将文档转换为PDF并保存。
  8. 释放资源。

代码示例

python">word">from spire.pdf word">import PdfDocument
word">from spire.doc word">import Document
word">from spire.xls word">import Workbook
word">from spire.presentation word">import Presentation
word">from spire.doc word">import FileFormat word">as wFileFormat
word">from spire.xls word">import FileFormat word">as eFileFormat
word">from spire.presentation word">import FileFormat word">as pFileFormat
word">import os# 定义要处理的文件夹路径
folderPath = "Documents/"
# 获取所有指定类型的文件并排序
extensions = [".doc", ".docx", ".xls", ".xlsx", ".ppt", ".pptx"]
files = sorted([os.path.join(folderPath, f) word">for f word">in os.listdir(folderPath) word">if f.lower().endswith(tuple(extensions))])# 创建一个PdfDocument对象
pdf = PdfDocument()# 遍历文件列表
word">for file word">in files:extension = os.path.splitext(file)[1].lower()word">if extension word">in [".doc", ".docx"]:# 创建Document对象doc = Document()# 载入Word文档doc.LoadFromFile(file)# 将Word文档转换为PDFdoc.SaveToFile(f"output/Documents/{os.path.basename(file)}.pdf", wFileFormat.PDF)doc.Close()word">if extension word">in [".xls", ".xlsx"]:# 创建Workbook对象workbook = Workbook()# 载入Excel文件workbook.LoadFromFile(file)# 将Excel文件转换为PDFworkbook.SaveToFile(f"output/Documents/{os.path.basename(file)}.pdf", eFileFormat.PDF)workbook.Dispose()word">if extension word">in [".ppt", ".pptx"]:# 创建Presentation对象presentation = Presentation()# 载入PowerPoint文件presentation.LoadFromFile(file)# 将PowerPoint文件转换为PDFpresentation.SaveToFile(f"output/Documents/{os.path.basename(file)}.pdf", pFileFormat.PDF)presentation.Dispose()# 关闭PdfDocument对象
pdf.Close()

结果
Python批量转换Office文档为PDF

将Word、Excel、PowerPoint和PDF文档合并转换为单个PDF

除了批量分别转换Office文档外,我们还可以将各种类型的文档合并转换到同一个PDF文件中。以下是操作步骤:

  1. 导入所需模块。
  2. 定义要处理的文件夹路径,获取指定类型的文件并排序。
  3. 创建一个PdfDocument对象pdf用于储存最终PDF文档。
  4. 创建一个新的PdfDocument对象temPdf和一个临时PDF文档地址用于转换出的临时PDF文档。
  5. 遍历文件列表的文件,根据后缀名判断文件类型。
  6. 根据文件类型创建DocumentWorkbookPresentation对象,并使用LoadFromFile方法载入文档。
  7. 使用SaveToFile方法将文档转换为PDF并保存到临时PDF路径。
  8. 使用temPdf.LoadFromFile()方法载入临时PDF,并使用pdf.AppendPage(temPdf)将其页面插入到最终PDF中。
  9. 处理完成后,使用pdf.SaveToFile()方法保存最终PDF文档。
  10. 清理临时文件并释放资源。

代码示例

python">word">from spire.pdf word">import PdfDocument
word">from spire.doc word">import Document
word">from spire.xls word">import Workbook
word">from spire.presentation word">import Presentation
word">from spire.doc word">import FileFormat word">as wFileFormat
word">from spire.xls word">import FileFormat word">as eFileFormat
word">from spire.presentation word">import FileFormat word">as pFileFormatword">import os# 指定要处理的文件夹路径
folderPath = 'Documents/'
# 获取所有指定类型的文件并排序
extensions = ['.doc', '.docx', '.xls', '.xlsx', '.ppt', '.pptx']
files = sorted([os.path.join(folderPath, f) word">for f word">in os.listdir(folderPath) word">if f.lower().endswith(tuple(extensions))])# 创建一个PdfDocument对象
pdf = PdfDocument()
# 创建一个临时PDF和一个Stream对象
temPdf = PdfDocument()
temPdfPath = 'temp.pdf'# 遍历文件列表
word">for file word">in files:extension = os.path.splitext(file)[1].lower()word">if extension word">in ['.doc', '.docx']:# 加载Word文档doc = Document()doc.LoadFromFile(file)# 保存为临时PDFdoc.SaveToFile(temPdfPath, wFileFormat.PDF)# 载入临时PDF并将其页面添加到最终PDF中temPdf.LoadFromFile(temPdfPath)pdf.AppendPage(temPdf)doc.Close()  # 显式关闭文档word">elif extension word">in ['.xls', '.xlsx']:# 加载Excel工作簿workbook = Workbook()workbook.LoadFromFile(file)# 保存为临时PDFworkbook.SaveToFile(temPdfPath, eFileFormat.PDF)# 载入临时PDF并将其页面添加到最终PDF中temPdf.LoadFromFile(temPdfPath)pdf.AppendPage(temPdf)workbook.Dispose()  # 显式关闭工作簿word">elif extension word">in ['.ppt', '.pptx']:# 加载PowerPoint演示文稿presentation = Presentation()presentation.LoadFromFile(file)# 保存为临时PDFpresentation.SaveToFile(temPdfPath, pFileFormat.PDF)# 载入临时PDF并将其页面添加到最终PDF中temPdf.LoadFromFile(temPdfPath)pdf.AppendPage(temPdf)presentation.Dispose()  # 显式关闭演示文稿word">elif extension == '.pdf':# 如果已经是PDF,则直接载入并将其页面添加到最终PDF中temPdf.LoadFromFile(file)pdf.AppendPage(temPdf)# 保存最终PDF
outputPath = "output/CombinedPDF.pdf"
pdf.SaveToFile(outputPath)# 清理临时文件
word">if os.path.exists('temp.pdf'):os.remove('temp.pdf')# 释放资源
pdf.Close()
temPdf.Close()

结果
Python合并转换Office文档为PDF

本文演示了如何使用Python将Word、Excel和PowerPoint文档批量分别转换为PDF文档,以及将它们合并转换为单个PDF。Spire.Office for Python还支持进行许多其他格式的转换,请前往官网了解。

申请免费License


http://www.ppmy.cn/server/134617.html

相关文章

初识jsp

学习本章节前建议先安装Tomcat web服务器:tomcat下载安装及配置教程_tomcat安装-CSDN博客 1、概念 我的第一个JSP程序: 在WEB-INF目录之外创建一个index.jsp文件,然后这个文件中没有任何内容。将上面的项目部署之后,启动服务器…

Java八股文-Mysql

Mysql: 1.Mysql数据库索引的类型有哪些? 普通索引唯一索引主键索引全文索引组合索引 2.主键索引,唯一索引区别: 唯一索引列允许空值,而主键列不允许空值 (MySQL 允许在唯一索引列中包含多个 NULL 值&am…

python-PyQt项目实战案例:制作一个视频播放器

文章目录 1. 关键问题描述2. 通过OpenCV读取视频/打开摄像头抓取视频3. 通过PyQt 中的 QTimer定时器实现视频播放4. PyQt 视频播放器实现代码参考文献 1. 关键问题描述 在前面的文章中已经分享了pyqt制作图像处理工具的文章,也知道pyqt通过使用label控件显示图像的…

RK3588开发笔记-麦克风阵列多pdm通道合并成一个声卡

目录 前言 一、RK3588音频架构概述 二、PDM简介 PDM基本原理 PDM的工作流程 PDM接口信号 三、原理图连接 四、设备树配置 五、设备调试 总结 前言 在音频设备的开发中,特别是在多通道音频数据处理场景中,如何将多个PDM(Pulse Density Modulation)通道整合成一个声卡…

DDD和DSSA

DDD(Domain-Driven Design)和DSSA(Domain-Specific Software Architecture)是两种与软件设计和架构相关的方法论。它们各自有不同的焦点和应用场景。下面是对它们的简要介绍和比较: 1. DDD(Domain-Driven Design) 定义:DDD是一种软件设计理念,旨在通过深刻理解业务领…

HTTP 请求的请求体是什么

HTTP 请求的请求体(request body)是指在 HTTP 请求中除了请求行(request line)、请求头(headers)之外的实际数据部分。请求体通常包含用于向服务器发送数据的信息,这些信息可以是表单数据、JSON 对象、XML 文档或其他任何形式的数据。 http请求一般包含的内容 HTTP(超…

【C++】——list 容器的解析与极致实现

人的一切痛苦,本质上都是对自己的无能的愤怒。 —— 王小波 目录 1、list 介绍 2、list的使用 2.1 list 的构造 2.2 iterator 的使用 2.3 list 的修改 2.4一些特殊接口 2.5 迭代器失效问题 3、实现list 3.1底层结构 结点类 list类 迭代器类 3.2功能接…

钡铼技术R40B多协议转换助力智慧工厂自动化

随着工业4.0的迅猛发展,智慧工厂已成为制造业转型升级的重要目标。在这一背景下,数据的高效采集、处理与传输至关重要。钡铼技术推出的R40B多协议转换器,凭借其强大的功能与灵活的应用场景,为智慧工厂的自动化提供了有力支持。 R…