中的所有幻灯片的标题

王朝学院·作者佚名  2016-05-20  
宽屏版  字体: |||超大  

使用 aspose.Slide 获取PPT中的所有幻灯片的标题本文使用的是第三方类库 Aspose.Slide,如果你使用的是Openxml可以看下面的链接,原理是相同的,这个文章里也有对Xml标签的详细解释。

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

原理:

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

简单说,一个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

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
© 2005- 王朝网络 版权所有