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


Работа с презентациями

В этом разделе рассматривается класс Open XML SDK для Office Presentation и его связь со схемой PresentationML формата файла Open XML. Дополнительные сведения об общей структуре частей и элементов, составляющих документ PresentationML, см. в разделе Структура документа PresentationML.


Презентации в PresentationML

Спецификация ISO/IEC 29500 описывает элемент Open XML PresentationML <presentation/> , используемый для представления презентации в документе PresentationML, следующим образом:

В этом элементе указываются фундаментальные свойства всей презентации.

Пример: Рассмотрим следующую презентацию с одним слайдом master и двумя слайдами. Помимо этих основных элементов также могут быть заданы и другие свойства, например размер слайда, размер заметок и стили текста по умолчанию.

<p:presentation xmlns:a="" xmlns:r="" xmlns:p="">  
    <p:sldMasterIdLst>  
        <p:sldMasterId id="2147483648" r:id="rId1">  
    </p:sldMasterIdLst>  
    <p:sldIdLst>  
        <p:sldId id="256" r:id="rId3"/>  
        <p:sldId id="257" r:id="rId4"/>  
    </p:sldIdLst>  
    <p:sldSz cx="9144000" cy="6858000" type="screen4x3"/>  
    <p:notesSz cx="6858000" cy="9144000"/>  
    <p:defaultTextStyle>  
        …  
    </p:defaultTextStyle>  
</p:presentation>

© ISO/IEC 29500: 2016

Элемент <presentation/> обычно содержит дочерние элементы, которые перечисляют образцы слайдов, слайды и пользовательские слайд-шоу, содержащиеся в презентации. Кроме того, этот элемент также обычно содержит элементы, в которых задаются другие свойства презентации, например размер слайда, размер заметок и стили текста по умолчанию.

Элемент <presentation/> является корневым элементом части PresentationML Presentation. Дополнительные сведения об общей структуре частей и элементов документа PresentationML см. в разделе Структура документа PresentationML.

В следующей таблице перечислены некоторые из наиболее распространенных дочерних элементов элемента, используемых <presentation/> при работе с презентациями, и соответствующие им классы пакета SDK Open XML.

Элемент PresentationML Класс пакета SDK Open XML
<sldMasterIdLst/> SlideMasterIdList
<sldMasterId/> SlideMasterId
<sldIdLst/> SlideIdList
<sldId/> SlideId
<notesMasterIdLst/> NotesMasterIdList
<handoutMasterIdLst/> SlideMasterIdList
<custShowLst/> CustomShowList
<sldSz/> SlideSize
<notesSz/> <xrefDocumentFormat.OpenXml.Presentation.NotesSize>
<defaultTextStyle/> DefaultTextStyle

Класс презентации Open XML SDK

Класс Open XML SDK Presentation представляет элемент, определенный <presentation/> в схеме формата файлов Open XML для документов PresentationML. Используйте класс для Presentation управления отдельным <presentation/> элементом в документе PresentationML.

Классы, обычно связанные с классом Presentation , показаны в следующих разделах.

Класс SlideMasterIdList

Все слайды, основанные на одном и том же образце слайда, наследуют от этого образца одинаковую разметку. Класс SlideMasterIdList соответствует элементу <sldMasterIdList/> . Спецификация ISO/IEC 29500 описывает элемент Open XML PresentationML<sldMasterIdList/>, используемый для представления списка идентификаторов слайдов master в документе PresentationML следующим образом:

В этом элементе указывается список идентификаторов для образцов слайдов, доступных в соответствующей презентации. Образец слайда — это слайд, специально разработанный как шаблон для всех связанных дочерних слайдов.

© ISO/IEC 29500: 2016

Класс SlideMasterId

Класс SlideMasterId соответствует элементу <sldMasterId/> . Спецификация ISO/IEC 29500 описывает элемент Open XML PresentationML<sldMasterId/>, используемый для представления идентификатора master слайда в документе PresentationML следующим образом:

В этом элементе указывается образец слайда, доступный в соответствующей презентации. Образец слайда — это слайд, специально разработанный как шаблон для всех связанных дочерних слайдов.

Пример. Рассмотрим следующую спецификацию слайда master в презентации

<p:presentation xmlns:a="" xmlns:r="" xmlns:p=""
embedTrueTypeFonts="1">  
    …  
    <p:sldMasterIdLst>  
        <p:sldMasterId id="2147483648" r:id="rId1"/>  
    </p:sldMasterIdLst>  
    …  
</p:presentation>

© ISO/IEC 29500: 2016

Класс SlideIdList

Класс SlideIdList соответствует элементу <sldIdLst/> . Спецификация ISO/IEC 29500 описывает элемент Open XML PresentationML <sldIdLst/> , используемый для представления списка идентификаторов слайдов в документе PresentationML следующим образом:

