C#提取PPT文本和图片的实现方法
作者:E-iceblue 发布时间:2022-10-28 08:02:59
标签:C#,PPT
在图文混排的文档中,我们可以根据需要将文档中的文字信息或者图片提取出来,通过C#代码可以提取Word和PDF文件中的文本和图片,那么同样的,我们也可以提取PPT幻灯片当中的文本和图片。本篇文档将讲述如何使用C#来实现提取PPT文本和图片的操作。首先也是需要安装组件Spire.Presentation,然后添加引用dll文件到项目中。下面是主要的代码步骤。
原文档:
1. 提取文本
步骤一:创建一个Presentation实例并加载文档
Presentation presentation = new Presentation(@"C:\Users\Administrator\Desktop\sample.pptx", FileFormat.Pptx2010);
步骤二:创建一个StringBuilder对象
StringBuilder sb = new StringBuilder();
步骤三:遍历幻灯片及幻灯片中的图形,提取文本内容
foreach (ISlide slide in presentation.Slides)
{
foreach (IShape shape in slide.Shapes)
{
if (shape is IAutoShape)
{
foreach (TextParagraph tp in (shape as IAutoShape).TextFrame.Paragraphs)
{
sb.Append(tp.Text + Environment.NewLine);
}
}
}
}
步骤四:写入Txt文档
File.WriteAllText("target.txt", sb.ToString());
Process.Start("target.txt");
2. 提取图片
这里提取图片有两种情况,一种是提取整个文档中的所有图片,另外一种是只提取文档中某一特定幻灯片中的图片。
2.1提取所有图片
步骤一:初始化一个Presentation类实例,并加载文档
Presentation ppt = new Presentation();
ppt.LoadFromFile(@"C:\Users\Administrator\Desktop\sample.pptx");
步骤二:遍历文档中图片,提取图片并保存
for (int i = 0; i < ppt.Images.Count; i++)
{
Image image = ppt.Images[i].Image;
image.Save(string.Format(@"..\..\Images{0}.png", i));
}
提取的图片已保存到项目文件夹下
2.2.提取特定幻灯片中的图片
步骤一:创建一个Presentation类实例,并加载文档
Presentation PPT = new Presentation();
PPT.LoadFromFile(@"C:\Users\Administrator\Desktop\sample.pptx");
步骤二:获取第三张幻灯片,提取并保存图片
int i = 0;
foreach (IShape s in PPT.Slides[2].Shapes)
{
if (s is SlidePicture)
{
SlidePicture ps = s as SlidePicture;
ps.PictureFill.Picture.EmbedImage.Image.Save(string.Format("{0}.png", i));
i++;
}
if (s is PictureShape)
{
PictureShape ps = s as PictureShape;
ps.EmbedImage.Image.Save(string.Format("{0}.png", i));
i++;
}
}
提取的第三张幻灯片中的图片已保存至指定位置
上文演示了如何提取文本和图片,步骤比较简单实用,希望对你有所帮助,感谢阅读!
来源:http://www.cnblogs.com/Yesi/archive/2017/11/02/7770802.html


猜你喜欢
- Kotlin Flow在开发中的常用场景使用大家了解了 Flow 的创建与接收流程,了解 SharedFlow 创建的几种方式,各个参数的用
- 1、在Android studio中进行打开一个项目的文件之后,然后进行点击Android stuio中菜单中的“tools”的选项。在弹出
- 三态的基本概念1, 临时状态(Transient):也叫自由态,只存在于内存中,而在数据库中没有相应数据。用new创建的对象,它没有持久化,
- 在许多Java面试中,我们经常会看到关于Java类加载机制的考察,例如下面这道题:class Grandpa{static{System.o
- 相信很多人都了解c#语言,但是对于c#语言编写应用程序的经验不够多,所以经常为没有实例练习而烦恼吧。今天小编给大家介绍下C#里的多线程技术。
- C#生成指定范围内的不重复随机数// Number随机数个数// minNum随机数下限// maxNum随机数上限public int[]
- 1.根据单个分隔字符用split截取例如string st="GT123_1";string[] sArray=st.s
- 本文实例为大家分享了java桌球小游戏的具体代码,供大家参考,具体内容如下源码:import java.awt.*;import javax
- java 算法之希尔排序一、思想 希尔排序:使数组中任意间隔为h的元素都是有序的。在进行排序的时候,如果h很大,我们就能将元素移动到很远的地
- 1、SpringMVC验证@Validated的使用第一步:编写国际化消息资源文件编写国际化消息资源ValidatedMessage.pro
- 实例描述现有某班学生的两份成绩,两份成绩中存在一些不一致的记录。需借助于编程方法找出这些不一致的记录。实例代码using System;us
- SpringBoot获取所有接口的路由@Autowired WebApplicationContext appli
- 构造方法以及参数:PageView可用于Widget的整屏滑动切换,如当代常用的短视频APP中的上下滑动切换的功能,也可用于横向页面的切换,
- 关于这个的例子其实网上已经有这方面的资料了,但是为了文章的完整性,还是觉得有必要讲解.我们先来看一下效果:  
- 前言只是最近碰到有这方面的项目需求,所以简单 Mark 下本文。下面的示例是参考过他人分享的文章,之后本人再自行实践、调整和测试过的,希望对
- 最近做通讯录小屏机 联系人姓名显示--长度超过边界字体变小/** * 自定义TextView,文本内容自动调整字体大小以适应TextVie
- Profile多环境配置我们在开发项目时,通常同一套程序会被发布到几个不同的环境,比如:开发、测试、生产等。其中每个环境的数据库地址、red
- 实例如下:public class CustomScrollView extends ScrollView {private Gesture
- 环境信息名称版本号Spring Boot2.4.5Idea2021.3.2服务端实现导入依赖<dependency>  
- package com.java.db;import java.lang.reflect.Constructor;import java.l