使用幻灯片母版
上次修改时间: 2010年10月8日
适用范围: Excel 2010 | Office 2010 | PowerPoint 2010 | Word 2010
本文内容
PresentationML 中的幻灯片母版
Open XML SDK 2.0 SlideMaster 类
处理 SlideMaster 类
Open XML SDK 代码示例
生成的 PresentationML
本主题讨论 Open XML SDK 2.0 SlideMaster 类以及它与 Open XML 文件格式 PresentationML 架构的关系。
PresentationML 中的幻灯片母版
ISO/IEC 29500(该链接可能指向英文页面) 规范介绍了 Open XML PresentationML <sldMaster> 元素,此元素用于表示 PresentationML 文档中的幻灯片版式,如下所示。
此元素指定幻灯片母版幻灯片的实例。幻灯片母版幻灯片中包含描述演示文稿幻灯片中的对象及其相应格式的所有元素。幻灯片母版幻灯片中包含两个主元素。 cSld 元素指定通用幻灯片元素,如形状及其附加的文本正文。 txStyles 元素指定每个此类形状中的文本的格式。幻灯片母版幻灯片中的其他属性指定演示文稿幻灯片中的其他属性,如颜色信息、页眉和页脚以所有相应演示文稿幻灯片的计时和切换信息。
© ISO/IEC29500: 2008。
<sldMaster> 元素是 PresentationML 幻灯片母版部件的根元素。有关构成 PresentationML 文档的部件和元素的整体结构的详细信息,请参阅 PresentationML 文档的结构。
下表列出了在处理幻灯片母版时使用的 <sldMaster> 元素的子元素以及与它们对应的 Open XML SDK 2.0 类。
PresentationML 元素 |
Open XML SDK 2.0 类 |
---|---|
<clrMap> |
|
<cSld> |
|
<extLst> |
|
<hf> |
|
<sldLayoutIdLst> |
|
<timing> |
|
<transition> |
|
<txStyles> |
ISO/IEC 29500(该链接可能指向英文页面) 规范中的以下表介绍了 <sldMaster> 元素。
属性 |
说明 |
---|---|
preserve(保留幻灯片母版) |
指定删除应用相应幻灯片版式的所有幻灯片时是否删除该版式。如果未指定此属性,则生成应用程序应假定值为 false。这意味着,如果演示文稿中没有幻灯片与该幻灯片相关联,则该幻灯片实际上会被删除。 此属性可能的值由 W3C XML 架构 Boolean 数据类型定义。 |
© ISO/IEC29500: 2008。
Open XML SDK 2.0 SlideMaster 类
OXML SDK SlideMaster 类表示在 PresentationML 文档的 Open XML 文件格式架构中定义的 <sldMaster> 元素。使用 SlideMaster 类可对 PresentationML 文档中的各个 <sldMaster> 元素进行操作。
下面的列表显示了表示 <sldMaster> 元素的子元素并因此通常与 SlideMaster 类关联的类。
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。
HeaderFooter 类
HeaderFooter 类对应于 <hf> 元素。ISO/IEC 29500(该链接可能指向英文页面) 规范中的以下信息介绍了 <hf> 元素:
此元素指定幻灯片的页眉和页脚信息。页眉和页脚由文本占位符组成,它们在所有幻灯片和幻灯片类型中应该保持一致,例如日期和时间、幻灯片编号以及自定义页眉和页脚文本。
© ISO/IEC29500: 2008。
SlideLayoutIdList 类
SlideLayoutIdList 类对应于 <sldLayoutIdLst> 元素。ISO/IEC 29500(该链接可能指向英文页面) 规范中的以下信息介绍了 <sldLayoutIdLst> 元素:
此元素指定存在幻灯片版式标识列表。此列表包含在幻灯片母版中,用于确定将在幻灯片母版文件中使用哪些版式。幻灯片版式列表中的每个版式都具有它自己的标识号和关系标识符,关系标识符在演示文稿文档和使用该版式的特定母版幻灯片中唯一标识该版式。
© 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。
TextStyles 类
TextStyles 类对应于 <txStyles> 元素。ISO/IEC 29500(该链接可能指向英文页面) 规范中的以下信息介绍了 <txStyles> 元素:
此元素指定幻灯片母版中的文本样式。在此元素中是标题文本、正文文本以及其他幻灯片文本的样式信息。此元素仅适合在幻灯片母版中使用,因此设置相应演示文稿幻灯片的文本样式。
[示例:考虑我们要为母版幻灯片指定标题文本的情况。
<p:txStyles>
<p:titleStyle> <a:lvl1pPr algn="ctr" rtl="0" latinLnBrk="0">
<a:spcBef>
<a:spcPct val="0"/>
</a:spcBef>
<a:buNone/>
<a:defRPr sz="4400" kern="1200">
<a:solidFill>vv
<a:schemeClr val="tx1"/>
</a:solidFill>
<a:latin typeface="+mj-lt"/>
<a:ea typeface="+mj-ea"/>
<a:cs typeface="+mj-cs"/>
</a:defRPr>
</a:lvl1pPr>
</p:titleStyle>
</p:txStyles>
在上面的示例中,演示文稿中所有相关幻灯片的标题文本都根据上面的格式进行设置。示例结束]
© ISO/IEC29500: 2008。
处理 SlideMaster 类
如下面的 Open XML SDK 代码示例所示,每个 SlideMaster 类实例与一个 SlideMasterPart 类实例相关联,后者表示幻灯片母版部件,它是 PresentationML 演示文稿文件包必需的部件之一。每个 SlideMaster 类实例还必须与 SlideLayout 和 Slide 类实例相关联,后两者又与由 SlideLayoutPart 和 SlidePart 类表示的具有相似名称的必需演示文稿部件相关联。
因此,表示 <sldMaster> 元素的 SlideMaster 类还与表示 <sldMaster> 元素的子元素的一系列其他类相关联。这些类包括 CommonSlideData 类、ColorMap 类、ShapeTree 类和 Shape 类,如下面的代码示例所示。
Open XML SDK 代码示例
来自如何:通过提供文件名创建演示文稿文档文章中的以下方法向现有演示文稿添加新幻灯片母版部件并在新幻灯片母版部件中创建 Open XML SDK 2.0 SlideMaster 类的实例。SlideMaster 类构造函数创建 CommonSlideData 类以及 ColorMap、SlideLayoutIdList 和 TextStyles 类的实例。CommonSlideData 类构造函数创建 ShapeTree 类的实例,后者的构造函数又创建其他类实例:NonVisualGroupShapeProperties 类的实例、GroupShapeProperties 类的实例和 Shape 类的实例等。
代码中由字母 P 表示的命名空间是 DocumentFormat.OpenXml.Presentation 命名空间。
private static SlideMasterPart CreateSlideMasterPart(SlideLayoutPart slideLayoutPart1)
{
SlideMasterPart slideMasterPart1 = slideLayoutPart1.AddNewPart<SlideMasterPart>("rId1");
SlideMaster slideMaster = new SlideMaster(
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 Placeholder 1" },
new P.NonVisualShapeDrawingProperties(new ShapeLocks() { NoGrouping = true }),
new ApplicationNonVisualDrawingProperties(new PlaceholderShape() { Type = PlaceholderValues.Title })),
new P.ShapeProperties(),
new P.TextBody(
new BodyProperties(),
new ListStyle(),
new Paragraph())))),
new P.ColorMap() { Background1 = D.ColorSchemeIndexValues.Light1, Text1 = D.ColorSchemeIndexValues.Dark1, Background2 = D.ColorSchemeIndexValues.Light2, Text2 = D.ColorSchemeIndexValues.Dark2, Accent1 = D.ColorSchemeIndexValues.Accent1, Accent2 = D.ColorSchemeIndexValues.Accent2, Accent3 = D.ColorSchemeIndexValues.Accent3, Accent4 = D.ColorSchemeIndexValues.Accent4, Accent5 = D.ColorSchemeIndexValues.Accent5, Accent6 = D.ColorSchemeIndexValues.Accent6, Hyperlink = D.ColorSchemeIndexValues.Hyperlink, FollowedHyperlink = D.ColorSchemeIndexValues.FollowedHyperlink },
new SlideLayoutIdList(new SlideLayoutId() { Id = (UInt32Value)2147483649U, RelationshipId = "rId1" }),
new TextStyles(new TitleStyle(), new BodyStyle(), new OtherStyle()));
slideMasterPart1.SlideMaster = slideMaster;
return slideMasterPart1;
}
Private Shared Function CreateSlideMasterPart(ByVal slideLayoutPart1 As SlideLayoutPart) As SlideMasterPart
Dim slideMasterPart1 As SlideMasterPart = slideLayoutPart1.AddNewPart(Of SlideMasterPart)("rId1")
Dim slideMaster As New SlideMaster(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 Placeholder 1" _
}, New P.NonVisualShapeDrawingProperties(New ShapeLocks() With { _
.NoGrouping = True _
}), New ApplicationNonVisualDrawingProperties(New PlaceholderShape() With { _
.Type = PlaceholderValues.Title _
})), New P.ShapeProperties(), New P.TextBody(New BodyProperties(), New ListStyle(), New Paragraph())))), New P.ColorMap() With { _
.Background1 = D.ColorSchemeIndexValues.Light1, _
.Text1 = D.ColorSchemeIndexValues.Dark1, _
.Background2 = D.ColorSchemeIndexValues.Light2, _
.Text2 = D.ColorSchemeIndexValues.Dark2, _
.Accent1 = D.ColorSchemeIndexValues.Accent1, _
.Accent2 = D.ColorSchemeIndexValues.Accent2, _
.Accent3 = D.ColorSchemeIndexValues.Accent3, _
.Accent4 = D.ColorSchemeIndexValues.Accent4, _
.Accent5 = D.ColorSchemeIndexValues.Accent5, _
.Accent6 = D.ColorSchemeIndexValues.Accent6, _
.Hyperlink = D.ColorSchemeIndexValues.Hyperlink, _
.FollowedHyperlink = D.ColorSchemeIndexValues.FollowedHyperlink _
}, New SlideLayoutIdList(New SlideLayoutId() With { _
.Id = CType(2147483649UI, UInt32Value), _
.RelationshipId = "rId1" _
}), New TextStyles(New TitleStyle(), New BodyStyle(), New OtherStyle()))
slideMasterPart1.SlideMaster = slideMaster
Return slideMasterPart1
End Function
生成的 PresentationML
Open XML SDK 2.0 代码运行时,以下 XML 会写入代码中引用的 PresentationML 文档。
<?xml version="1.0" encoding="utf-8"?>
<p:sldMaster 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 Placeholder 1" />
<p:cNvSpPr>
<a:spLocks noGrp="1"
xmlns:a="https://schemas.openxmlformats.org/drawingml/2006/main" />
</p:cNvSpPr>
<p:nvPr>
<p:ph type="title" />
</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" />
</p:txBody>
</p:sp>
</p:spTree>
</p:cSld>
<p:clrMap bg1="lt1"
tx1="dk1"
bg2="lt2"
tx2="dk2"
accent1="accent1"
accent2="accent2"
accent3="accent3"
accent4="accent4"
accent5="accent5"
accent6="accent6"
hlink="hlink"
folHlink="folHlink" />
<p:sldLayoutIdLst>
<p:sldLayoutId id="2147483649"
r:id="rId1"
xmlns:r="https://schemas.openxmlformats.org/officeDocument/2006/relationships" />
</p:sldLayoutIdLst>
<p:txStyles>
<p:titleStyle />
<p:bodyStyle />
<p:otherStyle />
</p:txStyles>
</p:sldMaster>