Работа с макетами слайдов
В этом разделе рассматривается класс Open XML SDK для Office SlideLayout и его связь со схемой PresentationML формата файла Open XML.
Макеты слайдов в PresentationML
Спецификация ISO/IEC 29500 описывает элемент Open XML PresentationML <sldLayout/>
, используемый для представления макетов слайдов в документе PresentationML следующим образом:
Этот элемент задает экземпляр макета слайда. Макет слайда, по сути, содержит макет слайда шаблона, который можно применить к любому существующему слайду. При применении к существующему слайду все соответствующее содержимое должно быть сопоставлено с новым макетом слайда.
Элемент <sldLayout/>
является корневым элементом части Макет слайдов PresentationML. Дополнительные сведения об общей структуре частей и элементов документа PresentationML см. в разделе Структура документа PresentationML.
В следующей таблице перечислены дочерние элементы элемента, используемого <sldLayout/>
при работе с макетами слайдов, и соответствующие им классы пакета SDK Open XML.
Элемент PresentationML | Класс пакета SDK Open XML |
---|---|
<clrMapOvr/> |
ColorMapOverride |
<cSld/> |
CommonSlideData |
<extLst/> |
ExtensionListWithModification |
<hf/> |
HeaderFooter |
<timing/> |
Timing |
<transition/> |
Transition |
В следующей таблице из спецификации ISO/IEC 29500 (Возможно, на английском языке) представлено описание атрибутов элемента <sldLayout/>
.
Атрибуты | Описание |
---|---|
matchingName (соответствующее имя) | Задает имя, которое должно использоваться вместо атрибута имени в элементе cSld. Оно используется для сопоставления макетов при изменениях макетов и применении шаблонов. Возможные значения для этого атрибута определяются типом данных схемы string XML W3C. |
preserve (сохранять макет слайда) | Указывает, удаляется ли соответствующий макет слайда при удалении всех слайдов с данным макетом. Если этот атрибут не указан, то создаваемое приложение должно принимать значение false . Это означает, что макет слайда будет удален, если с ним не связан ни один слайд в презентации.Возможные значения для этого атрибута определяются типом данных схемы boolean XML W3C. |
showMasterPhAnim (показывать анимацию заполнителей с главного слайда) | Указывает, следует ли показывать анимацию заполнителей с главного слайда. Возможные значения для этого атрибута определяются типом данных схемы boolean XML W3C. |
showMasterSp (показывать фигуры с главного слайда) | Указывает, следует ли показывать на слайдах фигуры с главного слайда. Возможные значения для этого атрибута определяются типом данных схемы boolean XML W3C. |
type (тип макета слайда) | Указывает тип макета слайда для данного слайда. Допустимые значения этого атрибута определяются простым типом данных ST_SlideLayoutType (§19.7.15). |
userDrawn (нарисовано пользователем) | Указывает, был ли соответствующий объект нарисован пользователем и следует ли поэтому запретить его удаление. Это позволяет отмечать слайды с пользовательскими рисунками. Возможные значения для этого атрибута определяются типом данных схемы boolean XML W3C. |
Класс SlideLayout пакета SDK Для Open XML
Класс пакета SDK SlideLayout
OXML представляет элемент, определенный <sldLayout/>
в схеме формата файлов Open XML для документов PresentationML. Используйте класс для SlideLayout
управления отдельными <sldLayout/>
элементами в документе PresentationML.
Классы, представляющие дочерние <sldLayout/>
элементы элемента и поэтому обычно связанные с классом SlideLayout
, показаны в следующем списке.
Класс ColorMapOverride
Класс ColorMapOverride
соответствует элементу <clrMapOvr/>
. Этот элемент представлен <clrMapOvr/>
в следующей информации из спецификации ISO/IEC 29500:
Этот элемент предоставляет механизм, с помощью которого можно переопределить цветовые схемы, перечисленные в элементе <ClrMap/>
. Если дочерний <masterClrMapping/>
элемент присутствует, используется цветовая схема, определенная master. Если дочерний <overrideClrMapping/>
элемент присутствует, он определяет новую цветовую схему, относясь к родительскому слайду заметок, слайду презентации или макету слайда.
Класс CommonSlideData
Класс CommonSlideData
соответствует элементу <cSld/>
. Этот элемент представлен <cSld/>
в следующей информации из спецификации ISO/IEC 29500:
Этот элемент задает контейнер для сведений о слайде, которые применимы ко всем типам слайдов. Все слайды имеют общий набор свойств, не зависящих от типа слайда; описание этих свойств для любого конкретного слайда хранится в контейнере слайда <cSld/>
. Сведения о слайде для конкретного типа слайда, определенного родительским элементом, хранятся в другом месте.
Фактические данные в <cSld/>
описывают только конкретный родительский слайд; это только тип хранимой информации, который является общим для всех слайдов.
Класс ExtensionListWithModification
Класс ExtensionListWithModification
соответствует элементу <extLst/>
. Следующие сведения из
В спецификации <extLst/>
представлен элемент :
Этот элемент задает список расширений с возможностью изменения, в котором определяются все будущие расширения типа <ext/>
элемента.
Список расширений вместе с соответствующими будущими расширениями используется для расширения возможностей хранения инфраструктуры PresentationML. Это обеспечивает встроенную возможность хранения новых типов данных в инфраструктуре.
Примечание.
Использование этого элемента extLst позволяет создаваемому приложению сохранить, было ли изменено это свойство расширения.
Класс HeaderFooter
Класс HeaderFooter
соответствует элементу <hf/>
. Этот элемент представлен <hf/>
в следующей информации из спецификации ISO/IEC 29500:
Этот элемент определяет сведения о верхнем и нижнем колонтитуле слайда. Верхние и нижние колонтитулы состоят из заполнителей для текста, который должен быть одинаковым во всех слайдах и их типах, включая дату и время, нумерацию слайдов и пользовательский текст заголовка и нижнего колонтитула.
Класс Timing
Класс Timing
соответствует элементу <timing/>
. Этот элемент представлен <timing/>
в следующей информации из спецификации ISO/IEC 29500:
В этом элементе задаются данные хронометража для обработки анимации и событий с привязкой по времени внутри соответствующего слайда. Эти сведения отслеживаются с помощью узлов времени в элементе <timing/>
.
Дополнительные сведения о характеристиках таких узлов времени и способах их определения можно найти в разделе "Анимация" инфраструктуры PresentationML.
Класс Transition
Класс Transition
соответствует элементу <transition/>
. Этот элемент представлен <transition/>
в следующей информации из спецификации ISO/IEC 29500:
В этом элементе задается тип перехода, который должен использоваться для перехода к текущему слайду от предыдущего. То есть данные о переходе хранятся на слайде, который появляется после завершения перехода.
Работа с классом SlideLayout
Как показано в следующем примере кода пакета SDK для Open XML, каждый экземпляр SlideLayout
класса связан с экземпляром SlideLayoutPart класса , который представляет часть макета слайда, которая является одной из обязательных частей пакета файла презентации PresentationML. Каждый SlideLayout
экземпляр класса также должен быть связан с экземплярами SlideMaster классов и Slide , которые, в свою очередь, связаны с аналогичными именоваемыми обязательными частями представления, представленными классами SlideMasterPart и SlidePart .
Таким SlideLayout
образом, класс, представляющий <sldLayout/>
элемент, также связан с рядом других классов, представляющих дочерние элементы <sldLayout/>
элемента . Среди этих классов, как показано в следующем примере кода, есть CommonSlideData
класс, ColorMapOverride
класс, ShapeTree класс и Shape класс .
Пример кода Open XML SDK
Следующий метод из статьи Практическое руководство. Создание документа презентации путем предоставления имени файла добавляет новую часть макета слайда в существующую презентацию и создает экземпляр класса Open XML SDK SlideLayout
в новой части макета слайда. Конструктор SlideLayout
класса создает экземпляры CommonSlideData
класса и ColorMapOverride
класса . Конструктор CommonSlideData
класса создает экземпляр ShapeTree класса, конструктор которого, в свою очередь, создает дополнительные экземпляры класса: экземпляр NonVisualGroupShapeProperties класса, экземпляр GroupShapeProperties класса и экземпляр Shape класса .
Пространство имен, представленное буквой P в коде, является пространством имен.
static SlideLayoutPart CreateSlideLayoutPart(SlidePart slidePart1)
{
SlideLayoutPart slideLayoutPart1 = slidePart1.AddNewPart<SlideLayoutPart>("rId1");
SlideLayout slideLayout = new SlideLayout(
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()));
slideLayoutPart1.SlideLayout = slideLayout;
return slideLayoutPart1;
}
Созданный код PresentationML
При выполнении кода пакета SDK Open XML следующий XML-код записывается в файл документа PresentationML, на который ссылается код.
<?xml version="1.0" encoding="utf-8"?>
<p:sldLayout 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="" />
<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 />
</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:sldLayout>
См. также
Сведения о пакете SDK Open XML для Office
Практическое руководство. Создание презентации путем указания имени файла