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


Работа со слайдами презентации

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

ISO/IEC 29500

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

Практическое руководство. Вставка нового слайда в презентацию

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

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

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

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