使用备注幻灯片
上次修改时间: 2010年10月8日
适用范围: Excel 2010 | Office 2010 | PowerPoint 2010 | Word 2010
本文内容
PresentationML 中的备注幻灯片
Open XML SDK 2.0 NotesSlide 类
处理 NotesSlide 类
Open XML SDK 代码示例
生成的 PresentationML
本主题讨论 Open XML SDK 2.0 NotesSlide 类以及它与 Open XML 文件格式 PresentationML 架构的关系。
PresentationML 中的备注幻灯片
ISO/IEC 29500(该链接可能指向英文页面) 规范介绍了 Open XML PresentationML <notes> 元素,此元素用于表示 PresentationML 文档中的备注幻灯片,如下所示:
此元素指定存在备注幻灯片及其相应数据。备注幻灯片包含所有通用幻灯片元素以及特定于 notes 元素的其他属性。
[示例:考虑以下 PresentationML 备注幻灯片:
<p:notes>
<p:cSld>
…
</p:cSld>
…
</p:notes>
在上面的示例中,notes 元素指定存在备注幻灯片以及它的所有部件。请注意 cSld 元素,此元素指定可以显示在任何幻灯片类型中的通用元素,接下来的任何元素都用于指定此备注幻灯片的其他非通用属性。示例结束]
© ISO/IEC29500: 2008。
<notes> 元素是 PresentationML 备注幻灯片部件的根元素。有关构成 PresentationML 文档的部件和元素的整体结构的详细信息,请参阅 PresentationML 文档的结构。
下表列出了在处理备注幻灯片时使用的 <notes> 元素的子元素以及与它们对应的 Open XML SDK 2.0 类。
PresentationML 元素 |
Open XML SDK 2.0 类 |
---|---|
<clrMapOvr> |
|
<cSld> |
|
<extLst> |
ISO/IEC 29500(该链接可能指向英文页面) 规范中的以下表介绍了 <notes> 元素。
属性 |
说明 |
---|---|
showMasterPhAnim(显示母版占位符动画) |
指定是否显示母版幻灯片中占位符的动画。 此属性可能的值由 W3C XML 架构 boolean 数据类型定义。 |
showMasterSp(显示母版形状) |
指定是否在幻灯片上显示母版幻灯片上的形状。 此属性可能的值由 W3C XML 架构 boolean 数据类型定义。 |
© ISO/IEC29500: 2008。
Open XML SDK 2.0 NotesSlide 类
OXML SDK NotesSlide 类表示在 PresentationML 文档的 Open XML 文件格式架构中定义的 <notes> 元素。使用 NotesSlide 类可对 PresentationML 文档中的各个 <notes> 元素进行操作。
下面的列表显示了表示 <notes> 元素的子元素并因此通常与 NotesSlide 类关联的类。
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。
处理 NotesSlide 类
如下面的 Open XML SDK 代码示例所示,每个 NotesSlide 类实例与一个 NotesSlidePart 类实例相关联,后者表示备注幻灯片部件,它是 PresentationML 演示文稿文件包的部件之一并且是演示文稿文件中的每个备注幻灯片所需的部件。每个 NotesSlide 类实例还可以与一个 NotesMaster 类实例相关联,后者又与由 NotesMasterPart 类表示的具有相似名称的演示文稿部件相关联。
因此,表示 <notes> 元素的 NotesSlide 类还与表示 <notes> 元素的子元素的一系列其他类相关联。这些类包括 CommonSlideData 类和 ColorMapOverride 类,如下面的代码示例所示。ShapeTree 类和 Shape 类又与 CommonSlideData 类相关联。
Open XML SDK 代码示例
以下方法向现有演示文稿添加新备注幻灯片部件并在新备注幻灯片部件中创建 Open XML SDK 2.0 NotesSlide 类的实例。NotesSlide 类构造函数创建 CommonSlideData 类和 ColorMap 类的实例。CommonSlideData 类构造函数创建 ShapeTree 类的实例,后者的构造函数又创建其他类实例:NonVisualGroupShapeProperties 类实例、GroupShapeProperties 类实例和 Shape 类实例。
代码中由字母 P 表示的命名空间是 DocumentFormat.OpenXml.Presentation 命名空间。
private static NotesSlidePart CreateNotesSlidePart(SlidePart slidePart1)
{
NotesSlidePart notesSlidePart1 = slidePart1.AddNewPart<NotesSlidePart>("rId6");
NotesSlide notesSlide = new NotesSlide(
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 = "" },
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()))))),
new ColorMapOverride(new MasterColorMapping()));
notesSlidePart1.NotesSlide = notesSlide;
return notesSlidePart1;
}
Private Shared Function CreateNotesSlidePart(ByVal slidePart1 As SlidePart) As NotesSlidePart
Dim notesSlidePart1 As NotesSlidePart = slidePart1.AddNewPart(Of NotesSlidePart)("rId6")
Dim notesSlide As New NotesSlide(New CommonSlideData(New ShapeTree(New P.NonVisualGroupShapeProperties(New P.NonVisualDrawingProperties() With { _
.Id = DirectCast(1UI, UInt32Value), _
.Name = "" _
}, New P.NonVisualGroupShapeDrawingProperties(), New ApplicationNonVisualDrawingProperties()), New _
GroupShapeProperties(New TransformGroup()), New P.Shape(New P.NonVisualShapeProperties(New P.NonVisualDrawingProperties() With { _
.Id = DirectCast(2UI, UInt32Value), _
.Name = "" _
}, 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()))))),
New ColorMapOverride(New MasterColorMapping()))
notesSlidePart1.NotesSlide = notesSlide
Return notesSlidePart1
End Function
生成的 PresentationML
Open XML SDK 2.0 代码运行时,以下 XML 会写入代码中引用的 PresentationML 文档。
<?xml version="1.0" encoding="utf-8"?>
<p:notes 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="" />
<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 />
</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:notes>