Работа с образцами слайдов
В этом разделе рассматривается класс Open XML SDK для Office SlideMaster и его связь со схемой PresentationML формата файла Open XML.
Образцы слайдов в PresentationML
Спецификация ISO/IEC 29500 описывает элемент Open XML PresentationML <sldMaster/>
, используемый для представления макетов слайдов в документе PresentationML следующим образом.
В этом элементе указывается экземпляр образца слайда. В образце слайда содержатся все элементы, описывающие объекты и параметры их форматирования внутри слайда презентации. Образец слайда состоит из двух основных элементов. В элементе cSld указываются основные элементы слайда, например фигуры и связанный с ними текст. В элементе txStyles указываются параметры форматирования текста в каждой фигуре. В других свойствах образца слайда указываются остальные сведения о слайдах, например параметры цветов, верхних и нижних колонтитулов, а также время показа и параметры перехода между слайдами для всех соответствующих слайдов.
Элемент <sldMaster/>
является корневым элементом части PresentationML Slide Master. Дополнительные сведения об общей структуре частей и элементов документа PresentationML см. в разделе Структура документа PresentationML.
В следующей таблице перечислены дочерние элементы элемента, <sldMaster/>
используемые при работе с образцами слайдов, и соответствующие им классы пакета SDK Open XML.
Элемент PresentationML | Класс пакета SDK Open XML |
---|---|
<clrMap/> |
ColorMap |
<cSld/> |
CommonSlideData |
<extLst/> |
ExtensionListWithModification |
<hf/> |
HeaderFooter |
<sldLayoutIdLst/> |
SlideLayoutIdList |
<timing/> |
Timing |
<transition/> |
Transition |
<txStyles/> |
TextStyles |
В следующей таблице из спецификации ISO/IEC 29500 (Возможно, на английском языке) представлено описание атрибутов элемента <sldMaster/>
.
Атрибуты | Описание |
---|---|
preserve (сохранять образец слайда) | Указывает, удаляется ли соответствующий макет слайда при удалении всех слайдов с данным макетом. Если этот атрибут не указан, то создаваемое приложение должно принимать значение false . Это означает, что макет слайда будет удален, если с ним не связан ни один слайд в презентации.Возможные значения для этого атрибута определяются типом данных схемы Boolean XML W3C. |
Класс SlideMaster пакета SDK Open XML
Класс Open XML SDKSlideMaster
представляет элемент, определенный <sldMaster/>
в схеме формата файлов Open XML для документов PresentationML. Используйте класс для SlideMaster
управления отдельными <sldMaster/>
элементами в документе PresentationML.
Классы, представляющие дочерние <sldMaster/>
элементы элемента и поэтому обычно связанные с классом SlideMaster
, показаны в следующем списке.
Класс ColorMapOverride
Класс ColorMapOverride
соответствует элементу <clrMapOvr/>
. Этот элемент представлен <clrMapOvr/>
в следующей информации из спецификации ISO/IEC 29500:
Этот элемент предоставляет механизм, с помощью которого можно переопределить цветовые схемы, перечисленные в элементе <ClrMap/>
. Если дочерний <masterClrMapping/>
элемент присутствует, используется цветовая схема, определенная master. Если дочерний <overrideClrMapping/>
элемент присутствует, он определяет новую цветовую схему, относясь к родительскому слайду заметок, слайду презентации или макету слайда.
Класс CommonSlideData
Класс CommonSlideData
соответствует элементу <cSld/>
. Этот элемент представлен <cSld/>
в следующей информации из спецификации ISO/IEC 29500:
Этот элемент задает контейнер для сведений о слайде, которые применимы ко всем типам слайдов. Все слайды имеют общий набор свойств, не зависящих от типа слайда; описание этих свойств для любого конкретного слайда хранится в контейнере слайда <cSld/>
. Сведения о слайде для конкретного типа слайда, определенного родительским элементом, хранятся в другом месте.
Фактические данные в <cSld/>
описывают только конкретный родительский слайд; это только тип хранимой информации, который является общим для всех слайдов.
Класс ExtensionListWithModification
Класс ExtensionListWithModification
соответствует элементу <extLst/>
. Этот элемент представлен <extLst/>
в следующей информации из спецификации ISO/IEC 29500:
Этот элемент задает список расширений с возможностью изменения, в котором определяются все будущие расширения типа <ext/>
элемента. Список расширений вместе с соответствующими будущими расширениями используется для расширения возможностей хранения инфраструктуры PresentationML. Это обеспечивает встроенную возможность хранения новых типов данных в инфраструктуре.
Примечание.
Использование этого элемента extLst позволяет создаваемому приложению сохранить, было ли изменено это свойство расширения.
Класс HeaderFooter
Класс HeaderFooter
соответствует элементу <hf/>
. Этот элемент представлен <hf/>
в следующей информации из спецификации ISO/IEC 29500:
Этот элемент определяет сведения о верхнем и нижнем колонтитуле слайда. Верхние и нижние колонтитулы состоят из заполнителей для текста, который должен быть одинаковым во всех слайдах и их типах, включая дату и время, нумерацию слайдов и пользовательский текст заголовка и нижнего колонтитула.
Класс SlideLayoutIdList
Класс SlideLayoutIdList
соответствует элементу <sldLayoutIdLst/>
. Этот элемент представлен <sldLayoutIdLst/>
в следующей информации из спецификации ISO/IEC 29500:
В этом элементе указывается наличие списка идентификации разметки слайда. Этот список хранится в образце слайда и используется, чтобы определить, какие разметки используются в файле образца слайда. Каждая разметка в списке разметок слайда имеет собственный идентификационный номер и идентификатор связи, уникально идентифицирующий ее как в документе презентации, так и в конкретном образце слайда, в котором она используются.
Класс Timing
Класс Timing
соответствует элементу <timing/>
. Этот элемент представлен <timing/>
в следующей информации из спецификации ISO/IEC 29500:
В этом элементе задаются данные хронометража для обработки анимации и событий с привязкой по времени внутри соответствующего слайда. Эти сведения отслеживаются с помощью узлов времени в элементе <timing/>
. Дополнительные сведения о характеристиках таких узлов времени и способах их определения можно найти в разделе "Анимация" инфраструктуры PresentationML.
Класс Transition
Класс Transition
соответствует элементу <transition/>
. Этот элемент представлен <transition/>
в следующей информации из спецификации ISO/IEC 29500:
В этом элементе задается тип перехода, который должен использоваться для перехода к текущему слайду от предыдущего. То есть данные о переходе хранятся на слайде, который появляется после завершения перехода.
Класс TextStyles
Класс TextStyles
соответствует элементу <txStyles/>
. Этот элемент представлен <txStyles/>
в следующей информации из спецификации ISO/IEC 29500:
В этом элементе указываются стили текста в образце слайда. В нем хранятся сведения о стиле текста заголовка, основного текста и других текстовых элементов на слайде. Этот элемент может использоваться только в образце слайда, поэтому в нем задаются стили текста для соответствующих слайдов презентации.
Рассмотрим случай, когда мы хотели бы указать текст заголовка для master слайда.
<p:txStyles>
<p:titleStyle>
<a:lvl1pPr algn="ctr" rtl="0" latinLnBrk="0">
<a:spcBef>
<a:spcPct val="0"/>
</a:spcBef>
<a:buNone/>
<a:defRPr sz="4400" kern="1200">
<a:solidFill>
<a:schemeClr val="tx1"/>
</a:solidFill>
<a:latin typeface="+mj-lt"/>
<a:ea typeface="+mj-ea"/>
<a:cs typeface="+mj-cs"/>
</a:defRPr>
</a:lvl1pPr>
</p:titleStyle>
</p:txStyles>
В предыдущем примере текст заголовка задается в соответствии с приведенным выше форматированием для всех связанных слайдов в презентации.
Работа с классом SlideMaster
Как показано в следующем примере кода пакета SDK для Open XML, каждый экземпляр SlideMaster
класса связан с экземпляром SlideMasterPart класса , который представляет слайд master часть, которая является одной из обязательных частей пакета файла презентации PresentationML. Каждый SlideMaster
экземпляр класса также должен быть связан с экземплярами SlideLayout классов и Slide , которые, в свою очередь, связаны с аналогичными именоваемыми обязательными частями представления, представленными классами SlideLayoutPart и SlidePart .
Таким SlideMaster
образом, класс, представляющий <sldMaster/>
элемент, также связан с рядом других классов, представляющих дочерние элементы <sldMaster/>
элемента . Среди этих классов, как показано в следующем примере кода, есть CommonSlideData
класс, ColorMap
класс, ShapeTree класс и Shape класс .
Пример кода Open XML SDK
Следующий метод из статьи Практическое руководство. Создание документа презентации путем предоставления имени файла добавляет новую часть slidemaster в существующую презентацию и создает экземпляр класса Open XML SDK SlideMaster
в новой части слайда master. Конструктор SlideMaster
класса создает экземпляры CommonSlideData
класса и ColorMap
классов , SlideLayoutIdList
и TextStyles
. Конструктор CommonSlideData
класса создает экземпляр ShapeTree класса, конструктор которого, в свою очередь, создает дополнительные экземпляры класса: экземпляр NonVisualGroupShapeProperties класса, экземпляр GroupShapeProperties класса и экземпляр Shape класса и т. д.
Пространство имен, представленное буквой P в коде, является пространством имен.
static SlideMasterPart CreateSlideMasterPart(SlideLayoutPart slideLayoutPart1)
{
SlideMasterPart slideMasterPart1 = slideLayoutPart1.AddNewPart<SlideMasterPart>("rId1");
SlideMaster slideMaster = new SlideMaster(
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 Placeholder 1" },
new P.NonVisualShapeDrawingProperties(new ShapeLocks() { NoGrouping = true }),
new ApplicationNonVisualDrawingProperties(new PlaceholderShape() { Type = PlaceholderValues.Title })),
new P.ShapeProperties(),
new P.TextBody(
new BodyProperties(),
new ListStyle(),
new Paragraph())))),
new P.ColorMap() { Background1 = D.ColorSchemeIndexValues.Light1, Text1 = D.ColorSchemeIndexValues.Dark1, Background2 = D.ColorSchemeIndexValues.Light2, Text2 = D.ColorSchemeIndexValues.Dark2, Accent1 = D.ColorSchemeIndexValues.Accent1, Accent2 = D.ColorSchemeIndexValues.Accent2, Accent3 = D.ColorSchemeIndexValues.Accent3, Accent4 = D.ColorSchemeIndexValues.Accent4, Accent5 = D.ColorSchemeIndexValues.Accent5, Accent6 = D.ColorSchemeIndexValues.Accent6, Hyperlink = D.ColorSchemeIndexValues.Hyperlink, FollowedHyperlink = D.ColorSchemeIndexValues.FollowedHyperlink },
new SlideLayoutIdList(new SlideLayoutId() { Id = (UInt32Value)2147483649U, RelationshipId = "rId1" }),
new TextStyles(new TitleStyle(), new BodyStyle(), new OtherStyle()));
slideMasterPart1.SlideMaster = slideMaster;
return slideMasterPart1;
}