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++;
                }
            }

        }
    }
}

 效果示例:

 




 

猜你喜欢

转载自miaonly.iteye.com/blog/2408400
今日推荐