使用 Python 将 PowerPoint 转换为 Word 文档 - 详解

news/2026/1/21 20:12:24/文章来源:https://www.cnblogs.com/gccbuaa/p/19513942

在日常工作中,我们经常需要将 PowerPoint 演示文稿内容转换为 Word 文档,以便于:

  • 整理会议纪要:将幻灯片内容整理成文档便于分发和归档。
  • 制作培训材料:将演示文稿内容编辑为可打印文档。
  • 内容再利用:将幻灯片内容嵌入报告或其他文档中。

手动操作时,通常需要先将每页幻灯片截图或复制粘贴,非常繁琐。本文将介绍如何使用 Free Spire.Presentation for Python 和 Free Spire.PDF for Python,通过 Python 自动完成 PowerPoint 到 Word 的转换,并确保排版尽量保留。

更多技术干货资料:https://github.com/encode-studio-fe/natural_traffic/wiki/scan_material9

1. 安装依赖

pip install spire.presentation.free spire.pdf.free

2. 将 PowerPoint 转换为 PDF

为了实现 Word 可编辑输出,我们先将 PPTX 文件转换为 PDF。这一步可以保证幻灯片的排版在 Word 中尽量保持一致。

from spire.presentation import Presentation, FileFormat
import os
input_ppt = "Sample.pptx"
temp_pdf = "output/temp.pdf"
# 加载 PowerPoint 文件
presentation = Presentation()
presentation.LoadFromFile(input_ppt)
# 保存为 PDF
presentation.SaveToFile(temp_pdf, FileFormat.PDF)

关键步骤解析

  • 创建 Presentation 对象:用于加载 PPT/PPTX 文件。
  • LoadFromFile():加载本地幻灯片文件。
  • SaveToFile():将演示文稿保存为 PDF 格式,指定 FileFormat.PDF

通过这一步,我们就得到了一个中间 PDF 文件,下一步可以将其转换为 Word。


3. 将 PDF 转换为 Word 文档

from spire.pdf import PdfDocument, FileFormat as PdfFileFormat
output_docx = "output/output.docx"
# 加载 PDF 文件
pdf = PdfDocument()
pdf.LoadFromFile(temp_pdf)
# 保存为 Word 文档
pdf.SaveToFile(output_docx, PdfFileFormat.DOCX)

关键步骤解析

  • PdfDocument 对象:用于操作 PDF 文件。
  • LoadFromFile():加载刚才生成的 PDF 文件。
  • SaveToFile():将 PDF 内容转换为 Word 格式(DOCX),尽量保持原有排版。

经过这一步,我们就完成了 PowerPoint 到 Word 的转换。

转换效果:


4. 删除临时 PDF 文件

为了保持文件夹整洁,可以在转换完成后删除中间生成的 PDF 文件。

if os.path.exists(temp_pdf):os.remove(temp_pdf)

说明

  • 使用 os.path.exists() 判断文件是否存在。
  • 使用 os.remove() 删除文件,避免占用空间。

5. 总结与扩展

通过本文的方法,我们实现了:

  • 全自动转换:无需手动复制粘贴幻灯片内容。
  • 保持排版:PDF 中间格式能较好地保留原 PPT 样式。
  • 适合批量处理:可在 Python 脚本中循环处理多个 PPT 文件。

(1)为什么使用 PDF 作为中间格式?

直接将 PPT 转 Word 会丢失部分排版或格式。通过 PDF 作为中间格式,可以最大程度保留幻灯片的视觉效果,同时兼容 Word 输出。

(2)可扩展场景

  • 批量转换:结合 os.listdir() 遍历文件夹,实现一次性批量处理。
  • 自动命名:根据 PPT 文件名自动生成 Word 文件名。
  • 集成到业务流程:例如会议结束后自动生成 Word 纪要,方便分发和归档。

关键类与方法总结

类 / 方法说明
Presentation表示 PowerPoint 演示文稿对象
Presentation.LoadFromFile()加载 PPT/PPTX 文件
Presentation.SaveToFile()将 PPT 保存为指定格式(如 PDF)
PdfDocument表示 PDF 文档对象
PdfDocument.LoadFromFile()加载 PDF 文件
PdfDocument.SaveToFile()将 PDF 保存为 Word(DOCX)或其他格式
os.path.exists()判断文件是否存在
os.remove()删除文件