В этом элементе указывается список идентификаторов для слайдов, доступных в соответствующей презентации. Слайд содержит сведения, характерные для отдельного слайда, например фигуры и текст.

© ISO/IEC 29500: 2016

Класс SlideId

Класс SlideId соответствует элементу <sldId/> . Спецификация ISO/IEC 29500 описывает элемент Open XML PresentationML <sldId/> , используемый для представления идентификатора слайда в документе PresentationML следующим образом:

В этом элементе указывается слайд, доступный в соответствующей презентации. Слайд содержит сведения, характерные для отдельного слайда, например фигуры и текст.

Пример. Рассмотрим следующую спецификацию слайда master в презентации

<p:presentation xmlns:a="" xmlns:r="" xmlns:p="" embedTrueTypeFonts="1">  
    …  
    <p:sldIdLst>  
        <p:sldId id="256" r:id="rId3"/>  
        <p:sldId id="257" r:id="rId4"/>  
        <p:sldId id="258" r:id="rId5"/>  
        <p:sldId id="259" r:id="rId6"/>  
        <p:sldId id="260" r:id="rId7"/>  
    </p:sldIdLst>  
    ...  
</p:presentation>

© ISO/IEC 29500: 2016

Класс NotesMasterIdList

Класс NotesMasterIdList соответствует элементу <notesMasterIdLst/> . Спецификация ISO/IEC 29500 описывает элемент Open XML PresentationML<notesMasterIdLst/>, используемый для представления заметок master списка идентификаторов в документе PresentationML следующим образом:

В этом элементе указывается список идентификаторов для образцов заметок, доступных в соответствующей презентации. Образец заметок — это слайд, специально разработанный для печати вместе с прикрепленными заметками.

© ISO/IEC 29500: 2016

Класс HandoutMasterIdList

Класс HandoutMasterIdList соответствует элементу <handoutMasterIdLst/> . Спецификация ISO/IEC 29500 описывает элемент Open XML PresentationML<handoutMasterIdLst/>, используемый для представления раздаточных материалов master списке идентификаторов в документе PresentationML следующим образом:

В этом элементе указывается список идентификаторов для образцов раздаточных материалов, доступных в соответствующей презентации. Образец раздаточных материалов — это слайд, разработанный специально для печати в качестве раздаточного материала.

© ISO/IEC 29500: 2016

Класс CustomShowList

Класс CustomShowList соответствует элементу <custShowLst/> . Спецификация ISO/IEC 29500 описывает элемент Open XML PresentationML <custShowLst/> , используемый для представления пользовательского списка отображения в документе PresentationML следующим образом:

В этом элементе указывается список всех произвольных показов, доступных в соответствующей презентации. Произвольный показ — это заданная последовательность слайдов, позволяющая вывести слайды презентации в любом порядке.

© ISO/IEC 29500: 2016

Класс SlideSize

Класс SlideSize соответствует элементу <sldSz/> . Спецификация ISO/IEC 29500 описывает элемент Open XML PresentationML <sldSz/> , используемый для представления размера слайда презентации в документе PresentationML следующим образом:

В этом элементе указывается размер поверхности слайда презентации. Объекты на слайде презентации могут выходить за эти границы, однако при выводе слайда на экран или на печать будут отображаться только то, что попадает на поверхность слайда.

Пример. Рассмотрим следующее, указывающее размер слайда презентации.

<p:presentation xmlns:a="" xmlns:r="" xmlns:p=""
embedTrueTypeFonts="1">  
    …  
    <p:sldSz cx="9144000" cy="6858000" type="screen4x3"/>  
    …  
</p:presentation>  

© ISO/IEC 29500: 2016

Класс NotesSize

Класс NotesSize соответствует элементу <notesSz/> . Спецификация ISO/IEC 29500 описывает элемент Open XML PresentationML <notesSz/> , используемый для представления размера слайда заметок в документе PresentationML следующим образом:

В этом элементе указывается размер поверхности для слайдов заметок и раздаточных материалов. Объекты на слайде заметок могут выходить за эти границы, однако у слайда заметок есть фоновая поверхность указанного размера, используемая при выводе на экран или на печать. Этот элемент предназначен для указания области, в которую помещается содержимое слайда, в любом особом печатном формате, который может быть выбран в приложении, например в формате раздаточных материалов.

Пример. Рассмотрим следующее, указывающее размер слайда заметок.

<p:presentation xmlns:a="" xmlns:r="" xmlns:p=""
embedTrueTypeFonts="1">  
    …  
    <p:notesSz cx="9144000" cy="6858000"/>  
    …  
</p:presentation>

© ISO/IEC 29500: 2016

Класс DefaultTextStyle

Класс DefaultTextStyle соответствует элементу <defaultTextStyle/> . Спецификация ISO/IEC 29500 описывает элемент Open XML PresentationML <defaultTextStyle/> , используемый для представления стиля текста по умолчанию в документе PresentationML, следующим образом:

В этом элементе указываются используемые в презентации стили текста по умолчанию. На определенный здесь стиль текста можно ссылаться при вставке нового слайда, если этот слайд не связан с образцом слайда и сведения о стилях текста не указаны на слайде презентации иным образом.

© ISO/IEC 29500: 2016


Работа с классом Presentation

Как показано в следующем примере кода пакета SDK Open XML, каждый экземпляр Presentation класса связан с экземпляром PresentationPart класса , который представляет часть презентации, одну из обязательных частей пакета файла презентации PresentationML.

Таким Presentation образом, класс, представляющий <presentation/> элемент, также связан с рядом других классов, представляющих дочерние элементы <presentation/> элемента . Среди этих классов, как показано в следующем примере кода, находятся классы SlideMasterIdList, SlideIdList, SlideSize, NotesSizeи DefaultTextStyle .


Пример кода Open XML SDK

В следующем примере кода из статьи Практическое руководство. Создание документа презентации путем предоставления имени файла используется Create метод PresentationDocument класса Open XML SDK для создания экземпляра того же класса с указанным именем и путем к файлу. Затем он использует AddPresentationPart метод для добавления экземпляра класса в PresentationPart файл документа. Затем создается экземпляр Presentation класса , представляющего презентацию. Он передает ссылку PresentationPart на экземпляр класса в процедуру CreatePresentationParts , которая создает другие необходимые части файла презентации. Процедура CreatePresentation очищается путем закрытия экземпляра класса, открытого PresentationDocument ранее.

Процедура CreatePresentationParts создает экземпляры SlideMasterIdListклассов , SlideIdList, SlideSize, NotesSizeи и DefaultTextStyle и добавляет их в презентацию.

static void CreatePresentation(string filepath)
{
    // Create a presentation at a specified file path. The presentation document type is pptx, by default.
    using (PresentationDocument presentationDoc = PresentationDocument.Create(filepath, PresentationDocumentType.Presentation))
    {
        PresentationPart presentationPart = presentationDoc.AddPresentationPart();
        presentationPart.Presentation = new Presentation();

        CreatePresentationParts(presentationPart);
    }
}

static void CreatePresentationParts(PresentationPart presentationPart)
{
    SlideMasterIdList slideMasterIdList1 = new SlideMasterIdList(new SlideMasterId() { Id = (UInt32Value)2147483648U, RelationshipId = "rId1" });
    SlideIdList slideIdList1 = new SlideIdList(new SlideId() { Id = (UInt32Value)256U, RelationshipId = "rId2" });
    SlideSize slideSize1 = new SlideSize() { Cx = 9144000, Cy = 6858000, Type = SlideSizeValues.Screen4x3 };
    NotesSize notesSize1 = new NotesSize() { Cx = 6858000, Cy = 9144000 };
    DefaultTextStyle defaultTextStyle1 = new DefaultTextStyle();

    presentationPart.Presentation.Append(slideMasterIdList1, slideIdList1, slideSize1, notesSize1, defaultTextStyle1);

    SlidePart slidePart1;
    SlideLayoutPart slideLayoutPart1;
    SlideMasterPart slideMasterPart1;
    ThemePart themePart1;


    slidePart1 = CreateSlidePart(presentationPart);
    slideLayoutPart1 = CreateSlideLayoutPart(slidePart1);
    slideMasterPart1 = CreateSlideMasterPart(slideLayoutPart1);
    themePart1 = CreateTheme(slideMasterPart1);

    slideMasterPart1.AddPart(slideLayoutPart1, "rId1");
    presentationPart.AddPart(slideMasterPart1, "rId1");
    presentationPart.AddPart(themePart1, "rId5");
}

Результирующий документ PresentationML

При выполнении кода пакета SDK Open XML следующий XML-код записывается в документ PresentationML, на который ссылается код.

    <?xml version="1.0" encoding="utf-8" ?>
    <p:presentation xmlns:p="http://schemas.openxmlformats.org/presentationml/2006/main">
     <p:sldMasterIdLst>
      <p:sldMasterId id="2147483648" r:id="rId1" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"/>
     </p:sldMasterIdLst>
     <p:sldIdLst>
      <p:sldId id="256" r:id="rId2" xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"/>
     </p:sldIdLst>
     <p:sldSz cx="9144000" cy="6858000" type="screen4x3"/>
     <p:notesSz cx="6858000" cy="9144000"/>
     <p:defaultTextStyle/>
    </p:presentation>

См. также

Сведения о пакете SDK Open XML для Office

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

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

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

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

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