使用演示文稿幻灯片
上次修改时间: 2010年10月8日
适用范围: Excel 2010 | Office 2010 | PowerPoint 2010 | Word 2010
本文内容
PresentationML 中的演示文稿幻灯片
Open XML SDK 2.0 幻灯片类
处理幻灯片类
Open XML SDK 代码示例
生成的 PresentationML
本主题讨论 Open XML SDK 2.0 Slide 类以及它与 Open XML 文件格式 PresentationML 架构的关系有关构成 PresentationML 文档的部件和元素的整体结构的详细信息,请参阅 PresentationML 文档的结构。
PresentationML 中的演示文稿幻灯片
ISO/IEC 29500(该链接可能指向英文页面) 规范介绍了 Open XML PresentationML <sld> 元素,此元素用于表示 PresentationML 文档中的演示文稿幻灯片,如下所示:
此元素在幻灯片列表中指定幻灯片。幻灯片列表用于指定幻灯片的顺序。
[示例:考虑以下对幻灯片排序的自定义演示。
<p:custShowLst>
<p:custShow name="Custom Show 1" id="0">
<p:sldLst>
<p:sld r:id="rId4"/>
<p:sld r:id="rId3"/>
<p:sld r:id="rId2"/>
<p:sld r:id="rId5"/>
</p:sldLst>
</p:custShow>
</p:custShowLst>
在上面的示例中,指定的演示幻灯片的顺序为先是幻灯片 4,然后是 3、2,最后是 5。
示例结束]"
© ISO/IEC29500: 2008。
<sld> 元素是 PresentationML 幻灯片部件的根元素。有关构成 PresentationML 文档的部件和元素的整体结构的详细信息,请参阅 PresentationML 文档的结构。
下表列出了在处理演示文稿幻灯片时使用的 <sld> 元素的子元素以及与它们对应的 Open XML SDK 2.0 类。
PresentationML 元素 |
Open XML SDK 2.0 类 |
---|---|
<clrMapOvr> |
|
<cSld> |
|
<extLst> |
|
<timing> |
|
<transition> |
Open XML SDK 2.0 幻灯片类
Open XML SDK 2.0 Slide 类表示在 PresentationML 文档的 Open XML 文件格式架构中定义的 <sld> 元素。使用 Slide 对象可以处理 PresentationML 文档中的各个 <sld> 元素。
通常与 Slide 类相关联的类在以下各节中说明。
ColorMapOverride 类
ColorMapOverride 类对应于 <clrMapOvr> 元素。ISO/IEC 29500(该链接可能指向英文页面) 规范中的以下信息介绍了 <clrMapOvr> 元素:
此元素提供一种机制,使用此机制可以替代 <ClrMap> 元素中列出的配色方案。如果存在 <masterClrMapping> 子元素,则使用母版定义的配色方案。如果存在 <overrideClrMapping> 子元素,则它定义特定于父备注幻灯片、演示文稿幻灯片或幻灯片版式的新配色方案。
© ISO/IEC29500: 2008。
CommonSlideData 类
CommonSlideData 类对应于 <cSld> 元素。ISO/IEC 29500(该链接可能指向英文页面) 规范中的以下信息介绍 <cSld> 元素:
此元素指定与所有幻灯片类型相关的幻灯片信息类型的容器。所有幻灯片共享一组独立于幻灯片类型的通用属性;任何特定幻灯片的这些属性的说明都存储在该幻灯片的 <cSld> 容器中。由父元素指明的特定于幻灯片类型的幻灯片数据存储在其他位置。
<cSld> 中的实际数据只描述特定的父幻灯片;这些数据只是存储的对所有幻灯片通用的信息类型。
© ISO/IEC29500: 2008。
ExtensionListWithModification 类
ExtensionListWithModification 类对应于 <extLst>元素。ISO/IEC 29500(该链接可能指向英文页面) 规范中的以下信息介绍 <extLst> 元素:
此元素指定具有修改功能的扩展名列表,其中定义了元素类型 <ext> 未来的所有扩展名。扩展名列表以及相应的未来扩展名用于扩展 PresentationML 框架的存储功能,从而允许各种新的数据类型以固有的方式存储在该框架内。
[注意:使用此 extLst 元素,生成应用程序可以存储有关此扩展属性是否已修改的相关信息。注释结束]
© ISO/IEC29500: 2008。
Timing 类
Timing 类对应于 <timing> 元素。ISO/IEC 29500(该链接可能指向英文页面) 规范中的以下信息介绍 <timing> 元素:
此元素指定用于处理对应幻灯片中的所有动画和定时事件的计时信息。此信息通过 <timing> 元素中的时间节点进行跟踪。有关这些时间节点及其定义方式的详细信息,请参阅 PresentationML 框架中的"动画"部分。
© ISO/IEC29500: 2008。
Transition 类
Transition 类对应于 <transition> 元素。ISO/IEC 29500(该链接可能指向英文页面) 规范中的以下信息介绍 <transition> 元素:
此元素指定应该用于从前一幻灯片切换到当前幻灯片的幻灯片切换类型。也就是说,切换信息存储在切换完成后显示的幻灯片中。
© ISO/IEC29500: 2008。
处理幻灯片类
如下面的 Open XML SDK 代码示例所示,每个 Slide 类实例与一个 SlidePart 类实例相关联,后者表示幻灯片部件,它是 PresentationML 演示文稿文件包必需的部件之一。每个 Slide 类实例还必须与 SlideLayout 和 SlideMaster 类的实例关联,后者反过来与命名相似且由 SlideLayoutPart 和 SlideMasterPart 类表示的必需演示文稿部件关联。
因此,表示 <sld> 元素的 Slide 类还与表示 <sld> 元素的子元素的一系列其他类相关联。这些类包括 CommonSlideData 类、ColorMapOverride 类、ShapeTree 类和 Shape 类,如以下代码示例所示。
Open XML SDK 代码示例
来自如何:通过提供文件名创建演示文稿文档一文的以下方法向现有演示文稿添加一个新幻灯片部件,并在这一新幻灯片部件中创建 Open XML SDK 2.0 Slide 类的一个实例。Slide 类构造函数创建 CommonSlideData 和 ColorMapOverride 类的实例。CommonSlideData 类构造函数创建 ShapeTree 类的实例,该类的构造函数反过来又创建其他类实例:NonVisualGroupShapeProperties 类、GroupShapeProperties 类和 Shape 类的实例。
需要所有这些类实例和表示 <sld> 元素的子元素的类实例才能创建表示新幻灯片所需的最少数量的 XML 元素。
代码中由字母 P 表示的命名空间为 DocumentFormat.OpenXml.Presentation 命名空间。
private static SlidePart CreateSlidePart(PresentationPart presentationPart)
{
SlidePart slidePart1 = presentationPart.AddNewPart<SlidePart>("rId2");
slidePart1.Slide = new Slide(
new CommonSlideData(
new ShapeTree(
new P.NonVisualGroupShapeProperties(
new P.NonVisualDrawingProperties() { Id = (UInt32Value)1U, Name = "" },
new P.NonVisualGroupShapeDrawingProperties(),
new ApplicationNonVisualDrawingProperties()),
new GroupShapeProperties(new TransformGroup()),
new P.Shape(
new P.NonVisualShapeProperties(
new P.NonVisualDrawingProperties() { Id = (UInt32Value)2U, Name = "Title 1" },
new P.NonVisualShapeDrawingProperties(new ShapeLocks() { NoGrouping = true }),
new ApplicationNonVisualDrawingProperties(new PlaceholderShape())),
new P.ShapeProperties(),
new P.TextBody(
new BodyProperties(),
new ListStyle(),
new Paragraph(new EndParagraphRunProperties() { Language = "en-US" }))))),
new ColorMapOverride(new MasterColorMapping()));
return slidePart1;
}
Private Shared Function CreateSlidePart(ByVal presentationPart As PresentationPart) As SlidePart
Dim slidePart1 As SlidePart = presentationPart.AddNewPart(Of SlidePart)("rId2")
slidePart1.Slide = New Slide(New CommonSlideData(New ShapeTree(New P.NonVisualGroupShapeProperties(New P.NonVisualDrawingProperties() With { _
.Id = CType(1UI, UInt32Value), _
.Name = "" _
}, New P.NonVisualGroupShapeDrawingProperties(), New ApplicationNonVisualDrawingProperties()), New GroupShapeProperties(New TransformGroup()), _
New P.Shape(New P.NonVisualShapeProperties(New P.NonVisualDrawingProperties() With { _
.Id = CType(2UI, UInt32Value), _
.Name = "Title 1" _
}, New P.NonVisualShapeDrawingProperties(New ShapeLocks() With { _
.NoGrouping = True _
}), New ApplicationNonVisualDrawingProperties(New PlaceholderShape())), New P.ShapeProperties(), New P.TextBody(New BodyProperties(), _
New ListStyle(), New Paragraph(New EndParagraphRunProperties() With { _
.Language = "en-US" _
}))))), New ColorMapOverride(New MasterColorMapping()))
Return slidePart1
End Function
若要向形状树并因此向幻灯片中添加其他形状,请通过向 ShapeTree 构造函数传递包含以下代码的其他参数来实例化第二个 Shape 对象。
new P.Shape(
new P.NonVisualShapeProperties(
new P.NonVisualDrawingProperties() { Id = (UInt32Value)2U, Name = "Title 1" },
new P.NonVisualShapeDrawingProperties(new ShapeLocks() { NoGrouping = true }),
new ApplicationNonVisualDrawingProperties(new PlaceholderShape())),
new P.ShapeProperties(),
new P.TextBody(
new BodyProperties(),
new ListStyle(),
new Paragraph(new EndParagraphRunProperties() { Language = "en-US" })))
New P.Shape(New P.NonVisualShapeProperties(New P.NonVisualDrawingProperties() With { _
.Id = CType(2UI, UInt32Value), _
.Name = "Title 1" _
}, New P.NonVisualShapeDrawingProperties(New ShapeLocks() With { _
.NoGrouping = True _
}), New ApplicationNonVisualDrawingProperties(New PlaceholderShape())), New P.ShapeProperties(), New P.TextBody(New BodyProperties(), _
New ListStyle(), New Paragraph(New EndParagraphRunProperties() With { _
.Language = "en-US" })))
生成的 PresentationML
当运行方法中的 Open XML SDK 2.0 代码时,会将以下 XML 代码写入代码中引用的 PresentationML 文档文件。
<?xml version="1.0" encoding="utf-8" ?>
<p:sld xmlns:p="https://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 xmlns:a="https://schemas.openxmlformats.org/drawingml/2006/main" />
</p:grpSpPr>
<p:sp>
<p:nvSpPr>
<p:cNvPr id="2" name="Title 1" />
<p:cNvSpPr>
<a:spLocks noGrp="1" xmlns:a="https://schemas.openxmlformats.org/drawingml/2006/main" />
</p:cNvSpPr>
<p:nvPr>
<p:ph />
</p:nvPr>
</p:nvSpPr>
<p:spPr />
<p:txBody>
<a:bodyPr xmlns:a="https://schemas.openxmlformats.org/drawingml/2006/main" />
<a:lstStyle xmlns:a="https://schemas.openxmlformats.org/drawingml/2006/main" />
<a:p xmlns:a="https://schemas.openxmlformats.org/drawingml/2006/main">
<a:endParaRPr lang="en-US" />
</a:p>
</p:txBody>
</p:sp>
</p:spTree>
</p:cSld>
<p:clrMapOvr>
<a:masterClrMapping xmlns:a="https://schemas.openxmlformats.org/drawingml/2006/main" />
</p:clrMapOvr>
</p:sld>