C# 如何提取PPT文本和图片
PPT是一种常用的演示工具,在各行各业都扮演着不可或缺的作用。在处理办公文档的过程中会遇到需要提取文档文本或者图片的情况。如果需要操作的文档包含的文字和图片不是很多的时候,我们尚可手动一点点把内容复制粘贴整理出来,但对于较大的文档,文字和图片内容都比较多的情况,又该如何准确无误地处理?本篇文章提供了实现提取PPT文本和图片的方法。(本文转自:http://www.cnblogs.com/Yesi/p/7770802.html,经测试有效)
注意:要实现上述操作须使用组件Spire.Presentation,安装后添加引用dll文件,同时添加相应的命名空间。具体操作可参考下面的代码。
原PPT文档:
1.提取文本
全部代码如下:
using System; using System.Text; using Spire.Presentation; using System.IO; using System.Diagnostics; namespace ExtractText_PPT { class Program { static void Main(string[] args) { //创建一个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); } } } } //保存文档 File.WriteAllText("target.txt", sb.ToString()); Process.Start("target.txt"); } } }
提取出来的文本如下所示:
2.提取文本
2.1 提取全部文本
using Spire.Presentation; using System.Drawing; namespace ExtractImage_PPT { class Program { static void Main(string[] args) { //初始化一个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提取特定幻灯片的图片
using System.Drawing; using Spire.Presentation; namespace ExtractImageFromSpecialSlides_PPT { class Program { static void Main(string[] args) { //创建一个Presentation类实例,并加载文档 Presentation PPT = new Presentation(); PPT.LoadFromFile(@"C:\Users\Administrator\Desktop\sample.pptx"); //遍历文档,获取第四张幻灯片,提取图片 int i = 0; foreach (IShape s in PPT.Slides[3].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++; } } } } }
效果示例: