Compartilhar via


Como trabalhar com apresentações

Este tópico discute a classe Open XML SDK for Office Presentation e como ela se relaciona com o esquema Open XML File Format PresentationML. Para obter mais informações sobre a estrutura geral das partes e elementos que compõem um documento PresentationML, consulte Estrutura de um documento PresentationML.


Apresentações em PresentationML

A especificação ISO/IEC 29500 descreve o elemento de apresentação> Open XML PresentationML <usado para representar uma apresentação em um documento PresentationML da seguinte maneira:

Esse elemento especifica dentro dele propriedades fundamentais em toda a apresentação.

Exemplo: Considere a apresentação a seguir com um único slide master e dois slides. Além desses elementos comumente usados, também pode haver a especificação de outras propriedades, como tamanho do slide, tamanho das anotações e estilos de texto padrão.

<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/IEC29500: 2008.

O <elemento de apresentação> normalmente contém elementos filho que listam mestres de slides, slides e apresentações de slides personalizadas contidas na apresentação. Além disso, ele também geralmente contém elementos que especificam outras propriedades da apresentação, como tamanho do slide, tamanho das anotações e estilos de texto padrão.

O <elemento de apresentação> é o elemento raiz da parte Apresentação do PresentationML. Para obter mais informações sobre a estrutura geral das partes e elementos que compõem um documento PresentationML, consulte Estrutura de um Documento PresentationML.

A tabela a seguir lista alguns dos elementos filho mais comuns do <elemento de apresentação> usados ao trabalhar com apresentações e as classes SDK do Open XML que correspondem a elas.

Elemento PresentationML Classe SDK Open XML
<sldMasterIdLst> SlideMasterIdList
<sldMasterId> SlideMasterId
<sldIdLst> SlideIdList
<sldId> SlideId
<notesMasterIdLst> NotesMasterIdList
<handoutMasterIdLst> HandoutMasterIdList
<custShowLst> CustomShowList
<sldSz> SlideSize
<notesSz> NotesSize
<Defaulttextstyle> DefaultTextStyle

Abrir classe de apresentação do SDK XML

A classe Open XML SDKPresentation representa o <elemento de apresentação> definido no esquema Open XML File Format para documentos PresentationML. Use a classe Apresentação para manipular um elemento de apresentação> individual <em um documento PresentationML.

As classes comumente associadas à classe Apresentação são mostradas nas seções a seguir.

Classe SlideMasterIdList

Todos os slides que compartilham o mesmo master herdam o mesmo layout desse master. A classe SlideMasterIdList corresponde ao <elemento sldMasterIdList> . A especificação ISO/IEC 29500 descreve o elemento Open XML PresentationML <sldMasterIdList> usado para representar um slide master lista de ID em um documento PresentationML da seguinte maneira:

Esse elemento especifica uma lista de informações de identificação para o slide master slides que estão disponíveis na apresentação correspondente. Um slide master é um slide projetado especificamente para ser um modelo para todos os slides de layout filho relacionados.

© ISO/IEC29500: 2008.

Classe SlideMasterId

A classe SlideMasterId corresponde ao <elemento sldMasterId> . A especificação ISO/IEC 29500 descreve o elemento Open XML PresentationML <sldMasterId> usado para representar um slide master ID em um documento PresentationML da seguinte maneira:

Esse elemento especifica um master de slides que está disponível na apresentação correspondente. Um slide master é um slide projetado especificamente para ser um modelo para todos os slides de layout filho relacionados.

Exemplo: considere a seguinte especificação de um slide master em uma apresentação

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

© ISO/IEC29500: 2008.

Classe SlideIdList

A classe SlideIdList corresponde ao <elemento sldIdLst> . A especificação ISO/IEC 29500 descreve o elemento Open XML PresentationML <sldIdLst> usado para representar uma lista de ID de slide em um documento PresentationML da seguinte maneira:

Esse elemento especifica uma lista de informações de identificação para os slides que estão disponíveis na apresentação correspondente. Um slide contém as informações específicas para um único slide, como informações de forma e texto específicas do slide.

© ISO/IEC29500: 2008.

Classe SlideId

A classe SlideId corresponde ao <elemento sldId> . A especificação ISO/IEC 29500 descreve o elemento sldId> Open XML PresentationML <usado para representar uma ID de slide em um documento PresentationML da seguinte maneira:

Esse elemento especifica um slide de apresentação que está disponível na apresentação correspondente. Um slide contém as informações específicas para um único slide, como informações de forma e texto específicas do slide.

Exemplo: considere a seguinte especificação de um slide master em uma apresentação

<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/IEC29500: 2008.

Classe NotesMasterIdList

A classe NotesMasterIdList corresponde ao <elemento notesMasterIdLst> . A especificação ISO/IEC 29500 descreve o elemento Open XML PresentationMLMasterIdLst <> usado para representar uma lista de anotações master ID em um documento PresentationML da seguinte maneira:

Esse elemento especifica uma lista de informações de identificação para as anotações master slides que estão disponíveis na apresentação correspondente. Uma master de notas é um slide projetado especificamente para a impressão do slide, juntamente com quaisquer anotações anexadas.

© ISO/IEC29500: 2008.

Classe HandoutMasterIdList

A classe HandoutMasterIdList corresponde ao <elemento handoutMasterIdLst> . A especificação ISO/IEC 29500 descreve o elemento Open XML PresentationML <HandoutMasterIdLst> usado para representar uma lista de apostilas master ID em um documento PresentationML da seguinte maneira:

