Compartilhar via


Como trabalhar com slides de apresentações

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


Diapositivos de Apresentação no PresentationML

A especificação ISO/IEC 29500 descreve o elemento Open XML PresentationML <sld/> utilizado para representar um diapositivo de apresentação num documento PresentationML da seguinte forma:

Este elemento especifica um diapositivo numa lista de diapositivos. A lista de diapositivos é utilizada para especificar uma ordenação de diapositivos.

Exemplo: considere a seguinte apresentação personalizada com uma ordenação de diapositivos.

<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 diapositivos é diapositivo 4, depois 3, 2 e, finalmente, 5.

© ISO/IEC 29500: 2016

O <sld/> elemento é o elemento raiz da peça Diapositivo 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 seguinte lista os elementos subordinados do <sld/> elemento utilizado ao trabalhar com diapositivos de apresentação e as classes open XML SDK que correspondem aos mesmos.

Elemento PresentationML Abrir Classe SDK XML
<clrMapOvr /> ColorMapOverride
<cSld /> CommonSlideData
<extLst /> ExtensionListWithModification
<timing /> Timing
<transition /> Transition

Abrir a Classe de Diapositivos do SDK XML

A classe Open XML SDK Slide representa o <sld/> elemento definido no esquema Open XML File Format para documentos PresentationML. Utilize o Slide objeto para manipular elementos individuais <sld/> num documento PresentationML.

As classes normalmente associadas à Slide classe são apresentadas nas secções seguintes.

Classe ColorMapOverride

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

Este elemento fornece um mecanismo para substituir os esquemas de cores listados no <ClrMap/> elemento . Se o <masterClrMapping/> elemento subordinado estiver presente, é utilizado o esquema de cores definido pelo master. Se o <overrideClrMapping/> elemento subordinado estiver presente, define um novo esquema de cores específico para o diapositivo de notas principais, diapositivo de apresentação ou esquema de diapositivo.

© ISO/IEC 29500: 2016

Classe CommonSlideData

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

Este elemento especifica um contentor para o tipo de informações de diapositivos relevantes para todos os tipos de diapositivos. Todos os diapositivos partilham um conjunto comum de propriedades independentes do tipo de diapositivo; a descrição destas propriedades para qualquer diapositivo específico é armazenada no contentor do <cSld/> diapositivo. Os dados de diapositivos específicos do tipo de diapositivo indicado pelo elemento principal são armazenados noutro local.

Os dados reais no <cSld/> descrevem apenas o diapositivo principal específico; é apenas o tipo de informações armazenadas que é comum em todos os diapositivos.

© ISO/IEC 29500: 2016

Classe ExtensionListWithModification

A ExtensionListWithModification classe corresponde ao <extLst/> elemento . As seguintes informações do

ISO/IEC 29500

especificação apresenta o <extLst/> elemento:

Este elemento especifica a lista de extensões com a capacidade de modificação na qual são definidas todas as extensões futuras do tipo <ext/> de elemento. A lista de extensões, juntamente com as extensões futuras correspondentes, é utilizada para expandir as capacidades de armazenamento da arquitetura PresentationML. Isto permite que vários novos tipos de dados sejam armazenados nativamente dentro da arquitetura.

[Nota: a utilização deste extLst elemento permite que a aplicação geradora armazene se esta propriedade de extensão foi modificada. nota de fim]

© ISO/IEC 29500: 2016

Classe de Temporização

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

Este elemento especifica as informações de temporização para processar todas as animações e eventos temporizados no diapositivo correspondente. Estas informações são controladas através de nós de tempo dentro do <timing/> elemento . Pode encontrar mais informações sobre as especificidades destes nós de tempo e como devem ser definidos na secção Animação da arquitetura PresentationML.

© ISO/IEC 29500: 2016

Classe de Transição

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

Este elemento especifica o tipo de transição de diapositivo que deve ser utilizado para fazer a transição para o diapositivo atual do diapositivo anterior. Ou seja, as informações de transição são armazenadas no diapositivo que aparece após a transição estar concluída.

© ISO/IEC 29500: 2016


Trabalhar com a Classe de Diapositivos

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

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


Open XML SDK Code Example

O seguinte método do artigo Como: Criar um documento de apresentação ao fornecer um nome de ficheiro adiciona uma nova parte do diapositivo a uma apresentação existente e cria uma instância da classe Open XML SDK Slide na nova parte do diapositivo. O Slide construtor de classes cria instâncias das CommonSlideData classes e ColorMapOverride . O CommonSlideData construtor de classes cria uma instância da ShapeTree classe cujo construtor, por sua vez, cria instâncias de classe adicionais: uma instância da NonVisualGroupShapeProperties classe, a GroupShapeProperties classe e a Shape classe.

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

O espaço de nomes representado pela letra P no código é o espaço de nomes.

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 formas e, por conseguinte, ao diapositivo, instanciar um segundo Shape objeto ao transmitir um parâmetro adicional que contém o seguinte código ao ShapeTree construtor.

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" }))))),

Apresentação GeradaML

Quando o código SDK Open XML no método é executado, o seguinte código XML é escrito no ficheiro de documento PresentationML referenciado no código.

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

Confira também

Acerca do SDK Open XML para o Office

Como: Inserir um novo diapositivo numa apresentação

Procedimentos: Eliminar um diapositivo de uma apresentação

Como: Obter o número de diapositivos num documento de apresentação

Como: Aplicar um tema a uma apresentação

Como: Criar um documento de apresentação ao fornecer um nome de ficheiro