使用幻灯片母版

本主题讨论 Open XML SDK for Office SlideMaster 类,以及它与 Open XML 文件格式 PresentationML 架构的关系。

PresentationML 中的幻灯片母版

ISO/IEC 29500(该链接可能指向英文页面) 规范介绍了 Open XML PresentationML <sldMaster/> 元素,此元素用于表示 PresentationML 文档中的幻灯片版式,如下所示。

此元素指定幻灯片母版幻灯片的实例。 幻灯片母版幻灯片中包含描述演示文稿幻灯片中的对象及其相应格式的所有元素。 幻灯片母版幻灯片中包含两个主元素。 cSld 元素指定通用幻灯片元素,如形状及其附加的文本正文。 txStyles 元素指定每个此类形状中的文本的格式。 幻灯片母版幻灯片中的其他属性指定演示文稿幻灯片中的其他属性,如颜色信息、页眉和页脚以所有相应演示文稿幻灯片的计时和切换信息。

<sldMaster/> 元素是 PresentationML 幻灯片母版部件的根元素。 有关构成 PresentationML 文档的部件和元素的整体结构的详细信息,请参阅 PresentationML 文档的结构

下表列出了使用幻灯片母版时使用的元素的 <sldMaster/> 子元素以及与之对应的 Open XML SDK 类。

PresentationML 元素 Open XML SDK 类
<clrMap/> ColorMap
<cSld/> CommonSlideData
<extLst/> ExtensionListWithModification
<hf/> HeaderFooter
<sldLayoutIdLst/> SlideLayoutIdList
<timing/> Timing
<transition/> Transition
<txStyles/> TextStyles

ISO/IEC 29500(该链接可能指向英文页面) 规范中的以下表介绍了 <sldMaster/> 元素。

属性 说明
preserve(保留幻灯片母版) 指定删除应用相应幻灯片版式的所有幻灯片时是否删除该版式。 如果未指定此属性,则生成应用程序应采用 值 false 。 这意味着,如果演示文稿中没有幻灯片与该幻灯片相关联,则该幻灯片实际上会被删除。
此属性的可能值由 W3C XML 架构 Boolean 数据类型定义。

Open XML SDK SlideMaster 类

Open XML SDKSlideMaster 类表示 <sldMaster/> 在 PresentationML 文档的 Open XML 文件格式架构中定义的元素。 SlideMaster使用 类可操作 PresentationML 文档中的各个<sldMaster/>元素。

以下列表中显示了表示 元素的 <sldMaster/> 子元素并且因此通常与 SlideMaster 类关联的类。

ColorMapOverride 类

ColorMapOverride 对应于 <clrMapOvr/> 元素。 ISO/IEC 29500 规范中的以下信息介绍了 元素<clrMapOvr/>

此元素提供一种机制,使用此机制可以替代 <ClrMap/> 元素中列出的配色方案。 如果存在 <masterClrMapping/> 子元素,则使用母版定义的配色方案。 如果存在 <overrideClrMapping/> 子元素,则它定义特定于父备注幻灯片、演示文稿幻灯片或幻灯片版式的新配色方案。

CommonSlideData 类

CommonSlideData 对应于 <cSld/> 元素。 ISO/IEC 29500 规范中的以下信息介绍了 元素<cSld/>

此元素指定与所有幻灯片类型相关的幻灯片信息类型的容器。 所有幻灯片都共享一组独立于幻灯片类型的通用属性;任何特定幻灯片的这些属性的描述都存储在该幻灯片的 <cSld/> 容器中。 由父元素指明的特定于幻灯片类型的幻灯片数据存储在其他位置。

<cSld/> 中的实际数据只描述特定的父幻灯片;这些数据只是存储的对所有幻灯片通用的信息类型。

ExtensionListWithModification 类

ExtensionListWithModification 对应于 <extLst/>元素。 ISO/IEC 29500 规范中的以下信息介绍了 元素<extLst/>

此元素指定具有修改能力的扩展列表,在该列表中定义元素类型 <ext/> 的所有未来扩展。 扩展列表以及相应的未来扩展用于扩展 PresentationML 框架的存储功能。 这允许在框架中本机存储各种新类型的数据。

注意

使用此 extLst 元素,生成应用程序可以存储是否已修改此扩展属性。

HeaderFooter 类

HeaderFooter 对应于 <hf/> 元素。 ISO/IEC 29500 规范中的以下信息介绍了 元素<hf/>

此元素指定幻灯片的页眉和页脚信息。 页眉和页脚由文本占位符组成,它们在所有幻灯片和幻灯片类型中应该保持一致,例如日期和时间、幻灯片编号以及自定义页眉和页脚文本。

SlideLayoutIdList 类

SlideLayoutIdList 对应于 <sldLayoutIdLst/> 元素。 ISO/IEC 29500 规范中的以下信息介绍了 元素<sldLayoutIdLst/>

此元素指定存在幻灯片版式标识列表。 此列表包含在幻灯片母版中,用于确定将在幻灯片母版文件中使用哪些版式。 幻灯片版式列表中的每个版式都具有它自己的标识号和关系标识符,关系标识符在演示文稿文档和使用该版式的特定母版幻灯片中唯一标识该版式。

Timing 类

Timing 对应于 <timing/> 元素。 ISO/IEC 29500 规范中的以下信息介绍了 元素<timing/>

此元素指定用于处理对应幻灯片中的所有动画和定时事件的计时信息。 此信息通过 <timing/> 元素中的时间节点进行跟踪。 有关这些时间节点及其定义方式的详细信息,请参阅 PresentationML 框架中的"动画"部分。

Transition 类

Transition 对应于 <transition/> 元素。 ISO/IEC 29500 规范中的以下信息介绍了 元素<transition/>

此元素指定应该用于从前一幻灯片切换到当前幻灯片的幻灯片切换类型。 也就是说,切换信息存储在切换完成后显示的幻灯片中。

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>
                    <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>

在前面的示例中,根据上述格式设置演示文稿中所有相关幻灯片的标题文本。

处理 SlideMaster 类

如下面的 Open XML SDK 代码示例所示,类的每个实例 SlideMaster 都与 类的 SlideMasterPart 一个实例相关联,该实例表示幻灯片母版部件,这是 PresentationML 演示文稿文件包的必需部分之一。 每个SlideMaster类实例还必须与 和 Slide 类的SlideLayout实例相关联,这些实例又与由 和 SlidePart 类表示SlideLayoutPart的类似命名所需的表示部件相关联。

SlideMaster因此,表示 元素的<sldMaster/>类也与一系列表示元素子元素<sldMaster/>的其他类相关联。 如以下代码示例所示,这些类包括 CommonSlideData 类、 ColorMap 类、 ShapeTree 类和 Shape 类。

Open XML SDK 代码示例

如何:通过提供文件名创建演示文稿文档一文中的以下方法将新的幻灯片母版部件添加到现有演示文稿,并在新的幻灯片母版部件中创建 Open XML SDK SlideMaster 类的实例。 类SlideMaster构造函数创建 类和 ColorMapSlideLayoutIdListTextStyles 类的实例CommonSlideData。 类 CommonSlideData 构造函数创建 类的 ShapeTree 实例,其构造函数反过来又创建其他类实例:类的 NonVisualGroupShapeProperties 实例、类的 GroupShapeProperties 实例和 类的 Shape 实例等。

代码中由字母 P 表示的命名空间是 命名空间。

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;
}