总结

本文演示了如何使用 Spire.Presentation 与 Spire.PDF for Python 将 PowerPoint 演示文稿自动转换为 Word 文档。通过 PDF 中间格式,不仅保留了幻灯片的排版效果,还可以在 Python 脚本中实现批量处理,适合会议纪要整理、培训资料生成以及文档归档等多种业务场景。

掌握这些核心类和方法后,你可以轻松实现 PowerPoint 到 Word 的自动化转换,提高工作效率,减少重复操作。

更多技术干货资料,这里:https://github.com/encode-studio-fe/natural_traffic/wiki/scan_material9

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1196134.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SDK location not found. Define a valid SDK location with an ANDROID_HOME environment variable or by

Android React Native 异常处理 异常信息 FAILURE: Build failed with an exception.* Where: Build file D:\Git\Tencent\odin-client\android\build.gradle line: 25* What went wrong: A problem occurred evaluating root project odin-client. > Failed to apply plu…

论文重复率突破30%?5个实用策略迅速达标

学术论文重复率超标是研究者常见的挑战,当查重结果显示超过30%时,建议采用以下5种核心策略进行优化处理:运用语义替换工具对原有表述进行创新性重构;对文章框架进行系统性调整以改变内容呈现顺序;将直接引文转换为释义…

智能降重新体验:8款AI论文查重工具实测对比

在学术写作过程中,查重率往往成为研究者必须面对的关键指标,既反映了学术规范性要求,又可能带来修改压力。为有效应对这一挑战,当前已有多种智能辅助工具可供选择,能够帮助用户在保持学术严谨性的前提下优化文本原创性…

高效论文查重:8款AI工具功能与改写效果评测

学术写作中,查重率是衡量研究规范性的重要指标,但也常引发文本修改的困扰。现代自然语言处理技术驱动的智能工具能够精准识别文本相似度,并通过语义保留的重构算法提升内容原创性。这类解决方案既满足学术机构的规范性要求,又能显…

A problem occurred starting process ‘command ‘bash‘‘

Android React Native 异常处理 异常信息 > Task :react-native-audio-api:downloadPrebuiltBinaries FAILED> Task :posthog-react-native-session-replay:generateCodegenSchemaFromJavaScript …

hipDF AMD GPU 支持的Pandas,类似cuDF

AMD 有完全对标 CUDA 的开源异构计算方案 ROCm(Radeon Open Compute Platform),核心由 HIP 编程接口、编译器 / 库 / 运行时及工具链组成,可替代 CUDA 用于 HPC、AI 训练推理与通用并行计算。 关键优势与限制优势开…

洛谷B3731 [信息与未来 2017] 房屋积水 题解

本文已同步至洛谷专栏。 思路 第一步肯定是处理出 \(R\) 数列和 \(a\) 数列。 接着对于每个 \(i \in [1,n]\),考虑位置 \(i\) 上面水的高度。 \(i\) 上面水的高度一定是左边有一个 \(j<i\) 且 \(a_j>a_i\) 的 \…

大数据领域数据中台的航空行业运营优化

大数据领域数据中台的航空行业运营优化 关键词:数据中台、航空运营优化、实时数据处理、主数据管理、机器学习预测、数字化转型、智能决策支持 摘要:本文深入探讨数据中台在航空行业运营优化中的核心价值与实施路径。通过构建航空数据中台的技术架构,解析数据采集治理、实时…

一些经常出现的主题词用简写,引言和正文翻译部分可以找一些英语时态技巧

一些经常出现的主题词用简写,类似倒伏甘蔗、螺旋式扶蔗器、质心垂直高度这些词,翻译时候把这些主题词用字母替换,引言和正文翻译部分可以找一些英语时态技巧,英文翻译后再翻译成中文看下语言意思有没有变,有变的可…

