it编程 > 编程语言 > Asp.net

C#代码实现轻松提取PPT文本与图片

4人参与 2026-09-21 Asp.net

在开发场景中,我们可能会遇到 ppt 文档内容解析 的需求,比如批量提取课件、报告中的文本内容归档,批量导出 ppt 内配图做素材整理等。

原生 .net 框架并未提供直接解析 ppt 文件的原生 api,手动操作 openxml 格式代码冗余、逻辑复杂,且需要处理大量格式兼容问题。而 free spire.presentation for .net 是一款轻量、免费的 ppt 解析操作库,支持 .net 全系列版本,能够快速实现 ppt 的文本读取、图片提取、文档解析等核心功能,大幅降低开发成本。

本文将基于 .net10 语法规范 ,使用 free spire.presentation 实现两大核心功能:

环境准备

开发环境

安装 nuget 依赖

项目需要引入 free spire.presentation 核心包,在 nuget 包管理器中搜索安装,或通过命令行安装:

install-package freespire.presentation

该包为免费开源版本,满足日常非商用、批量解析 ppt 的开发需求,无强制水印、无营销绑定。

提取 ppt 全部文本

功能说明

遍历 ppt 中所有幻灯片、所有形状组件,筛选文本容器组件,逐段读取文本内容,最终整合所有内容并导出为本地 txt 文档。代码采用 .net10 顶级语句、隐式命名空间等极简特性精简,代码更简洁易读。

完整代码

using spire.presentation;
using system.text;
// 初始化ppt文档实例并加载目标文件
using presentation presentation = new();
presentation.loadfromfile("island.pptx");
// 初始化文本拼接容器
stringbuilder textbuilder = new();
// 遍历所有幻灯片
foreach (islide slide in presentation.slides)
{
    // 遍历单页幻灯片所有组件
    foreach (ishape shape in slide.shapes)
    {
        // 筛选文本形状组件并读取段落文本
        if (shape is iautoshape autoshape)
        {
            foreach (textparagraph paragraph in autoshape.textframe.paragraphs)
            {
                textbuilder.appendline(paragraph.text);
            }
        }
    }
}
// 导出文本到本地txt文件
file.writealltext("extracttext.txt", textbuilder.tostring());

代码核心逻辑解析

  1. 资源自动释放 :采用 .net10 支持的 using 变量声明 语法,无需手动调用 dispose,程序执行完毕后自动释放 ppt 文件资源,避免文件占用、内存泄漏问题。
  2. 类型模式匹配 :通过 is 变量声明 模式匹配,一步完成类型判断与强制转换,替代传统的先判断类型、再强制转换的冗余写法,是 .net10 推荐的最优语法。
  3. 分层遍历逻辑 :ppt 文本存储层级为 幻灯片(slide) -> 形状组件(shape) -> 文本段落(textparagraph),通过三层遍历可精准捕获页面内所有文本(标题、正文、备注文本)。
  4. 文本批量导出 :使用 stringbuilder 高效拼接文本,避免字符串频繁拼接的性能损耗,最终一次性写入本地文件。

提取 ppt 内嵌所有图片

功能说明

直接读取 ppt 文档的全局图片资源集合,批量遍历所有内嵌图片,统一导出为 png 格式图片文件,自动命名归档,适配批量素材提取场景。

完整代码

using spire.presentation;
using spire.presentation.collections;
// 初始化并加载ppt文档
using presentation presentation = new();
presentation.loadfromfile("template.pptx");
// 获取ppt所有内嵌图片集合
imagecollection imagecollection = presentation.images;
// 遍历图片集合并批量导出
for (int i = 0; i < imagecollection.count; i++)
{
    // 按索引命名保存图片,避免文件名重复
    string savepath = path.combine("presentation", $"images{i}.png");
    // 创建存储目录(不存在则自动创建)
    directory.createdirectory(path.getdirectoryname(savepath)!);
    // 保存图片到本地
    imagecollection[i].image.save(savepath);
}

代码核心逻辑解析

  1. 全局图片读取 :不同于逐页遍历幻灯片的方式,直接通过 presentation.images 获取文档所有内嵌图片,无需重复遍历页面,执行效率更高。
  2. 目录自动创建 :新增目录判断逻辑,自动检测图片存储文件夹是否存在,不存在则创建,避免因目录缺失导致的保存失败问题,提升代码健壮性。
  3. .net10 字符串优化 :使用字符串插值替代传统 string.format,语法更简洁、可读性更强,是新版 .net 的推荐写法。
  4. 安全资源释放 :using 语法托管 ppt 实例生命周期,确保文件读取完成后资源彻底释放。

关键注意事项

总结

通过 freespire.presentation 库,我们可以用极简的 .net10 代码快速实现 ppt 文本、图片的批量提取功能,彻底规避了原生 openxml 解析的复杂逻辑。

整套代码轻量化、无冗余、不依赖第三方软件,可直接应用于 文档批量解析、内容归档、素材提取、自动化办公 等业务场景,是 .net 平台处理 ppt 基础解析需求的高效方案。

到此这篇关于c#代码实现轻松提取ppt文本与图片的文章就介绍到这了,更多相关c#提取ppt文本与图片内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

您想发表意见!!点此发布评论

推荐阅读

C#代码实现使用条件格式为Excel隔行设置颜色

09-20

C#代码实现检测并删除Word文档中的VBA宏代码

09-20

C#从Word文档中提取表格数据的常见方法详解

09-18

C#调用系统图标的几种实现方案

09-16

使用C# WinForm实现一个TCP服务端与客户端

09-16

C#中SerialPort 串口通信发送与接收完整指南

09-15

猜你喜欢

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论