首页 > 学院 > 开发设计 > 正文

使用 Aspose.Slide 获取PPT中的所有幻灯片的标题

2019-11-17 02:26:16
字体:
来源:转载
供稿:网友

使用 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.VEVb.com/gaoshang212/p/4440807.html


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表