今天和大家介绍下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文档解析之母版相关推荐

  1. 【JAVA_POI】解析PPT文档(ppt和pptx)4.1.2版本

    一.ppt和pptx区别 二.java中对PPT文档的解析 2.1引入的jar包 <dependency><groupId>org.apache.poi</groupId ...

  2. 恶意Office文档解析——1. Office文档格式解析

    写在前面:这是我最近在做的一个小课题,按照研究进度不定期更新.主要是学习前人的研究思路,自己开发的内容会比较少. 复合文档的概念 复合文档不仅包含文本,而且包括图形.电子数据表格.声音.视频等其他信息 ...

  3. poi操作PPT文档总结

    POI操作PPT文档1 注意ppt模板不能使用${user}--这样的作为替换标识,在读取PPT模板时会解析成三段文本1.${ 2.user  3.},而一般在控件中使用%1$S这样的方式做为替换标识 ...

  4. 【PPT】PPT文档导出PDF文件时,去掉右上角时间

    PPT文档需要导出为PDF文件时,右上角页眉会出现时间戳,有时候不需要时间,如何去掉时间戳呢? Win10+Office2019 当需要将多页PPT打印在一张纸上时,右上角页眉会自动出现当前时间戳20 ...

  5. office 文档解析

    最近在项目维护过程中涉及到了office各种文档的解析,捣鼓了好长时间,有点点收货,记下来. 涉及文档:doc.docx.xls.xlsx.pptx. 语言:VC 下面对不同的文档进行简单解析: 一. ...

  6. 史上最全的Python操作 “PPT” 文档大全,以后写“数据分析报告”靠她了!

    ↑↑↑关注后"星标"简说Python 人人都可以简单入门Python.爬虫.数据分析 简说Python严选 来源:数据分析与统计学之美    作者:黄伟呢 One old watc ...

  7. C#将图片或文字等插入PPT文档中

    C#对PPT编辑操作,目前比较方法便捷高效的就属他了:Spire.Presentation,具体使用方法,如果想查看所有实例,可直接按照官网进行下载,里面有队Vb,C#,java的语言是如何使用,如果 ...

  8. C# 复制幻灯片(包括格式、背景、图片等)到同/另一个PPT文档

    原文:C# 复制幻灯片(包括格式.背景.图片等)到同/另一个PPT文档 C# 复制幻灯片(包括格式.背景.图片等)到同/另一个PPT文档 复制幻灯片是使用PowerPoint过程中的一个比较常见的操作 ...

  9. VC++ MSXML创建XML文件以及对XML文档解析

    VC++ MSXML创建XML文件以及对XML文档解析 转自http://www.newxing.com/Tech/Program/Cpp/703.html // XmlCreationDemo.cp ...

  10. 将一个PPT文档按页分割成多个PPT文档的代码

    1.打开需要分割的PPT文档(假设文件名为"原始文档.ppt"): 2.键入Alt+F11切换到VBA编辑环境,然后选择菜单"插入-模块": 3.在代码编辑区粘 ...

最新文章

  1. mysql包1166_mysql 错误:1166 解决办法
  2. mysql 导出select语句结果到excel文件等
  3. 如何使用JSR107缓存注释
  4. python遍历循环中的遍历结构可以是什么_(一)Python入门-4控制语句:06for循环结构-遍历各种可迭代对象-range对象...
  5. php urledcode_攻防世界 php 2 函数urldecode 使用说明
  6. 山大网络教育线上作业计算机,山大网络教育《计算机基础》模拟参考答案.doc...
  7. mysql慢日志分析工具_mysql慢查日志分析工具 percona-toolkit
  8. 如何用键盘快捷键打开 macOS 控制中心?
  9. python里countsget_Python Pandas Series.get_dtype_counts()用法及代码示例
  10. 微软造的还原精灵EWF(Enhanced Write Filter)
  11. android界面自动跳转,android实现欢迎界面的自动跳转
  12. 二十三 Python分布式爬虫打造搜索引擎Scrapy精讲—craw母版l创建自动爬虫文件—以及 scrapy item loader机制...
  13. 收藏CSDN上一篇文章--勉励自己
  14. git设置用户名密码
  15. 部分国外顶级会议论文没有关键词
  16. 什么是链接?(动态链接库和静态链接库的对比)
  17. C#Maeshal类——托管资源和非托管资源转换
  18. LTE前台路测切换问题处理
  19. 笔记本电脑怎么打不开计算机,笔记本电脑文件打不开怎么办
  20. 网站打开出现服务器错误代码,网站打开出现“404”错误怎么解决?

热门文章

  1. 福建省厦门市谷歌卫星地图下载
  2. 计算机删除文件的原理,三个简单步骤,马上恢复被永久删除的文件
  3. 【转】谈一谈今年的移动互联网寒冬
  4. 那些C++牛人的博客
  5. web开发与设计,这些网站为你提供大量的开发资源与设计灵感
  6. 2.4G超低功耗射频芯片NRF24L01P和SI24R1和CI24R1的区别
  7. 微信公众号(测试号)开发
  8. 申请微信公众测试号一直配置失败,在线等大佬帮忙。
  9. 两个小故事告诉你静下来的力量
  10. 曲线曲面基本理论(二)