Работа с презентациями
В этом разделе рассматривается класс Open XML SDK для Office Presentation и его связь со схемой PresentationML формата файла Open XML. Дополнительные сведения об общей структуре частей и элементов, составляющих документ PresentationML, см. в разделе Структура документа PresentationML.
Презентации в PresentationML
Спецификация ISO/IEC 29500 описывает элемент Open XML PresentationML <presentation/>
, используемый для представления презентации в документе PresentationML, следующим образом:
В этом элементе указываются фундаментальные свойства всей презентации.
Пример: Рассмотрим следующую презентацию с одним слайдом master и двумя слайдами. Помимо этих основных элементов также могут быть заданы и другие свойства, например размер слайда, размер заметок и стили текста по умолчанию.
<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/>
при работе с презентациями, и соответствующие им классы пакета SDK Open XML.
Элемент PresentationML | Класс пакета SDK Open XML |
---|---|
<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/>
в схеме формата файлов Open XML для документов PresentationML. Используйте класс для Presentation
управления отдельным <presentation/>
элементом в документе PresentationML.
Классы, обычно связанные с классом Presentation
, показаны в следующих разделах.
Класс SlideMasterIdList
Все слайды, основанные на одном и том же образце слайда, наследуют от этого образца одинаковую разметку. Класс SlideMasterIdList
соответствует элементу <sldMasterIdList/>
. Спецификация ISO/IEC 29500 описывает элемент Open XML PresentationML<sldMasterIdList/>
, используемый для представления списка идентификаторов слайдов master в документе PresentationML следующим образом:
В этом элементе указывается список идентификаторов для образцов слайдов, доступных в соответствующей презентации. Образец слайда — это слайд, специально разработанный как шаблон для всех связанных дочерних слайдов.
© ISO/IEC 29500: 2016
Класс SlideMasterId
Класс SlideMasterId
соответствует элементу <sldMasterId/>
. Спецификация ISO/IEC 29500 описывает элемент Open XML PresentationML<sldMasterId/>
, используемый для представления идентификатора master слайда в документе PresentationML следующим образом:
В этом элементе указывается образец слайда, доступный в соответствующей презентации. Образец слайда — это слайд, специально разработанный как шаблон для всех связанных дочерних слайдов.
Пример. Рассмотрим следующую спецификацию слайда master в презентации
<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 следующим образом:
В этом элементе указывается список идентификаторов для слайдов, доступных в соответствующей презентации. Слайд содержит сведения, характерные для отдельного слайда, например фигуры и текст.
© ISO/IEC 29500: 2016
Класс SlideId
Класс SlideId
соответствует элементу <sldId/>
. Спецификация ISO/IEC 29500 описывает элемент Open XML PresentationML <sldId/>
, используемый для представления идентификатора слайда в документе PresentationML следующим образом:
В этом элементе указывается слайд, доступный в соответствующей презентации. Слайд содержит сведения, характерные для отдельного слайда, например фигуры и текст.
Пример. Рассмотрим следующую спецификацию слайда master в презентации
<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/>
, используемый для представления заметок master списка идентификаторов в документе PresentationML следующим образом:
В этом элементе указывается список идентификаторов для образцов заметок, доступных в соответствующей презентации. Образец заметок — это слайд, специально разработанный для печати вместе с прикрепленными заметками.
© ISO/IEC 29500: 2016
Класс HandoutMasterIdList
Класс HandoutMasterIdList
соответствует элементу <handoutMasterIdLst/>
. Спецификация ISO/IEC 29500 описывает элемент Open XML PresentationML<handoutMasterIdLst/>
, используемый для представления раздаточных материалов master списке идентификаторов в документе PresentationML следующим образом:
В этом элементе указывается список идентификаторов для образцов раздаточных материалов, доступных в соответствующей презентации. Образец раздаточных материалов — это слайд, разработанный специально для печати в качестве раздаточного материала.
© 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 описывает элемент Open XML PresentationML <sldSz/>
, используемый для представления размера слайда презентации в документе 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
Как показано в следующем примере кода пакета SDK Open XML, каждый экземпляр Presentation
класса связан с экземпляром PresentationPart класса , который представляет часть презентации, одну из обязательных частей пакета файла презентации PresentationML.
Таким Presentation
образом, класс, представляющий <presentation/>
элемент, также связан с рядом других классов, представляющих дочерние элементы <presentation/>
элемента . Среди этих классов, как показано в следующем примере кода, находятся классы SlideMasterIdList
, SlideIdList
, SlideSize
, NotesSize
и DefaultTextStyle
.
Пример кода Open XML SDK
В следующем примере кода из статьи Практическое руководство. Создание документа презентации путем предоставления имени файла используется Create метод PresentationDocument класса Open XML SDK для создания экземпляра того же класса с указанным именем и путем к файлу. Затем он использует AddPresentationPart метод для добавления экземпляра класса в PresentationPart файл документа. Затем создается экземпляр Presentation класса , представляющего презентацию. Он передает ссылку PresentationPart
на экземпляр класса в процедуру CreatePresentationParts
, которая создает другие необходимые части файла презентации. Процедура CreatePresentation
очищается путем закрытия экземпляра класса, открытого PresentationDocument
ранее.
Процедура CreatePresentationParts
создает экземпляры SlideMasterIdList
классов , SlideIdList
, SlideSize
, NotesSize
и и DefaultTextStyle
и добавляет их в презентацию.
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
При выполнении кода пакета SDK Open XML следующий 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>
См. также
Сведения о пакете SDK Open XML для Office
Практическое руководство. Создание документа презентации с указанием имени файла
Практическое руководство. Вставка нового слайда в презентацию
Практическое руководство. Удаление слайда из презентации
Практическое руководство. Получение количества слайдов в документе презентации