使用 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;
}
}
我们定义一个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中的所有幻灯片的标题的更多相关文章
- 如何提取出ppt中的文字?
最近在看一位老师的教学视频,视频里大部分的知识都记录在ppt里,于是很想将ppt中的文字提取出来,如果我一页一页地粘贴复制的话,效率低到吓人,因为一章的ppt有130多页,于是在网上搜索了一下方法,与 ...
- 怎么利用Aspose.Cells 获取excel 数据表中sheet的名称
说明:开发环境 vs2012 asp.net mvc4 c# 利用Aspose.Cells 获取Excel数据表的sheet的名称,并把获取的名称赋值给easyUI 的combobox 1.运行效果 ...
- Office系列(2)---提取Office文件(Word、PPT)中的所有图片
回顾一下上文结尾的问题:如何给文档设置一个合适的封面图?其中一个解决方案就是,获取Office文件内部的图片作为封面.这里就详细介绍下获取图片的几种方式,以及他们各自的优缺点. PS:因为之前用VST ...
- Java 在PPT中创建SmartArt图形、读取SmartArt图形中的文本
一.概述及环境准备 SmartArt 图形通过将文字.图形从多种不同布局.组合来表现内容和观点的逻辑关系,能够快速.有效地传达设计者的意图和信息.这种图文表达的视觉表示形式常用于PPT,Word,Ex ...
- C# 处理PPT水印(三)—— 在PPT中添加多行(平铺)文本水印效果
在PPT幻灯片中,可通过添加形状的方式,来实现类似水印的效果,可添加单一文本水印效果,即幻灯片中只有一个文本水印:也可以添加多行(平铺)文本水印效果,即幻灯片中以一定方式平铺排列多个文本水印效果.本文 ...
- 用poi替换ppt中的文字和图片
try { // 获取PPT文件 String pptModelPath =ConfigReadUtil.getInstance().getConfigI ...
- 三维场景如何嵌入到PPT中展示?
今天要跟大家一起交流的大体内容如标题所示,日常生活中,ppt已经成为人们工作学习生活中不可或缺的工具之一,那么三维场景是如何在ppt中加载展示的呢?请大家慢慢往下看. 1.创建命令按钮和web bro ...
- C# / VB.NET 在PPT中创建、编辑PPT SmartArt图形
本文介绍通过C#和VB.NET程序代码来创建和编辑PPT文档中的SmartArt图形.文中将分两个操作示例来演示创建和编辑结果. 使用工具:Spire.Presentation for .NET ho ...
- 如何获取url中的参数并传递给iframe中的报表
在使用报表软件时,用户系统左边一般有目录树,点击报表节点就会在右侧网页的iframe中显示出报表,同时点击的时候也会传递一些参数给网页,比如时间和用户信息等.如何使网页中的报表能够获取到传递过来的参数 ...
随机推荐
- 修改Django的默认打印时间
环境 Django版本:1.10 前言 默认情况下,Django会把日期按照“月份 天数, 年”的格式打印,比如2003年2月4日会打印成“Feb. 4, 2003”,这种格式对于西方人来说很好看,但 ...
- APP测试工具之TraceView卡顿检测
Traceview卡顿检测 Traceview是Android平台特有的数据采集和分析工具,集成在DDMS工具中,可以采集程序中的方法执行耗时.调用关系.调用次数以及资源占用等情况. 一.使用方法 1 ...
- centos7.x/RedHat7.x重命名网卡名称
从51CTO博客迁移出来几篇博文. 在CentOS7.x或RedHat7.x上,网卡命名规则变成了默认,既自动基于固件.拓扑结构和位置信息来确定.这样一来虽然有好处,但也会影响操作,因为新的命名规则比 ...
- 循序渐进Python3(五) -- 初识模块
什么是模块? 模块,用一组代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能 ...
- 了解 XSS 攻击原理
在了解 XSS 之前必须知道『网站登入(Session)』的原理 简单的说当会员成功登入后 网站会给浏览器一个『令牌』 之后只要拿着这个『令牌』到网站上 就会被视为已经登入 再来下面是 XSS 最简单 ...
- 【BootStrap】 基础
[BootStrap] 基础 一. 自适应(针对不同设备如手机平板笔电,使页面的宽度适应设备宽度) <meta name="viewport" content="w ...
- background-orgin属性
重点内容是:背景的显示范围是在元素的内边距之内的,如果要想改变显示范围,可以使用background-orgin和background-clip进行调整. (1)background-orgin有三个 ...
- shell脚本批量处理字符串
上周五运营那边给了一份手机号码的excle,要求查询出所有对应于用户编号的用户的信息.这个时候遇到了一个问题就是,需要查询的用户数量很多,不可能一个一个去查,而excle中的格式又不符合sqlquer ...
- Windows CMD命令大全【转】
命令简介 cmd是command的缩写.即命令行 . 虽然随着计算机产业的发展,Windows 操作系统的应用越来越广泛,DOS 面临着被淘汰的命运,但是因为它运行安全.稳定,有的用户还在使用,所以一 ...
- 利用iframe无刷新上传文件的坑
页面里经常要用到文件上传的功能,而且要求页面不刷新,先说一下原理:页面里放一个file控件和submit按钮,外面用form表单包住,给form表单加上对应的属性值,action.method.ent ...