Работа со слайдами презентации
В этом разделе рассматривается класс Open XML SDK для Office Slide и его связь со схемой PresentationML формата файла Open XML. Дополнительные сведения об общей структуре частей и элементов, составляющих документ PresentationML, см. в разделе Структура документа PresentationML.
Слайды презентации в PresentationML
Спецификация ISO/IEC 29500 описывает элемент Open XML PresentationML <sld/>
, используемый для представления слайда презентации в документе PresentationML следующим образом:
Этот элемент определяет слайд в списке слайдов. Список слайдов используется для указания порядка слайдов.
Пример. Рассмотрим следующее настраиваемое шоу с упорядочением слайдов.
<p:custShowLst>
<p:custShow name="Custom Show 1" id="0">
<p:sldLst>
<p:sld r:id="rId4"/>
<p:sld r:id="rId3"/>
<p:sld r:id="rId2"/>
<p:sld r:id="rId5"/>
</p:sldLst>
</p:custShow>
</p:custShowLst>
В вышеуказанном примере порядок слайдов такой: слайд 4, затем 3, 2, и, наконец, 5.
© ISO/IEC 29500: 2016
Элемент <sld/>
является корневым элементом части PresentationML Slide. Дополнительные сведения об общей структуре частей и элементов документа PresentationML см. в разделе Структура документа PresentationML.
В следующей таблице перечислены дочерние элементы элемента, используемого <sld/>
при работе со слайдами презентации, и соответствующие им классы пакета SDK Open XML.
Элемент PresentationML | Класс пакета SDK Open XML |
---|---|
<clrMapOvr /> |
ColorMapOverride |
<cSld /> |
CommonSlideData |
<extLst /> |
ExtensionListWithModification |
<timing /> |
Timing |
<transition /> |
Transition |
Класс слайдов пакета SDK Open XML
Класс Open XML SDK Slide
представляет элемент, определенный <sld/>
в схеме формата файлов Open XML для документов PresentationML.
Используйте объект для Slide
управления отдельными <sld/>
элементами в документе PresentationML.
Классы, обычно связанные с классом Slide
, показаны в следующих разделах.
Класс ColorMapOverride
Класс ColorMapOverride
соответствует элементу <clrMapOvr/>
. Этот элемент представлен <clrMapOvr/>
в следующей информации из спецификации ISO/IEC 29500:
Этот элемент предоставляет механизм, с помощью которого можно переопределить цветовые схемы, перечисленные в элементе <ClrMap/>
. Если дочерний <masterClrMapping/>
элемент присутствует, используется цветовая схема, определенная master. Если дочерний <overrideClrMapping/>
элемент присутствует, он определяет новую цветовую схему, относясь к родительскому слайду заметок, слайду презентации или макету слайда.
© ISO/IEC 29500: 2016
Класс CommonSlideData
Класс CommonSlideData
соответствует элементу <cSld/>
. Этот элемент представлен <cSld/>
в следующей информации из спецификации ISO/IEC 29500:
Этот элемент задает контейнер для сведений о слайде, которые применимы ко всем типам слайдов. Все слайды имеют общий набор свойств, не зависящих от типа слайда; описание этих свойств для любого конкретного слайда хранится в контейнере слайда <cSld/>
. Сведения о слайде для конкретного типа слайда, определенного родительским элементом, хранятся в другом месте.
Фактические данные в <cSld/>
описывают только конкретный родительский слайд; это только тип хранимой информации, который является общим для всех слайдов.
© ISO/IEC 29500: 2016
Класс ExtensionListWithModification
Класс ExtensionListWithModification
соответствует элементу <extLst/>
. Следующие сведения из
В спецификации <extLst/>
представлен элемент :
Этот элемент задает список расширений с возможностью изменения, в котором определяются все будущие расширения типа <ext/>
элемента.
Список расширений вместе с соответствующими будущими расширениями используется для расширения возможностей хранения инфраструктуры PresentationML. Это обеспечивает встроенную возможность хранения новых типов данных в инфраструктуре.
[Примечание. Использование этого extLst
элемента позволяет создаваемому приложению сохранять, было ли изменено это свойство расширения. В качестве примера свойств абзаца можно привести выравнивание, границу, переопределение переносов, отступы, межстрочный интервал, заливка, направление текста и запрет висячих строк.]
© ISO/IEC 29500: 2016
Класс Timing
Класс Timing
соответствует элементу <timing/>
. Этот элемент представлен <timing/>
в следующей информации из спецификации ISO/IEC 29500:
В этом элементе задаются данные хронометража для обработки анимации и событий с привязкой по времени внутри соответствующего слайда. Эти сведения отслеживаются с помощью узлов времени в элементе <timing/>
.
Дополнительные сведения о характеристиках таких узлов времени и способах их определения можно найти в разделе "Анимация" инфраструктуры PresentationML.
© ISO/IEC 29500: 2016
Класс Transition
Класс Transition
соответствует элементу <transition/>
. Этот элемент представлен <transition/>
в следующей информации из спецификации ISO/IEC 29500:
В этом элементе задается тип перехода, который должен использоваться для перехода к текущему слайду от предыдущего. То есть данные о переходе хранятся на слайде, который появляется после завершения перехода.
© ISO/IEC 29500: 2016
Работа с классом Slide
Как показано в следующем примере кода open XML SDK, каждый экземпляр Slide
класса связан с экземпляром SlidePart класса , который представляет часть слайда, одну из обязательных частей пакета файла презентации PresentationML. Каждый экземпляр Slide
класса также должен быть связан с экземплярами SlideLayout классов и SlideMaster , которые, в свою очередь, связаны с аналогичными именоваными обязательными частями представления, представленными классами SlideLayoutPart и SlideMasterPart .
Таким Slide
образом, класс, представляющий <sld/>
элемент, также связан с рядом других классов, представляющих дочерние элементы <sld/>
элемента . К этим классам, как показано в следующем примере кода, относятся CommonSlideData
класс, ColorMapOverride
класс, ShapeTree класс и Shape класс .
Пример кода Open XML SDK
Следующий метод из статьи Практическое руководство. Создание документа презентации путем предоставления имени файла добавляет новую часть слайда в существующую презентацию и создает экземпляр класса Open XML SDK Slide
в новой части слайда.
Конструктор Slide
класса создает экземпляры CommonSlideData
классов и ColorMapOverride
. Конструктор CommonSlideData
класса создает экземпляр ShapeTree
класса, конструктор которого, в свою очередь, создает дополнительные экземпляры класса: экземпляр NonVisualGroupShapeProperties класса, GroupShapeProperties класс и Shape
класс .
Все эти экземпляры классов и экземпляры классов, представляющих дочерние элементы <sld/>
элемента, необходимы для создания минимального количества XML-элементов, необходимых для представления нового слайда.
Пространство имен, представленное буквой P в коде, является пространством имен.
static SlidePart CreateSlidePart(PresentationPart presentationPart)
{
SlidePart slidePart1 = presentationPart.AddNewPart<SlidePart>("rId2");
slidePart1.Slide = new Slide(
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 1" },
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() { Language = "en-US" }))))),
new ColorMapOverride(new MasterColorMapping()));
return slidePart1;
}
Чтобы добавить другую фигуру в дерево фигур и, следовательно, на слайд, создайте экземпляр второго Shape
объекта, передав в конструктор дополнительный параметр, содержащий приведенный ниже код ShapeTree
.
new P.Shape(
new P.NonVisualShapeProperties(
new P.NonVisualDrawingProperties() { Id = (UInt32Value)2U, Name = "Title 1" },
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() { Language = "en-US" }))))),
Созданный код PresentationML
При выполнении кода open XML SDK в методе следующий XML-код записывается в файл документа PresentationML, на который ссылается в коде.
<?xml version="1.0" encoding="utf-8" ?>
<p:sld xmlns:p="http://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="http://schemas.openxmlformats.org/drawingml/2006/main" />
</p:grpSpPr>
<p:sp>
<p:nvSpPr>
<p:cNvPr id="2" name="Title 1" />
<p:cNvSpPr>
<a:spLocks noGrp="1" xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" />
</p:cNvSpPr>
<p:nvPr>
<p:ph />
</p:nvPr>
</p:nvSpPr>
<p:spPr />
<p:txBody>
<a:bodyPr xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" />
<a:lstStyle xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" />
<a:p xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main">
<a:endParaRPr lang="en-US" />
</a:p>
</p:txBody>
</p:sp>
</p:spTree>
</p:cSld>
<p:clrMapOvr>
<a:masterClrMapping xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" />
</p:clrMapOvr>
</p:sld>
См. также
Сведения о пакете SDK Open XML для Office
Практическое руководство. Вставка нового слайда в презентацию
Практическое руководство. Удаление слайда из презентации
Практическое руководство. Получение количества слайдов в документе презентации
Практическое руководство. Применение темы к презентации
Практическое руководство. Создание документа презентации с указанием имени файла