你的位置:首页 > ASP.net教程

[ASP.net教程]使用 Aspose.Slide 获取PPT中的所有幻灯片的标题


本文使用的是第三方类库 Aspose.Slide,如果你使用的是Open

如何:获取演示文稿中的所有幻灯片的标题

原理:

  原理说白了很简单,明白了原理大家都写得出来。

  简单说,一个PPT里有多个幻灯片,一个幻灯片里有多个Shape, Shape会有一个Plcaeholder,Placeholder的Type属性来决定是否是标题。

  Aspose的对像 IPresentation->Slide->Shape->PlaceHolder

 

代码:

判断Shape是一个Title,采用了扩展方法的方式:

  public static class ShapeExtension  {    public static bool IsTitleShape(this IShape p_shape)    {      if (p_shape == null)      {        return false;      }      var placeholder = p_shape.Placeholder;      if (placeholder != null)      {        switch (placeholder.Type)        {          // Any title shape.          case PlaceholderType.Title:          // A centered title.          case PlaceholderType.CenteredTitle:            return true;          default:            return false;        }      }      return false;    }  }

View Code

我们定义一个SlideTitle来存放

  public class SlideTitle  {    public int PageNum { get; set; }    public int TitleCount { get; set; }    public string[] Titles { get; set; }  }

View Code

再扩展IPresentation对象,增加一个GetTitles的方法

  public static class PresentationExtension  {    public static IEnumerable<SlideTitle> GetTitles(this IPresentation p_presentation)    {      var presentation = p_presentation;      if (presentation != null)      {        foreach (var slide in presentation.Slides)        {          List<string> titles = new List<string>();          foreach (var shape in slide.Shapes)          {            if (!shape.IsTitleShape())            {              continue;            }            var autoShape = shape as AutoShape;            if (autoShape == null)            {              continue;            }            titles.Add(autoShape.TextFrame.Text);          }          var title = new SlideTitle()          {            PageNum = slide.SlideNumber,            TitleCount = titles.Count,            Titles = titles.ToArray()          };          yield return title;        }      }    }  }

 

总结:

  这东西本身,很简单的东西,主要就是判断哪个属性。幸好查到了微软的那篇文章。

 

本文原创

转载请注明出处:http://www.cnblogs.com/gaoshang212/p/4440807.html