Esse elemento especifica uma lista de informações de identificação para a apostila master slides que estão disponíveis na apresentação correspondente. Um master de apostila é um slide projetado especificamente para impressão como uma apostila.

© ISO/IEC29500: 2008.

Classe CustomShowList

A classe CustomShowList corresponde ao <elemento custShowLst> . A especificação ISO/IEC 29500 descreve o elemento Open XML PresentationML <custShowLst> usado para representar uma lista de exibição personalizada em um documento PresentationML da seguinte maneira:

Esse elemento especifica uma lista de todos os shows personalizados que estão disponíveis na apresentação correspondente. Uma mostra personalizada é uma sequência de slides definida que permite a exibição dos slides com a apresentação em qualquer ordem arbitrária.

© ISO/IEC29500: 2008.

Classe SlideSize

A classe SlideSize corresponde ao <elemento sldSz> . A especificação ISO/IEC 29500 descreve o elemento Open XML PresentationML <sldSz> usado para representar o tamanho do slide de apresentação em um documento PresentationML da seguinte maneira:

Esse elemento especifica o tamanho da superfície do slide de apresentação. Objetos dentro de um slide de apresentação podem ser especificados fora dessas extensões, mas esse é o tamanho da superfície de fundo mostrada quando o slide é apresentado ou impresso.

Exemplo: considere a especificação a seguir do tamanho de um slide de apresentação.

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

© ISO/IEC29500: 2008.

Classe NotesSize

A classe NotesSize corresponde ao <elemento notesSz> . A especificação ISO/IEC 29500 descreve o elemento Open XML PresentationML <notesSz> usado para representar o tamanho do slide de anotações em um documento PresentationML da seguinte maneira:

Esse elemento especifica o tamanho da superfície do slide usada para slides de anotações e slides de apostila. Objetos dentro de um slide de notas podem ser especificados fora dessas extensões, mas o slide de notas tem uma superfície de fundo do tamanho especificado quando apresentado ou impresso. Esse elemento destina-se a especificar a região à qual o conteúdo está instalado em qualquer formato especial de impressão que o aplicativo possa optar por gerar, como uma apostila de contorno.

Exemplo: considere a especificação a seguir do tamanho de um slide de anotações.

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

© ISO/IEC29500: 2008.

Classe DefaultTextStyle

A classe DefaultTextStyle corresponde ao <elemento defaultTextStyle> . A especificação ISO/IEC 29500 descreve o elemento Open XML PresentationML <defaultTextStyle> usado para representar o estilo de texto padrão em um documento PresentationML da seguinte maneira:

Esse elemento especifica os estilos de texto padrão que devem ser usados na apresentação. O estilo de texto definido aqui pode ser referenciado ao inserir um novo slide se esse slide não estiver associado a um slide master ou se nenhuma informação de estilo tiver sido especificada de outra forma para o texto no slide de apresentação.

© ISO/IEC29500: 2008.


Trabalhando com a Classe de Apresentação

Conforme mostrado no exemplo de código SDK do Open XML a seguir, cada instância da classe Presentation está associada a uma instância da classe PresentationPart , que representa uma parte de apresentação, uma das partes necessárias de um pacote de arquivo de apresentação PresentationML.

A classe Presentation , que representa o <elemento de apresentação> , também está associada a uma série de outras classes que representam os elementos filho do <elemento de apresentação> . Entre essas classes, conforme mostrado no exemplo de código a seguir, estão as classes SlideMasterIdList, SlideIdList, SlideSize, NotesSize e DefaultTextStyle .


Abrir o exemplo de código do SDK XML

O exemplo de código a seguir do artigo Como criar um documento de apresentação fornecendo um nome de arquivo usa o método Create(String, PresentationDocumentType) da classe PresentationDocument do SDK Open XML para criar uma instância dessa mesma classe que tenha o nome e o caminho do arquivo especificados. Em seguida, ele usa o método AddPresentationPart() para adicionar uma instância da classe PresentationPart ao arquivo de documento. Em seguida, ele cria uma instância da classe Apresentação que representa a apresentação. Ele passa uma referência à instância de classe PresentationPart para o procedimento CreatePresentationParts , que cria as outras partes necessárias do arquivo de apresentação. O procedimento CreatePresentation limpa fechando a instância da classe PresentationDocument que ela abriu anteriormente.

O procedimento CreatePresentationParts cria instâncias das classes SlideMasterIdList, SlideIdList, SlideSize, NotesSize e DefaultTextStyle e as acrescenta à apresentação.

using DocumentFormat.OpenXml;
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Presentation;

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

    CreatePresentationParts(presentationPart);

    // Dispose the presentation handle.
    presentationDoc.Dispose();
}
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);

    // Code to create other parts of the presentation file goes here.
}

PresentationML resultante

Quando o código SDK Open XML é executado, o XML a seguir é gravado no documento PresentationML referenciado no código.

    <?xml version="1.0" encoding="utf-8" ?>
    <p:presentation xmlns:p="https://schemas.openxmlformats.org/presentationml/2006/main">
     <p:sldMasterIdLst>
      <p:sldMasterId id="2147483648" r:id="rId1" xmlns:r="https://schemas.openxmlformats.org/officeDocument/2006/relationships"/>
     </p:sldMasterIdLst>
     <p:sldIdLst>
      <p:sldId id="256" r:id="rId2" xmlns:r="https://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>

Confira também

Sobre o SDK do Open XML para Office

Como criar um documento de apresentação fornecendo um nome de arquivo

Como inserir um novo slide em uma apresentação

Como excluir um slide de uma apresentação

Como recuperar o número de slides em um documento de apresentação

Como aplicar um tema a uma apresentação