本文使用的是第三方类库 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;
}
}

我们定义一个SlideTitle来存放

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

再扩展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

使用 Aspose.Slide 获取PPT中的所有幻灯片的标题的更多相关文章

  1. 如何提取出ppt中的文字?

    最近在看一位老师的教学视频,视频里大部分的知识都记录在ppt里,于是很想将ppt中的文字提取出来,如果我一页一页地粘贴复制的话,效率低到吓人,因为一章的ppt有130多页,于是在网上搜索了一下方法,与 ...

  2. 怎么利用Aspose.Cells 获取excel 数据表中sheet的名称

    说明:开发环境 vs2012 asp.net mvc4 c# 利用Aspose.Cells 获取Excel数据表的sheet的名称,并把获取的名称赋值给easyUI 的combobox 1.运行效果 ...

  3. Office系列(2)---提取Office文件(Word、PPT)中的所有图片

    回顾一下上文结尾的问题:如何给文档设置一个合适的封面图?其中一个解决方案就是,获取Office文件内部的图片作为封面.这里就详细介绍下获取图片的几种方式,以及他们各自的优缺点. PS:因为之前用VST ...

  4. Java 在PPT中创建SmartArt图形、读取SmartArt图形中的文本

    一.概述及环境准备 SmartArt 图形通过将文字.图形从多种不同布局.组合来表现内容和观点的逻辑关系,能够快速.有效地传达设计者的意图和信息.这种图文表达的视觉表示形式常用于PPT,Word,Ex ...

  5. C# 处理PPT水印(三)—— 在PPT中添加多行(平铺)文本水印效果

    在PPT幻灯片中,可通过添加形状的方式,来实现类似水印的效果,可添加单一文本水印效果,即幻灯片中只有一个文本水印:也可以添加多行(平铺)文本水印效果,即幻灯片中以一定方式平铺排列多个文本水印效果.本文 ...

  6. 用poi替换ppt中的文字和图片

    try {            // 获取PPT文件             String pptModelPath =ConfigReadUtil.getInstance().getConfigI ...

  7. 三维场景如何嵌入到PPT中展示?

    今天要跟大家一起交流的大体内容如标题所示,日常生活中,ppt已经成为人们工作学习生活中不可或缺的工具之一,那么三维场景是如何在ppt中加载展示的呢?请大家慢慢往下看. 1.创建命令按钮和web bro ...

  8. C# / VB.NET 在PPT中创建、编辑PPT SmartArt图形

    本文介绍通过C#和VB.NET程序代码来创建和编辑PPT文档中的SmartArt图形.文中将分两个操作示例来演示创建和编辑结果. 使用工具:Spire.Presentation for .NET ho ...

  9. 如何获取url中的参数并传递给iframe中的报表

    在使用报表软件时,用户系统左边一般有目录树,点击报表节点就会在右侧网页的iframe中显示出报表,同时点击的时候也会传递一些参数给网页,比如时间和用户信息等.如何使网页中的报表能够获取到传递过来的参数 ...

随机推荐

  1. winform.布局

    布局:默认布局:自己拖动进行布局,工具栏里对齐方式 右键,锁定.##随容器拉动变化属性:Anchor:上下左右,固定的设置 panel的排列 1.Dock属性:(顺序填充)Top:靠上,高度不变,左右 ...

  2. [整理]PCB阻抗控制

    之前一直听说PCB设计中信号完整性及阻抗方面的要求,但是本人对此还是有很多的不了解,每次和别人讨论到这里后就不知道该怎么继续就这个问题交谈下去.正巧最近手头有一点工作有这方面的一些需求,就拿来花了一点 ...

  3. HTML5和CSS3基础教程(第8版)-读书笔记(3)

    第11章 用CSS 进行布局 网站设计主要有两大类型:固定宽度和响应式. 对于固定(fixed)布局,整个页面和每一栏都有基于像素的宽度.顾名思义,无论是使用移动电话和平板电脑等较小的设备查看页面,还 ...

  4. iOS 不让自动锁屏

    [UIApplication sharedApplication].idleTimerDisabled=YES;

  5. Delphi inline编译器优化问题

    function Test():Integer; inline; var P:Pointer; begin FreeMem(P); Result := AtomicIncrement(__gr); / ...

  6. 状态机学习(三)解析JSON

    来自 从零开始的 JSON 库教程 从零开始教授如何写一个符合标准的 C 语言 JSON 库 作者 Milo Yip https://zhuanlan.zhihu.com/json-tutorial ...

  7. NSCalenda日历类

    1. //将数据库时间和当前时间相比,得出时间差. + (NSString *)dateDescriptionWithDate:(NSDate *)date{ // NSCalendar日历类,提供了 ...

  8. LeetCode OJ-- Word Ladder II ***@

    https://oj.leetcode.com/problems/word-ladder-ii/ 啊,终于过了 class Solution { public: vector<vector< ...

  9. javascript 对象属性的get set访问器写法

    function Person() {     var age = new Date().getFullYear() - 18;     Object.defineProperty(this, &qu ...

  10. net.sf.json.JSONObject 和org.json.JSONObject 的差别

    http://my.oschina.net/wangwu91/blog/340721 net.sf.json.JSONObject 和org.json.JSONObject  的差别. 一.创建jso ...