前言
官方文档: officeopenxml
PPT和PPTX本质就是一个ZIP压缩文件,我们可以把PPT的后缀直接改为zip后直接解压,就会看到以下文件:
ppt下
文件的类型和数目可能会根据 幻灯片 的内容有所不同,但是肯定会有一个[Content_Types].xml,至少一个.rels 和一个 presentation,当然至少得有一页内容吧,而相应的就会有 slideMaster 和 slideLayout.
先来看看主要的几个文件里装了什么东西。
Content Types
定义了所有幻灯片里用到的格式和内容,简单的说就是所有文件都要提前声明。格式一般是:
代码语言:javascript复制<Default Extension="jpeg" ContentType="image/jpeg"/>
<Override PartName="/ppt/slides/slide1.xml" ContentType="application/vnd.openxmlformats-officedocument.presentationml.slide xml"/>
为了简单,其他的可能存在的格式可以都写上,比如图片、视频、字体等,只有 slide 是不确定的。
Relationships
为了方便各种资源的引用,所以会有关系表,格式为:
代码语言:javascript复制<Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties" Target="docProps/app.xml" />
Id 就是在其他地方引用的标识符,Type
一般是个链接,Target
就是资源存在的位置
基本每个部分都有这样一个表,slides
、slideMasters
、slideLayouts
文件夹下面都有一个_rels
,presentation.xml
也有对应的 presentation.xml.rels
。
Presentation
包含了构成 PPTX 的各种规范以及属性,比如嵌入字体,默认字体样式,备注,分辨率,过渡动画等。
Slides
这里存储的就是幻灯片具体的内容了
Slide: 包含一个单页幻灯片的页面内容 Slide Master: 包含母版幻灯片的所有文本、格式相关的定义 Slide Layout: 包含幻灯片模板的默认格式
虽然以前也做过 PPT,最喜欢网上找个模板直接套,这次终于知道了还有“幻灯片母版”这个东西,感觉到了其中的博大精深。
因为我们的内容都是固定的,所以对于 slideLayout
和 slideMaster
就直接 copy 了一份,作为固定内容,主要修改 slide
里面的内容。
Slide 有很多属性可以定义各种样式,可以在官方文档里查看,都比较清楚。
实际业务中,除了文字,其他的类型,比如 svg,蒙版,各种特效都直接以图片的形式替代,所以有时候会导致下载比较久。最容易出问题的就是 ID
的匹配,不能出现重复的 ID
。
总的来说,如果要实现什么效果不知道怎么下手的话,只要自己动手在 PPT 里实现一下,解析出来研究看看文件结构,就知道怎么做了。
PPT模板与母版的区别:
1、模板包含母版,母版只是模板的一部分。
模板是一个专门的页面格式,进去它会告诉你什么地方填什么,可以拖动修改。
母版是一个系列的,比如底色和每页都会显示出来的边框或者日期,页眉页脚之类,设置一次,以后的每一页全部都相同,起统一、美观的作用。
2、母版又称为原版,即幻灯片的原版。模板即用来印刷幻灯片的三原色版。
模板:演示文稿中的特殊一类,扩展名为.pot。用于提供样式文稿的格式、配色方案、母版样式及产生特效的字体样式等。应用设计模板可快速生成风格统一的演示文稿。
母版:规定了演示文稿(幻灯片、讲义及备注)的文本、背景、日期及页码格式。母版体现了演示文稿的外观,包含了演示文稿中的共有信息。每个演示文稿提供了一个母版集合,包括:幻灯片母版、标题母版、讲义母版、备注母版等母版集合。