使用演示文稿
本主题讨论 Open XML SDK for Office Presentation 类,以及它与 Open XML 文件格式 PresentationML 架构的关系。 有关构成 PresentationML 文档的部件和元素的整体结构的详细信息,请参阅 PresentationML 文档的结构。
PresentationML 中的演示文稿
ISO/IEC 29500(该链接可能指向英文页面) 规范介绍了 Open XML PresentationML <presentation/>
元素,该元素用于表示 PresentationML 文档中的演示文稿,如下所示:
此元素中会指定演示文稿范围的基本属性。
例: 请考虑以下演示文稿,其中包含一个幻灯片母版和两张幻灯片。 除了这些常用的元素之外,还可以指定其他属性,如幻灯片大小、备注大小和默认文本样式。
<p:presentation xmlns:a="" xmlns:r="" xmlns:p="">
<p:sldMasterIdLst>
<p:sldMasterId id="2147483648" r:id="rId1">
</p:sldMasterIdLst>
<p:sldIdLst>
<p:sldId id="256" r:id="rId3"/>
<p:sldId id="257" r:id="rId4"/>
</p:sldIdLst>
<p:sldSz cx="9144000" cy="6858000" type="screen4x3"/>
<p:notesSz cx="6858000" cy="9144000"/>
<p:defaultTextStyle>
…
</p:defaultTextStyle>
</p:presentation>
© ISO/IEC 29500:2016
<presentation/>
元素通常包含一些子元素,这些子元素列出演示文稿中包含的幻灯片母版、幻灯片和自定义幻灯片放映。 此外,它通常还包含用于指定其他演示文稿属性(如幻灯片大小、备注大小和默认文本样式)的元素。
<presentation/>
元素是 PresentationML Presentation 部件的根元素。 有关构成 PresentationML 文档的部件和元素的整体结构的详细信息,请参阅 PresentationML 文档的结构。
下表列出了处理演示文稿时使用的元素的 <presentation/>
一些最常见的子元素以及与之对应的 Open XML SDK 类。
PresentationML 元素 | Open XML SDK 类 |
---|---|
<sldMasterIdLst/> |
SlideMasterIdList |
<sldMasterId/> |
SlideMasterId |
<sldIdLst/> |
SlideIdList |
<sldId/> |
SlideId |
<notesMasterIdLst/> |
NotesMasterIdList |
<handoutMasterIdLst/> |
SlideMasterIdList |
<custShowLst/> |
CustomShowList |
<sldSz/> |
SlideSize |
<notesSz/> |
<xrefDocumentFormat.OpenXml.Presentation.NotesSize> |
<defaultTextStyle/> |
DefaultTextStyle |
Open XML SDK 演示文稿类
Open XML SDK Presentation
类表示 <presentation/>
在 PresentationML 文档的 Open XML 文件格式架构中定义的元素。
Presentation
使用 类操作 PresentationML 文档中的单个<presentation/>
元素。
以下各节显示了通常与 Presentation
类关联的类。
SlideMasterIdList 类
共享同一母版的所有幻灯片都从该母版继承同一布局。 类 SlideMasterIdList
对应于 <sldMasterIdList/>
元素。
ISO/IEC 29500 规范描述了 Open XML PresentationML <sldMasterIdList/>
元素,该元素用于在 PresentationML 文档中表示幻灯片母版 ID 列表,如下所示:
该元素指定相应演示文稿中提供的幻灯片母版幻灯片的标识信息列表。 幻灯片母版是专门设计用作所有相关子布局幻灯片的模板的幻灯片。
© ISO/IEC 29500:2016
SlideMasterId 类
类 SlideMasterId
对应于 <sldMasterId/>
元素。
ISO/IEC 29500 规范描述了 Open XML PresentationML <sldMasterId/>
元素,该元素用于在 PresentationML 文档中表示幻灯片母版 ID,如下所示:
该元素指定相应演示文稿中提供的幻灯片母版。 幻灯片母版是专门设计用作所有相关子布局幻灯片的模板的幻灯片。
示例:考虑演示文稿中幻灯片母版的以下规范
<p:presentation xmlns:a="" xmlns:r="" xmlns:p=""
embedTrueTypeFonts="1">
…
<p:sldMasterIdLst>
<p:sldMasterId id="2147483648" r:id="rId1"/>
</p:sldMasterIdLst>
…
</p:presentation>
© ISO/IEC 29500:2016
SlideIdList 类
类 SlideIdList
对应于 <sldIdLst/>
元素。
ISO/IEC 29500 规范描述了 Open XML PresentationML <sldIdLst/>
元素,该元素用于表示 PresentationML 文档中的幻灯片 ID 列表,如下所示:
该元素指定相应演示文稿中提供的幻灯片的标识信息列表。 幻灯片包含特定于单个幻灯片的信息,如特定于幻灯片的形状和文本信息。
© ISO/IEC 29500:2016
SlideId 类
类 SlideId
对应于 <sldId/>
元素。
ISO/IEC 29500 规范描述了用于在 PresentationML <sldId/>
文档中表示幻灯片 ID 的 Open XML PresentationML 元素,如下所示:
该元素指定相应演示文稿中提供的演示文稿幻灯片。 幻灯片包含特定于单个幻灯片的信息,如特定于幻灯片的形状和文本信息。
示例:考虑演示文稿中幻灯片母版的以下规范
<p:presentation xmlns:a="" xmlns:r="" xmlns:p="" embedTrueTypeFonts="1">
…
<p:sldIdLst>
<p:sldId id="256" r:id="rId3"/>
<p:sldId id="257" r:id="rId4"/>
<p:sldId id="258" r:id="rId5"/>
<p:sldId id="259" r:id="rId6"/>
<p:sldId id="260" r:id="rId7"/>
</p:sldIdLst>
...
</p:presentation>
© ISO/IEC 29500:2016
NotesMasterIdList 类
类 NotesMasterIdList
对应于 <notesMasterIdLst/>
元素。
ISO/IEC 29500 规范描述了 Open XML PresentationML <notesMasterIdLst/>
元素,该元素用于表示 PresentationML 文档中的笔记主控 ID 列表,如下所示:
该元素指定相应演示文稿中提供的备注母版幻灯片的标识信息列表。 备注母版是专门设计用于将幻灯片与任何附加备注一起打印的幻灯片。
© ISO/IEC 29500:2016
HandoutMasterIdList 类
类 HandoutMasterIdList
对应于 <handoutMasterIdLst/>
元素。
ISO/IEC 29500 规范描述了 Open XML PresentationML <handoutMasterIdLst/>
元素,该元素用于表示 PresentationML 文档中的讲义母版 ID 列表,如下所示:
该元素指定相应演示文稿中提供的讲义母版幻灯片的标识信息列表。 讲义母版是专门设计用于打印为讲义的幻灯片。
© ISO/IEC 29500:2016
CustomShowList 类
类 CustomShowList
对应于 <custShowLst/>
元素。
ISO/IEC 29500 规范描述了 Open XML PresentationML <custShowLst/>
元素,该元素用于表示 PresentationML 文档中的自定义显示列表,如下所示:
该元素指定相应演示文稿中提供的所有自定义放映列表。 自定义放映是定义的幻灯片序列,它允许以任意顺序显示演示文稿中的幻灯片。
© ISO/IEC 29500:2016
SlideSize 类
类 SlideSize
对应于 <sldSz/>
元素。
ISO/IEC 29500 规范描述了用于在 PresentationML <sldSz/>
文档中表示演示文稿幻灯片大小的 Open XML PresentationML 元素,如下所示:
该元素指定演示文稿幻灯片平面的大小。 演示文稿幻灯片中的对象可以在这些范围之外指定,但这是呈现或打印幻灯片时显示的背景平面的大小。
示例:请考虑以下指定演示文稿幻灯片的大小。
<p:presentation xmlns:a="" xmlns:r="" xmlns:p=""
embedTrueTypeFonts="1">
…
<p:sldSz cx="9144000" cy="6858000" type="screen4x3"/>
…
</p:presentation>
© ISO/IEC 29500:2016
NotesSize 类
类 NotesSize
对应于 <notesSz/>
元素。
ISO/IEC 29500 规范描述了 Open XML PresentationML <notesSz/>
元素,该元素用于表示 PresentationML 文档中的备注幻灯片大小,如下所示:
该元素指定用于备注幻灯片和讲义幻灯片的幻灯片平面的大小。 备注幻灯片中的对象可以在这些范围之外指定,但是呈现或打印时备注幻灯片具有指定大小的背景平面。 该元素用于指定在应用程序可选择生成的任何特殊打印输出格式(如,大纲讲义)中与内容适应的区域。
示例:请考虑以下指定备注幻灯片的大小。
<p:presentation xmlns:a="" xmlns:r="" xmlns:p=""
embedTrueTypeFonts="1">
…
<p:notesSz cx="9144000" cy="6858000"/>
…
</p:presentation>
© ISO/IEC 29500:2016
DefaultTextStyle 类
类 DefaultTextStyle
对应于 <defaultTextStyle/>
元素。
ISO/IEC 29500 规范描述了 Open XML PresentationML <defaultTextStyle/>
元素,该元素用于表示 PresentationML 文档中的默认文本样式,如下所示:
该元素指定要在演示文稿中使用的默认文本样式。 插入新幻灯片时,如果该幻灯片未与母版幻灯片相关联或者如果未以其他方式为演示文稿幻灯片中的文本指定样式信息,则可以引用此处定义的文本样式。
© ISO/IEC 29500:2016
处理 Presentation 类
如下面的 Open XML SDK 代码示例所示,类的每个实例 Presentation
都与 类的 PresentationPart 一个实例相关联,该实例表示一个演示文稿部件,这是 PresentationML 演示文稿文件包的必需部分之一。
Presentation
因此,表示 元素的<presentation/>
类也与一系列表示元素子元素<presentation/>
的其他类相关联。 如下面的代码示例所示,这些类包括 SlideMasterIdList
、 SlideIdList
、 SlideSize
、 NotesSize
和 DefaultTextStyle
类。
Open XML SDK 代码示例
如何:通过提供文件名创建演示文稿文档一文中的以下代码示例使用 Create Open XML SDK 的 类的 方法PresentationDocument创建具有指定名称和文件路径的同一类的实例。 然后, AddPresentationPart 它使用 方法将 类的 PresentationPart 实例添加到文档文件。 接下来,它将创建表示演示文稿的 Presentation 类的实例。 它将对类实例CreatePresentationParts
的PresentationPart
引用传递给过程,该过程创建演示文稿文件的其他必需部分。 该过程 CreatePresentation
通过关闭之前打开的 PresentationDocument
类实例进行清理。
该过程CreatePresentationParts
创建 、、SlideIdList
、 SlideSize
NotesSize
和 DefaultTextStyle
类的SlideMasterIdList
实例,并将其追加到演示文稿中。
static void CreatePresentation(string filepath)
{
// Create a presentation at a specified file path. The presentation document type is pptx, by default.
using (PresentationDocument presentationDoc = PresentationDocument.Create(filepath, PresentationDocumentType.Presentation))
{
PresentationPart presentationPart = presentationDoc.AddPresentationPart();
presentationPart.Presentation = new Presentation();
CreatePresentationParts(presentationPart);
}
}
static void CreatePresentationParts(PresentationPart presentationPart)
{
SlideMasterIdList slideMasterIdList1 = new SlideMasterIdList(new SlideMasterId() { Id = (UInt32Value)2147483648U, RelationshipId = "rId1" });
SlideIdList slideIdList1 = new SlideIdList(new SlideId() { Id = (UInt32Value)256U, RelationshipId = "rId2" });
SlideSize slideSize1 = new SlideSize() { Cx = 9144000, Cy = 6858000, Type = SlideSizeValues.Screen4x3 };
NotesSize notesSize1 = new NotesSize() { Cx = 6858000, Cy = 9144000 };
DefaultTextStyle defaultTextStyle1 = new DefaultTextStyle();
presentationPart.Presentation.Append(slideMasterIdList1, slideIdList1, slideSize1, notesSize1, defaultTextStyle1);
SlidePart slidePart1;
SlideLayoutPart slideLayoutPart1;
SlideMasterPart slideMasterPart1;
ThemePart themePart1;
slidePart1 = CreateSlidePart(presentationPart);
slideLayoutPart1 = CreateSlideLayoutPart(slidePart1);
slideMasterPart1 = CreateSlideMasterPart(slideLayoutPart1);
themePart1 = CreateTheme(slideMasterPart1);
slideMasterPart1.AddPart(slideLayoutPart1, "rId1");
presentationPart.AddPart(slideMasterPart1, "rId1");
presentationPart.AddPart(themePart1, "rId5");
}
生成的 PresentationML
Open XML SDK 代码运行时,以下 XML 将写入代码中引用的 PresentationML 文档。
<?xml version="1.0" encoding="utf-8" ?>
<p:presentation xmlns:p="http://schemas.openxmlformats.org/presentationml/2006/main">
<p:sldMasterIdLst>
<p:sldMasterId id="2147483648" r:id="rId1" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"/>
</p:sldMasterIdLst>
<p:sldIdLst>
<p:sldId id="256" r:id="rId2" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"/>
</p:sldIdLst>
<p:sldSz cx="9144000" cy="6858000" type="screen4x3"/>
<p:notesSz cx="6858000" cy="9144000"/>
<p:defaultTextStyle/>
</p:presentation>