Поделиться через


Работа с макетами слайдов

В этом разделе рассматривается класс 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/>. Следующие сведения из

ISO/IEC 29500

В спецификации <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

Практическое руководство. Создание презентации путем указания имени файла

Практическое руководство. Применение темы к презентации