Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Este tópico discute o Open XML SDK para a classe Office Slide e como ele se relaciona com o esquema PresentationML do Open XML File Format. 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 em PresentationML
A ISO /IEC 29500 descreve o elemento Open XML PresentationML <sld/> 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 classificação de slides.
Exemplo: considere a seguinte apresentação personalizada com uma classificaçã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/IEC 29500: 2016
O <sld/> elemento é o elemento raiz da parte PresentationML Slide. 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 <sld/> elemento usado ao trabalhar com slides de apresentação e as classes do Open XML SDK que correspondem a eles.
| Elemento PresentationML | Classe Open XML SDK |
|---|---|
<clrMapOvr /> |
ColorMapOverride |
<cSld /> |
CommonSlideData |
<extLst /> |
ExtensionListWithModification |
<timing /> |
Timing |
<transition /> |
Transition |
Classe de slides do Open XML SDK
A classe Open XML SDK Slide representa o <sld/> elemento definido no esquema Open XML File Format para documentos PresentationML.
Use o Slide objeto para manipular elementos individuais <sld/> em um documento PresentationML.
As classes comumente associadas à Slide classe são mostradas nas seções a seguir.
Classe ColorMapOverride
A ColorMapOverride classe corresponde ao <clrMapOvr/> elemento. As seguintes informações da especificação ISO/IEC 29500 introduzem o <clrMapOvr/> elemento:
Esse elemento fornece um mecanismo para substituir os esquemas de cores listados no <ClrMap/> elemento. Se o <masterClrMapping/> elemento filho estiver presente, o esquema de cores definido pelo master será usado. Se o <overrideClrMapping/> elemento filho estiver presente, ele definirá um novo esquema de cores específico para o slide de anotações pai, o slide de apresentação ou o layout do slide.
© 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:
Esse elemento especifica um contêiner para o tipo de informações de slide que é relevante para todos os tipos de slide. Todos os slides compartilham um conjunto comum de propriedades que é independente do tipo de slide; A descrição dessas propriedades para qualquer slide específico é armazenada no contêiner do <cSld/> slide. Os dados de slide específicos do tipo de slide indicado pelo elemento pai são armazenados em outro lugar.
Os dados reais descrevem <cSld/> apenas o slide pai específico; é apenas o tipo de informação armazenada que é comum em todos os slides.
© ISO/IEC 29500: 2016
Classe ExtensionListWithModification
A ExtensionListWithModification classe corresponde ao <extLst/> elemento. As seguintes informações do
A especificação apresenta o <extLst/> elemento:
Este elemento especifica a lista de extensões com capacidade de modificação dentro da qual todas as extensões futuras do tipo <ext/> de elemento são definidas.
A lista de extensão, juntamente 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 na estrutura.
[Observação: o uso desse extLst elemento permite que o aplicativo gerador armazene se essa propriedade de extensão foi modificada. nota final]
© ISO/IEC 29500: 2016
Classe de tempo
A Timing classe corresponde ao <timing/> elemento. As seguintes informações da especificação ISO/IEC 29500 introduzem o <timing/> elemento:
Esse elemento especifica as informações de intervalo para lidar com todas as animações e eventos cronometrados no slide correspondente. Essas informações são rastreadas por meio de nós de tempo dentro do <timing/> elemento.
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/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:
Esse elemento especifica o tipo de transição de slide que deve ser usada para fazer a transição do slide anterior para o slide atual. Ou seja, as informações sobre a transição são armazenadas no slide que aparece após a conclusão da transição.
© ISO/IEC 29500: 2016
Trabalhando com a Classe Slide
Conforme mostrado no exemplo de código do Open XML SDK a seguir, cada instância da Slide classe está associada a uma instância da SlidePart classe, que representa uma parte do slide, uma das partes necessárias de um pacote de arquivos de apresentação PresentationML. Cada instância da Slide classe também deve ser associada a SlideLayout instâncias das classes and SlideMaster , que por sua vez são associadas a partes de apresentação necessárias com nomes semelhantes, representadas pelas SlideLayoutPart classes and SlideMasterPart .
A Slide classe, que representa o <sld/> elemento, também está, portanto, associada a uma série de outras classes que representam os elementos filho do <sld/> elemento. Entre essas classes, conforme mostrado no exemplo de código a seguir, estão a classe, a CommonSlideDataColorMapOverride classe, a ShapeTree classe e a Shape classe.
Exemplo de código do Open XML SDK
O seguinte método do artigo Como: Criar um documento de apresentação fornecendo um nome de arquivo adiciona uma nova parte do slide a uma apresentação existente e cria uma instância da classe Open XML SDK Slide na nova parte do slide.
O Slide construtor de classe cria instâncias das CommonSlideData classes and ColorMapOverride . O CommonSlideData construtor de classe cria uma instância da classe, cujo construtor, por sua vez, cria instâncias de ShapeTree classe adicionais: uma instância da NonVisualGroupShapeProperties classe, da GroupShapeProperties classe e da Shape classe.
Todas essas instâncias de classe e instâncias das classes que representam os elementos filho do <sld/> elemento 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 DocumentFormat.OpenXml.Presentation namespace.
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, portanto, ao slide, instancie um segundo Shape objeto passando um parâmetro adicional que contém o código a seguir para o 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" }))))),
PresentationML gerado
Quando o código Open XML SDK 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="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
Sobre o Open XML SDK 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