PPT文档解析之母版
今天和大家介绍下PPT文档解析中的母版。
什么是母版
我们平时看到的PPT展示,实际上是有多层内容组成的。
分别是页面(Slide),布局(SlideLayout)和母版(SlideMaster)
我们使用PowerPoint或者WPS打开PPT文件,调到母版视图,就能看到左边列出的母版和布局(或者叫版式)。
PPT文件中,可以创建多个母版,每一个母版创建多个布局。
在制作PPT时,依赖于不同的布局进行创建,不但减少了重复的工作量,也大大减少了PPT文件的体积。
在渲染时,软件会依次在三个层级渲染母版,布局,页面中的元素。最终呈现的是三个层级叠加的显示。
PPT文档中的母版
我们解压一个pptx文件,在其中的ppt文件夹下可以看到母版,布局,页面三者的信息。
我们在slides文件夹下任意打开一个slide的xml文件,但是发现里面并没有任何布局或者母版的相关信息。
这是因为,PPT文档中将例如资源,样式,母版等外部的信息,定义在一个单独的文件中,然后通过一个rels文件绑定两者的关系。
我们可以在slides\_rels文件夹下找到对应的.xml.rels文件,看到里面有一个relationship节点,指向了对应的SlideLayout文件的相对路径。
同样的,SlideLayout文件也通过同样的方式指向SlideMaster文件。
使用OpenXMLSDK解析
由于PPT文档将relationship放在的单独的文件,我们在解析PPT文档时,必须对多个文件进行读取,这里增加了我们在解析PPT文档时的难度。
对于母版来说,更困难的一点是,slide中没有任何地方引用SlideLayout对应的relationship 的id。
这意味着如果我不解析rels文件,我根本不知道这个页面是否使用了母版。
这使得单纯的xml解析方式进行PPT文档处理变得异常困难。
所幸是如果我们是使用C#的话,微软开源了一个叫OpenXMLSDK的库,帮助我们快速解析,查询office文档。
它直接将母版信息存储到对应slide节点的属性中,所以直接可以通过slide轻松查询到对应的母版
例如我期望做页面背景的解析,就可以使用下面的方法。
这样大家自主解析PPT文档(或者是openxml格式文件)都会变得很简单。
参考文档:
- Structure of a PresentationML document (Open XML SDK) - Microsoft Docs
本文会经常更新,请阅读个人博客原文: https://xinyuehtx.github.io/ ,以避免陈旧错误知识的误导,同时有更好的阅读体验。
本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名黄腾霄(包含链接: https://xinyuehtx.github.io/ ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系 。
PPT文档解析之母版相关推荐
- 【JAVA_POI】解析PPT文档(ppt和pptx)4.1.2版本
一.ppt和pptx区别 二.java中对PPT文档的解析 2.1引入的jar包 <dependency><groupId>org.apache.poi</groupId ...
- 恶意Office文档解析——1. Office文档格式解析
写在前面:这是我最近在做的一个小课题,按照研究进度不定期更新.主要是学习前人的研究思路,自己开发的内容会比较少. 复合文档的概念 复合文档不仅包含文本,而且包括图形.电子数据表格.声音.视频等其他信息 ...
- poi操作PPT文档总结
POI操作PPT文档1 注意ppt模板不能使用${user}--这样的作为替换标识,在读取PPT模板时会解析成三段文本1.${ 2.user 3.},而一般在控件中使用%1$S这样的方式做为替换标识 ...
- 【PPT】PPT文档导出PDF文件时,去掉右上角时间
PPT文档需要导出为PDF文件时,右上角页眉会出现时间戳,有时候不需要时间,如何去掉时间戳呢? Win10+Office2019 当需要将多页PPT打印在一张纸上时,右上角页眉会自动出现当前时间戳20 ...
- office 文档解析
最近在项目维护过程中涉及到了office各种文档的解析,捣鼓了好长时间,有点点收货,记下来. 涉及文档:doc.docx.xls.xlsx.pptx. 语言:VC 下面对不同的文档进行简单解析: 一. ...
- 史上最全的Python操作 “PPT” 文档大全,以后写“数据分析报告”靠她了!
↑↑↑关注后"星标"简说Python 人人都可以简单入门Python.爬虫.数据分析 简说Python严选 来源:数据分析与统计学之美 作者:黄伟呢 One old watc ...
- C#将图片或文字等插入PPT文档中
C#对PPT编辑操作,目前比较方法便捷高效的就属他了:Spire.Presentation,具体使用方法,如果想查看所有实例,可直接按照官网进行下载,里面有队Vb,C#,java的语言是如何使用,如果 ...
- C# 复制幻灯片(包括格式、背景、图片等)到同/另一个PPT文档
原文:C# 复制幻灯片(包括格式.背景.图片等)到同/另一个PPT文档 C# 复制幻灯片(包括格式.背景.图片等)到同/另一个PPT文档 复制幻灯片是使用PowerPoint过程中的一个比较常见的操作 ...
- VC++ MSXML创建XML文件以及对XML文档解析
VC++ MSXML创建XML文件以及对XML文档解析 转自http://www.newxing.com/Tech/Program/Cpp/703.html // XmlCreationDemo.cp ...
- 将一个PPT文档按页分割成多个PPT文档的代码
1.打开需要分割的PPT文档(假设文件名为"原始文档.ppt"): 2.键入Alt+F11切换到VBA编辑环境,然后选择菜单"插入-模块": 3.在代码编辑区粘 ...
最新文章
- mysql包1166_mysql 错误:1166 解决办法
- mysql 导出select语句结果到excel文件等
- 如何使用JSR107缓存注释
- python遍历循环中的遍历结构可以是什么_(一)Python入门-4控制语句:06for循环结构-遍历各种可迭代对象-range对象...
- php urledcode_攻防世界 php 2 函数urldecode 使用说明
- 山大网络教育线上作业计算机,山大网络教育《计算机基础》模拟参考答案.doc...
- mysql慢日志分析工具_mysql慢查日志分析工具 percona-toolkit
- 如何用键盘快捷键打开 macOS 控制中心?
- python里countsget_Python Pandas Series.get_dtype_counts()用法及代码示例
- 微软造的还原精灵EWF(Enhanced Write Filter)
- android界面自动跳转,android实现欢迎界面的自动跳转
- 二十三 Python分布式爬虫打造搜索引擎Scrapy精讲—craw母版l创建自动爬虫文件—以及 scrapy item loader机制...
- 收藏CSDN上一篇文章--勉励自己
- git设置用户名密码
- 部分国外顶级会议论文没有关键词
- 什么是链接?(动态链接库和静态链接库的对比)
- C#Maeshal类——托管资源和非托管资源转换
- LTE前台路测切换问题处理
- 笔记本电脑怎么打不开计算机,笔记本电脑文件打不开怎么办
- 网站打开出现服务器错误代码,网站打开出现“404”错误怎么解决?