Compartilhar via


Como trabalhar com slides de apresentações

Este tópico discute a classe Open XML SDK for Office Slide 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**.


Slides de apresentação no PresentationML

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

Esse elemento especifica um slide dentro de uma lista de slides. A lista de slides é usada para especificar uma ordenação de slides.

Exemplo: considere o seguinte show personalizado com uma ordenação de slides.

<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>

No exemplo acima, a ordem especificada para apresentar os slides é o slide 4, depois 3, 2 e, por fim, 5.

© ISO/IEC29500: 2008.

O <elemento sld> é o elemento raiz da parte slide 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 os elementos filho do <elemento sld> usado ao trabalhar com slides de apresentação e as classes de SDK Open XML que correspondem a eles.

Elemento PresentationML Classe SDK Open XML
<clrMapOvr> ColorMapOverride
<cSld> CommonSlideData
<extLst> ExtensionListWithModification
<Tempo> Timing
<Transição> Transition

Abrir classe de slide do SDK XML

A classe Open XML SDKSlide representa o <elemento sld> definido no esquema Open XML File Format para documentos PresentationML. Use o objeto Slide para manipular elementos sld> individuais <em um documento PresentationML.

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

Classe ColorMapOverride

A classe ColorMapOverride corresponde ao <elemento clrMapOvr> . As seguintes informações da especificação ISO/IEC 29500 introduzem o <elemento clrMapOvr> :

Esse elemento fornece um mecanismo com o qual substituir os esquemas de cores listados no <elemento ClrMap> . Se o <elemento filho masterClrMapping> estiver presente, o esquema de cores definido pelo master será usado. Se o <elemento filho overrideClrMapping> estiver presente, ele definirá um novo esquema de cores específico para o slide de notas pai, slide de apresentação ou layout de slides.

© ISO/IEC29500: 2008.

Classe CommonSlideData

A classe CommonSlideData corresponde ao <elemento cSld> . As seguintes informações da especificação ISO/IEC 29500 introduzem o <elemento cSld> :

Esse elemento especifica um contêiner para o tipo de informações de slide relevantes para todos os tipos de slides. Todos os slides compartilham um conjunto comum de propriedades independente do tipo de slide; a descrição dessas propriedades para qualquer slide específico é armazenada no contêiner cSld> do <slide. Os dados de slide específicos para o tipo de slide indicado pelo elemento pai são armazenados em outro lugar.

Os dados reais em <cSld> descrevem apenas o slide pai específico; é apenas o tipo de informação armazenada que é comum em todos os slides.

© ISO/IEC29500: 2008.

Classe ExtensionListWithModification

A classe ExtensionListWithModification corresponde ao <elemento extLst>. As seguintes informações da especificação ISO/IEC 29500 introduzem o <elemento extLst> :

Esse elemento especifica a lista de extensão com capacidade de modificação na qual todas as extensões futuras do tipo <de elemento são> definidas. A lista de extensão junto com as extensões futuras correspondentes é usada para estender os recursos de armazenamento da estrutura PresentationML. Isso permite que vários novos tipos de dados sejam armazenados nativamente dentro da estrutura.

[Observação: o uso desse elemento extLst permite que o aplicativo gerador armazene se essa propriedade de extensão foi modificada. nota final]

© ISO/IEC29500: 2008.

Classe Timing

A classe Timing corresponde ao <elemento de tempo> . As seguintes informações da especificação ISO/IEC 29500 introduzem o <elemento de tempo> :

Esse elemento especifica as informações de tempo para lidar com todas as animações e eventos temporizados no slide correspondente. Essas informações são rastreadas por meio de nós de tempo dentro do <elemento de tempo> . Mais informações sobre as especificidades desses nós de tempo e como eles devem ser definidos podem ser encontradas na seção Animação da estrutura PresentationML.

© ISO/IEC29500: 2008.

Classe de transição

A classe Transição corresponde ao elemento de <transição> . As seguintes informações da especificação ISO/IEC 29500 introduzem o <elemento de transição> :

Esse elemento especifica o tipo de transição de slide que deve ser usada para fazer a transição para o slide atual do slide anterior. Ou seja, as informações de transição são armazenadas no slide que aparece após a conclusão da transição.

© ISO/IEC29500: 2008.


Trabalhando com a classe Slide

Conforme mostrado no exemplo de código SDK do Open XML que se segue, cada instância da classe Slide está associada a uma instância da classe SlidePart , que representa uma parte de slide, uma das partes necessárias de um pacote de arquivo de apresentação PresentationML. Cada instância da classe Slide também deve ser associada a instâncias das classes SlideLayout e SlideMaster , que por sua vez estão associadas a partes de apresentação necessárias nomeadas da mesma forma, representadas pelas classes SlideLayoutPart e SlideMasterPart .

A classe Slide , que representa o <elemento sld> , também está associada a uma série de outras classes que representam os elementos filho do <elemento sld> . Entre essas classes, conforme mostrado no exemplo de código a seguir, estão a classe CommonSlideData , a classe ColorMapOverride , a classe ShapeTree e a classe Shape .


Abrir o exemplo de código do SDK XML

O seguinte método do artigo How to: Create a presentation document by providing a file name** adds a new slide part to an existing presentation and create a instance of the Open XML SDK Slide class in the new slide part. O construtor da classe Slide cria instâncias das classes CommonSlideData e ColorMapOverride . O construtor da classe CommonSlideData cria uma instância da classe ShapeTree , cujo construtor, por sua vez, cria instâncias de classe adicionais: uma instância da classe NonVisualGroupShapeProperties , a classe GroupShapeProperties e a classe Shape .

Todas essas instâncias de classe e instâncias das classes que representam os elementos filho do <elemento sld> são necessárias para criar o número mínimo de elementos XML necessários para representar um novo slide.

O namespace representado pela letra P no código é o namespace DocumentFormat.OpenXml.Presentation .

    private 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;
             }

Para adicionar outra forma à árvore de forma e, portanto, ao slide, instancie um segundo objeto Shape passando um parâmetro adicional que contém o código a seguir para o construtor 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 gerado

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

    <?xml version="1.0" encoding="utf-8" ?> 
    <p:sld xmlns:p="https://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="https://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="https://schemas.openxmlformats.org/drawingml/2006/main" /> 
              </p:cNvSpPr>
                <p:nvPr>
                  <p:ph /> 
                </p:nvPr>
                </p:nvSpPr>
                <p:spPr /> 
                <p:txBody>
                 <a:bodyPr xmlns:a="https://schemas.openxmlformats.org/drawingml/2006/main" /> 
             <a:lstStyle xmlns:a="https://schemas.openxmlformats.org/drawingml/2006/main" /> 
                 <a:p xmlns:a="https://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="https://schemas.openxmlformats.org/drawingml/2006/main" /> 
        </p:clrMapOvr>
    </p:sld>

Confira também

Sobre o SDK do Open XML para Office

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

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