Como trabalhar com slides mestres de folhetos
Este tópico discute a classe Open XML SDK for Office HandoutMaster 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 mestres de apostila em PresentationML
A especificação ISO/IEC 29500 descreve o elemento Open XML PresentationML <handoutMaster> usado para representar uma apostila master slide em um documento PresentationML da seguinte maneira:
Esse elemento especifica uma instância de um slide master de apostila. Dentro de uma apostila master slide estão contidos todos os elementos que descrevem os objetos e sua formatação correspondente para dentro de um slide de apostila. Em uma apostila master deslize o elemento cSld especifica os elementos de slide comuns, como formas e seus corpos de texto anexados. Há outras propriedades dentro de uma apostila master slide, mas cSld abrange a maioria da finalidade pretendida para um slide handoutMaster.
© ISO/IEC29500: 2008.
A tabela a seguir lista os elementos filho do <elemento handoutMaster> usados ao trabalhar com slides de master de apostila e as classes SDK Open XML que correspondem a eles.
Elemento PresentationML | Classe SDK Open XML |
---|---|
<clrMap> | Colormap |
<cSld> | CommonSlideData |
<extLst> | ExtensionListWithModification |
<Hf> | HeaderFooter |
Abrir classe XML SDK HandoutMaster
A classe Open XML SDK HandoutMaster representa o <elemento handoutMaster> definido no esquema Open XML File Format para documentos PresentationML. Use a classe HandoutMaster para manipular elementos do handoutMaster> individuais <em um documento PresentationML.
As classes comumente associadas à classe HandoutMaster são mostradas nas seções a seguir.
Classe ColorMap
A classe ColorMap corresponde ao <elemento clrMap> . As seguintes informações da especificação ISO/IEC 29500 introduzem o <elemento clrMap> :
Esse elemento especifica a camada de mapeamento que transforma uma definição de esquema de cores em outra. Cada atributo representa um nome de cor que pode ser referenciado neste master e o valor é a cor correspondente no tema.
Exemplo: considere o seguinte mapeamento de cores que se aplica a um slide master:
<p:clrMap bg1="dk1" tx1="lt1" bg2="dk2" tx2="lt2" accent1="accent1"
accent2="accent2" accent3="accent3" accent4="accent4"
accent5="accent5"
accent6="accent6" hlink="hlink" folHlink="folHlink"/>
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.
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.
Classe HeaderFooter
A classe HeaderFooter corresponde ao <elemento hf> . As seguintes informações da especificação ISO/IEC 29500 introduzem o <elemento hf> :
Esse elemento especifica as informações de cabeçalho e rodapé para um slide. Cabeçalhos e rodapés consistem em espaços reservados para texto que devem ser consistentes em todos os slides e tipos de slides, como data e hora, numeração de slides e texto de cabeçalho e rodapé personalizados.
Trabalhando com a classe HandoutMaster
Conforme mostrado no exemplo de código SDK do Open XML a seguir, cada instância da classe HandoutMaster está associada a uma instância da classe HandoutMasterPart, que representa uma apostila master parte, uma das partes de um pacote de arquivo de apresentação PresentationML e uma parte necessária para um arquivo de apresentação que contém apostilas.
A classe HandoutMaster , que representa o <elemento handoutMaster> , também está associada a uma série de outras classes que representam os elementos filho do <elemento handoutMaster> . Entre essas classes, conforme mostrado no exemplo de código a seguir, estão a classe CommonSlideData , a classe ColorMap , a classe ShapeTree e a classe Shape .
Abrir o exemplo de código do SDK XML
O método a seguir adiciona uma nova apostila master parte a uma apresentação existente e cria uma instância de uma classe Open XML SDKHandoutMaster na nova apostila master parte. O construtor da classe HandoutMaster cria instâncias da classe CommonSlideData e da classe ColorMap . 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 , uma instância da classe GroupShapeProperties e uma instância da classe Shape .
O namespace representado pela letra P no código é o namespace DocumentFormat.OpenXml.Presentation .
using DocumentFormat.OpenXml;
using DocumentFormat.OpenXml.Drawing;
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Presentation;
using D = DocumentFormat.OpenXml.Drawing;
using P = DocumentFormat.OpenXml.Presentation;
static HandoutMasterPart CreateHandoutMasterPart(PresentationPart presentationPart)
{
HandoutMasterPart handoutMasterPart1 = presentationPart.AddNewPart<HandoutMasterPart>("rId3");
handoutMasterPart1.HandoutMaster = new HandoutMaster(
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 P.ColorMap()
{
Background1 = D.ColorSchemeIndexValues.Light1,
Text1 = D.ColorSchemeIndexValues.Dark1,
Background2 = D.ColorSchemeIndexValues.Light2,
Text2 = D.ColorSchemeIndexValues.Dark2,
Accent1 = D.ColorSchemeIndexValues.Accent1,
Accent2 = D.ColorSchemeIndexValues.Accent2,
Accent3 = D.ColorSchemeIndexValues.Accent3,
Accent4 = D.ColorSchemeIndexValues.Accent4,
Accent5 = D.ColorSchemeIndexValues.Accent5,
Accent6 = D.ColorSchemeIndexValues.Accent6,
Hyperlink = D.ColorSchemeIndexValues.Hyperlink,
FollowedHyperlink = D.ColorSchemeIndexValues.FollowedHyperlink
});
return handoutMasterPart1;
}