PresentationML (PPTX, XML)
关于 PresentationML
PresentationML 是一个用于演示文档的基于 XML 的格式家族的名称。Office OpenXML(OOXML)是 Microsoft Office 2007 应用程序中引入的基于 XML 的格式。Office OpenXML 是一个容器格式,包含多个专门的基于 XML 的标记语言。PresentationML 是 Microsoft Office PowerPoint 2007 用于存储其文档的标记语言。
Aspose.Slides for C++ 中的 PresentationML
OOXML PresentationML 文档以 PPTX 文件的形式存在,这些文件是按照 OOXML ECMA-376 规范打包的 XML 文件。Aspose.Slides for C++ 广泛支持创建、读取、操作和写入 PresentationML 文档。此外,Aspose.Slides for C++ 能够将 PresentationML 文档导出为 PDF、TIFF 和 XPS 等不同的广泛使用的文档格式。之所以能够这样,是因为 Aspose.Slides for C++ 的设计旨在全面处理演示文档,而 PresentationML 基本上将文档的内部演示保留为压缩的 XML 包。
PresentationML 是开放的,为什么使用 Aspose.Slides for C++
由于 PresentationML 是基于 XML 的,因此通过使用 XML 类构建处理和生成 PresentationML 文档的应用程序是完全可能的,而不依赖于像 Aspose.Slides for C++ 这样的第三方类库。然而,在处理 PresentationML 文档时,使用 Aspose.Slides for C++ 相对于 XML 类有几个优势。
OOXML 规范的长度达到几千页。这意味着,为了正确处理 PresentationML 文档,您将不得不花费大量的时间和精力来理解这些文档的格式。另一方面,使用 Aspose.Slides for C++ 时,您只需使用相关的类及其各自的方法/属性来执行操作,这些操作通过 XML 类执行时看起来相当复杂。
以下是一些通过 XML 类处理 PresentationML 文档时甚至无法获得的功能:
- 将 PPT 文档导出为 PDF、TIFF、XPS 格式
- 将 PPT 文档中的幻灯片导出为 SVG 格式
- 将幻灯片呈现为 C++ 框架支持的任何图像格式
- 使用克隆功能自动复制源演示文稿中的母版
- 对形状应用保护
让我们以一个包含一张幻灯片和一个包含 “Hello World” 文本的文本框的 PresentationML 文档为例。为了通过 XML 类读取文本,您必须编写一个程序来解析以下片段中的简单文本:
示例
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<p:sld xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships" xmlns:p="http://schemas.openxmlformats.org/presentationml/2006/main">
<p:cSld>
<p:spTree>
<p:nvGrpSpPr>
<p:cNvPr id="1" name=""/>
<p:cNvGrpSpPr/>
<p:nvPr/>
</p:nvGrpSpPr>
<p:grpSpPr>
<a:xfrm>
<a:off x="0" y="0"/>
<a:ext cx="0" cy="0"/>
<a:chOff x="0" y="0"/>
<a:chExt cx="0" cy="0"/>
</a:xfrm></p:grpSpPr><p:sp>
<p:nvSpPr><p:cNvPr id="4" name="TextBox 3"/>
<p:cNvSpPr txBox="1"/>
<p:nvPr/>
</p:nvSpPr>
<p:spPr>
<a:xfrm>
<a:off x="2819400" y="2590800"/>
<a:ext cx="1297086" cy="369332"/>
</a:xfrm>
<a:prstGeom prst="rect">
<a:avLst/>
</a:prstGeom>
<a:noFill/>
</p:spPr>
<p:txBody>
<a:bodyPr wrap="none" rtlCol="0">
<a:spAutoFit/>
</a:bodyPr>
<a:lstStyle/>
<a:p>
<a:r>
<a:rPr lang="en-US"/>
<a:t>Hello World
</a:t>
</a:r>
<a:endParaRPr lang="en-US"/>
</a:p>
</p:txBody>
</p:sp>
</p:spTree>
</p:cSld>
<p:clrMapOvr>
<a:masterClrMapping/>
</p:clrMapOvr>
</p:sld>