2026板材厂家推荐榜:韩氏/全屋定制/环保/绿色/健康/儿童房/厨房/卧室/衣柜/卫浴/装修/家具/家居/工装/板材/家具板,韩氏板材33载匠心领衔

在家居消费升级浪潮下,环保板材与全屋定制需求持续攀升,优质板材企业凭借技术创新与供应链优势脱颖而出。本次梳理2026年行业优质企业,聚焦环保性能、生产实力与服务体系,为家居选材提供参考。 推荐企业一:韩氏新…

关于spfa,它又活了

前言 此文章纯娱乐,不喜勿喷。 此文章涉及到部分代码,建议先 AC\[NOI2018\] 归程后再看此文章。 众所周知,spfa 的死因是 2018 年 7 月 19 日,某位同学在 NOI Day 1 T1 归程一题里非常熟练地使用了一个广为人知的算…

AI导读AI论文: WAN: OPEN AND ADVANCED LARGE-SCALE VIDEO GENERATIVE MODELS - 教程

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

Spring AI学习:使用WSL2安装Ubuntu安装redis-8.4.0

背景: spring ai中提供了RAG功能接口,需要搭配向量数据库,我选择了最新版redis作为外部向量数据库 (redis7可以安装stack包来支持向量存储,redis8本身已集成向量存储功能) (redis8.0.0已有windows适配版本,red…

2026最新环保板材\_实木板\_装饰板材\_欧松板\_柜子定制板材\_全屋定制板材\_多层板\_生态板\_木纹板企业首选材推荐千山板材:质价比之选,这家品牌实力领跑

在家居装修与全屋定制领域,板材的环保性、稳定性与美学设计直接决定空间品质。2026年,以“高端产品+中端价格”为定位的千山板材凭借德国精工设备、欧洲原创设计与中国智能制造的深度融合,持续领跑行业,成为万千家…

洛谷P1090 [NOIP 2004 提高组] 合并果子 题解

P1090 NOIP 2004 提高组 合并果子 题解 此文章在洛谷上同步发表 题目大意 题目传送门 现在有 \(n\) 堆果子,每堆果子的重量为 \(a_i\),你要进行 \(n - 1\) 次合并。每次合并会把两堆果子合并成一堆果子,合并需要花费…

POS机的机制,以及流量是怎么传送的

从POS机的硬件/软件机制和交易数据的网络传输&#xff08;流量传送&#xff09; 两个核心部分&#xff0c;清晰地解析。第一部分&#xff1a;POS机的核心机制POS机&#xff08;销售终端机&#xff09;本质上是一台安全的、专用的金融交易计算机。它的机制可以分解为以下几个关键…

构建优雅的 Vue.js 表情包选择器:一个功能丰富且可定制的 Emoji Picker 组件

在当今的社交应用、聊天工具或评论系统中&#xff0c;表情符号&#xff08;Emoji&#xff09;已成为不可或缺的表达元素。一个好的表情选择器不仅能提升用户体验&#xff0c;还能让交互变得更加生动有趣。今天&#xff0c;我将分享一个我开发的 Vue.js Emoji Picker 组件&#…

扩充练习—有理函数

练习2.92 通过加入强制性的变量序扩充多项式程序包,使多项式的加法和乘法能对其有不同变量的多项式进行。 ;;其实就是实现多项式变量的转换 ;;比如多项式(y+1)x2也可以看作(x2)y+x^2 ;;两者是相同的,主要是看变量的不…

AI时代下的DBA、写作、学习和未来.md

AI率&#xff1a;本篇文章AI率约50%&#xff0c;与AI battle回合约30次 推荐理由&#xff1a;有一些对AI ops的思考和洞察&#xff0c;所以推荐 AI时代的写作 AI对写博客、写公众号的作者来说&#xff0c;可能是一个致命的打击&#xff0c;因为AI写作实在是太简单。因为我自己…

day7 454

day7 454Leetcode 454 四数相加Ⅱ unordered_map使用的练习,一次通过,但是定义了两个unordered_map,并且需要经过两次遍历,空间和时间消耗都增加了 int fourSumCount(vector<int>& nums1, vector<int…