Работа с образцами слайдов (Open XML SDK)
В этом разделе рассматривается класс SlideMaster пакета Open XML SDK 2.5 для Office и его связь со схемой PresentationML формата файлов Open XML.
Образцы слайдов в PresentationML
В спецификации ISO/IEC 29500 описывается элемент <sldMaster> Open XML PresentationML, используемый для представления разметки слайда в документе PresentationML следующим образом.
В этом элементе указывается экземпляр образца слайда. В образце слайда содержатся все элементы, описывающие объекты и параметры их форматирования внутри слайда презентации. Образец слайда состоит из двух основных элементов. В элементе cSld указываются основные элементы слайда, например фигуры и связанный с ними текст. В элементе txStyles указываются параметры форматирования текста в каждой фигуре. В других свойствах образца слайда указываются остальные сведения о слайдах, например параметры цветов, верхних и нижних колонтитулов, а также время показа и параметры перехода между слайдами для всех соответствующих слайдов.
<Элемент sldMaster> элемент является корневым элементом части образца слайда PresentationML. Дополнительные сведения об общей структуре частей и элементов, составляющих документ PresentationML, см. в статье Структура документа PresentationML.
В следующей таблице перечислены дочерние элементы элемента <sldMaster>, используемого при работе с образцами слайдов и соответствующими им классами Open XML SDK 2.5.
Элемент PresentationML Класс Open XML SDK 2.5 <clrMap> ColorMap <cSld> CommonSlideData <extLst> ExtensionListWithModification <hf> HeaderFooter <sldLayoutIdLst> SlideLayoutIdList <синхронизация> Синхронизация <переход> Переход <txStyles> TextStyles
В следующей таблице из спецификации ISO/IEC 29500 представлено описание атрибутов элемента< sldMaster>.
Атрибуты Описание preserve (сохранять образец слайда) Этот атрибут определяет, следует ли удалять разметку слайда после удаления всех слайдов, использующих эту разметку. Если этот атрибут не указан, в создающем приложении должно предполагаться значение false. Это означает, что если с определенным слайдом не связан ни один слайд презентации, такой слайд будет удален.Возможные значения этого атрибута определяются типом данных Boolean XML-схемы W3C.
Класс Open XML SDK 2.5 SlideMaster
Класс Open XML SDK 2.5SlideMaster представляет элемент<sldMaster>, определенный в схеме форматов файлов Open XML для документов PresentationML. Используйте классSlideMasterдля работы с отдельными элементами< sldMaster> в документе PresentationML.
Классы, представляющие дочерние элементы элемента <sldMaster> и, таким образом, связанные с классом SlideMaster, перечислены в приведенном ниже списке.
Класс ColorMapOverrideКлассColorMapOverrideсоответствует элементу<clrMapOvr>. В следующей выдержке из спецификацииISO/IEC 29500 представлен элемент <clrMapOvr>:
Этот элемент обеспечивает механизм, с которым следует переопределить цветовые схемы, указанные в элементе<ClrMap>. Если присутствует дочерний элемент <masterClrMapping>, используется цветовая схема, определенная образцом. Если присутствует дочерний элемент<overrideClrMapping>, он определяет новую цветовую схему, характерную для родительского слайда заметок, слайда презентации или макета слайда.
Класс CommonSlideDataКласс CommonSlideData соответствует элементу <cSld>. В следующей выдержке из спецификации ISO/IEC 29500 представлен элемент <cSld>:
Этот элемент определяет контейнер для типа информации о слайде, которая относится ко всем типам слайдов. Все слайды совместно используют общий набор свойств, который не зависит от типа слайда; описание этих свойств для любого отдельного слайда хранится в пределах контейнера слайда <cSld>. Данные слайда, относящиеся к типу слайда, указанного в параметре родительского элемента, хранятся в другом месте.
Фактические данные в<cSld> описывают только определенный родительский слайд; это тип данных, который присутствует во всех слайдах.
Класс ExtensionListWithModificationКлассExtensionListWithModificationсоответствует элементу <extLst>. В следующей выдержке из спецификации ISO/IEC 29500 представлен элемент <extLst>:
Этот элемент определяет список расширений с возможностью изменения, в котором определяются все будущие расширения типа элемента <ext>. Список расширений, а также соответствующие будущие расширения используются для расширения возможностей хранения платформы PresentationML. Это позволяет хранить различные новые типы данных в пределах платформы в исходном формате.
[Примечание. Использовании этого элемента extLst позволяет создать приложение, чтобы хранить данные о том, было ли изменено это свойство расширения. Конец примечания]
Класс HeaderFooterКлассHeaderFooterсоответствует элементу<hf>. В следующей выдержке из спецификацииISO/IEC 29500 представлен элемент<hf>:
Этот элемент определяет информацию о верхнем и нижнем колонтитуле слайда. Верхние и нижние колонтитулы состоят из заполнителей для текста, который должен быть одинаковым во всех слайдах и их типах, включая дату и время, нумерацию слайдов и настраиваемый текст заголовка и нижнего колонтитула.
Класс SlideLayoutIdListКлассSlideLayoutIdListсоответствует элементу<sldLayoutIdLst>. В следующей выдержке из спецификацииISO/IEC 29500 представлен элемент<sldLayoutIdLst>:
В этом элементе указывается наличие списка идентификации разметки слайда. Этот список хранится в образце слайда и используется, чтобы определить, какие разметки используются в файле образца слайда. Каждая разметка в списке разметок слайда имеет собственный идентификационный номер и идентификатор связи, уникально идентифицирующий ее как в документе презентации, так и в конкретном образце слайда, в котором она используются.
Класс TimingКлассTimingсоответствует элементу<timing>. В следующей выдержке из спецификацииISO/IEC 29500 представлен элемент<timing>:
Этот элемент определяет синхроданные для обработки всех анимаций и синхронных событий в соответствующем слайде. Эта информация отслеживается с помощью узлов времени в элементе <timing>. Дополнительные сведения об особенностях этих узлов времени и о том, как они должны определяться, можно найти в рамках раздела Animation структуры документа PresentationML.
Класс TransitionКлассTransitionсоответствует элементу<transition>. В следующей выдержке из спецификацииISO/IEC 29500 представлен элемент<transition>:
Этот элемент определяет тип перехода слайда, который будет использоваться для перехода от предыдущего слайда к текущему. Таким образом, сведения о переходе хранятся в слайде, который отображается после завершения перехода.
Класс TextStylesКлассTextStylesсоответствует элементу<txStyles>. В следующей выдержке из спецификацииISO/IEC 29500 представлен элемент<txStyles>:
В этом элементе указываются стили текста в образце слайда. В нем хранятся сведения о стиле текста заголовка, основного текста и других текстовых элементов на слайде. Этот элемент может использоваться только в образце слайда, поэтому в нем задаются стили текста для соответствующих слайдов презентации.
Пример: Рассмотрим случай, когда необходимо задать текст заголовка для образца слайда.
В приведенном выше примере текст заголовка задается в соответствии с вышеуказанными параметрами форматирования всех соответствующих слайдов презентации. конец примера]
Работа с классом SlideMaster
Как показано в приведенном ниже примере кода Open XML SDK, каждый экземпляр класса SlideMaster связан с экземпляром класса SlideMasterPart , который представляет часть образцов слайдов, одну из необходимых частей пакета файлов презентации PresentationML. Каждый экземпляр классаSlideMasterтакже должен быть связан с экземплярами SlideLayout и < классами**Slide, которые, в свою очередь, связаны с аналогично названными необходимыми частями презентации, представленными классамиSlideLayoutPart** и SlidePart.
КлассSlideMaster, который представляет элемент<sldMaster>, таким образом, также связан с рядом других классов, которые представляют дочерние элементы элемента<sldMaster>. Среди этих классов, как показано в следующем образце кода, представлены классыCommonSlideData, ColorMap, ShapeTree и Shape. ** **
Пример кода пакета Open XML SDK
Следующий метод из статьи Инструкция: Создание документа презентации по указанному имени файла (Open XML SDK) добавляет новую часть образцов слайдов в существующую презентацию и создает экземпляр класса Open XML SDK 2.5SlideMaster в новой части образцов слайдов. Конструктор классаSlideMasterсоздает экземпляры класса CommonSlideData, а также классовSlideLayoutIdList, TextStylesиCommonSlideData. Конструктор класса CommonSlideData создает экземпляр класса** ShapeTree, ** конструктор которого, в свою очередь, создает дополнительные экземпляры класса, в частности, экземпляр класса** NonVisualGroupShapeProperties, ** экземпляр класса ** GroupShapeProperties** и экземпляр** класса Shape.**
Пространство имен, представленное буквой P в коде, — это пространство имен ** DocumentFormat.OpenXml.Presentation.**
Созданный код PresentationML
При выполнении кода Open XML SDK в указанный в коде документ PresentationML записывается приведенный ниже XML-код.