Como trabalhar com slides mestres
Este tópico aborda a classe Open XML SDK for Office SlideMaster e como se relaciona com o esquema Open XML File Format PresentationML.
Modelos Globais de Diapositivos na PresentationML
A especificação ISO/IEC 29500 descreve o elemento Open XML PresentationML <sldMaster/>
utilizado para representar esquemas de diapositivos num documento PresentationML da seguinte forma.
Este elemento especifica uma instância de um diapositivo master diapositivo. Num diapositivo, master diapositivo contêm todos os elementos que descrevem os objetos e a formatação correspondente para dentro de um diapositivo de apresentação. Num diapositivo master diapositivo estão dois elementos main. O elemento cSld especifica os elementos comuns do diapositivo, como formas e os respetivos corpos de texto anexados. Em seguida, o elemento txStyles especifica a formatação do texto em cada uma destas formas. As outras propriedades num diapositivo master diapositivo especificam outras propriedades para dentro de um diapositivo de apresentação, como informações de cor, cabeçalhos e rodapés, bem como informações de temporização e transição para todos os diapositivos de apresentação correspondentes.
O <sldMaster/>
elemento é o elemento raiz da parte Do Modelo Global de Diapositivos 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 <sldMaster/>
elemento utilizado ao trabalhar com modelos globais de diapositivos e as classes open XML SDK que correspondem aos mesmos.
Elemento PresentationML | Abrir Classe SDK XML |
---|---|
<clrMap/> |
ColorMap |
<cSld/> |
CommonSlideData |
<extLst/> |
ExtensionListWithModification |
<hf/> |
HeaderFooter |
<sldLayoutIdLst/> |
SlideLayoutIdList |
<timing/> |
Timing |
<transition/> |
Transition |
<txStyles/> |
TextStyles |
A tabela seguinte da especificação ISO/IEC 29500 descreve os atributos do <sldMaster/>
elemento.
Atributos | Description |
---|---|
preservar (Preservar Modelo Global de Diapositivos) | Especifica se o esquema de diapositivo correspondente é eliminado quando todos os diapositivos que se seguem a esse esquema são eliminados. Se este atributo não for especificado, um valor de false deve ser assumido pela aplicação geradora. Tal significaria que o diapositivo seria, de facto, eliminado se não existissem diapositivos na apresentação relacionados com o mesmo.Os valores possíveis para este atributo são definidos pelo tipo de dados Esquema Boolean XML W3C. |
Open XML SDK SlideMaster Class
A classe Open XML SDKSlideMaster
representa o <sldMaster/>
elemento definido no esquema Open XML File Format para documentos PresentationML. Utilize a SlideMaster
classe para manipular elementos individuais <sldMaster/>
num documento PresentationML.
As classes que representam elementos subordinados do <sldMaster/>
elemento e que, por conseguinte, estão frequentemente associadas à SlideMaster
classe são apresentadas na lista seguinte.
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.
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.
Classe ExtensionListWithModification
A ExtensionListWithModification
classe corresponde ao <extLst/>
elemento . As seguintes informações da especificação ISO/IEC 29500 introduzem 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.
Observação
A utilização deste elemento extLst permite que a aplicação geradora armazene se esta propriedade de extensão foi modificada.
Classe HeaderFooter
A HeaderFooter
classe corresponde ao <hf/>
elemento . As seguintes informações da especificação ISO/IEC 29500 introduzem o <hf/>
elemento:
Este elemento especifica as informações de cabeçalho e rodapé de um diapositivo. Os cabeçalhos e rodapés consistem em marcadores de posição para texto que devem ser consistentes em todos os diapositivos e tipos de diapositivos, como uma data e hora, numeração de diapositivos e texto de cabeçalho e rodapé personalizado.
Classe SlideLayoutIdList
A SlideLayoutIdList
classe corresponde ao <sldLayoutIdLst/>
elemento . As seguintes informações da especificação ISO/IEC 29500 introduzem o <sldLayoutIdLst/>
elemento:
Este elemento especifica a existência da lista de identificação do esquema de diapositivo. Esta lista está contida no master de diapositivos e é utilizada para determinar que esquemas estão a ser utilizados no ficheiro master diapositivo. Cada esquema na lista de esquemas de diapositivos tem o seu próprio número de identificação e identificador de relação que o identifica exclusivamente no documento de apresentação e no diapositivo master específico no qual é utilizado.
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.
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.
Classe TextStyles
A TextStyles
classe corresponde ao <txStyles/>
elemento . As seguintes informações da especificação ISO/IEC 29500 introduzem o <txStyles/>
elemento:
Este elemento especifica os estilos de texto numa master de diapositivos. Neste elemento estão as informações de estilo para o texto do título, o corpo de texto e outro texto do diapositivo. Este elemento é apenas para utilização no Modelo Global de Diapositivos e, assim, define os estilos de texto para os diapositivos de apresentação correspondentes.
Considere o caso em que gostaríamos de especificar o texto do título de um diapositivo master.
<p:txStyles>
<p:titleStyle>
<a:lvl1pPr algn="ctr" rtl="0" latinLnBrk="0">
<a:spcBef>
<a:spcPct val="0"/>
</a:spcBef>
<a:buNone/>
<a:defRPr sz="4400" kern="1200">
<a:solidFill>
<a:schemeClr val="tx1"/>
</a:solidFill>
<a:latin typeface="+mj-lt"/>
<a:ea typeface="+mj-ea"/>
<a:cs typeface="+mj-cs"/>
</a:defRPr>
</a:lvl1pPr>
</p:titleStyle>
</p:txStyles>
No exemplo anterior, o texto do título é definido de acordo com a formatação acima para todos os diapositivos relacionados na apresentação.
Trabalhar com a Classe SlideMaster
Conforme mostrado no exemplo de código SDK Open XML que se segue, cada instância da SlideMaster
classe está associada a uma instância da SlideMasterPart classe, que representa um diapositivo master parte, uma das partes necessárias de um pacote de ficheiros de apresentação PresentationML. Cada SlideMaster
instância de classe também deve ser associada a instâncias das SlideLayout classes e Slide , por sua vez, associadas a partes de apresentação necessárias com o SlideLayoutPart mesmo nome, representadas pelas classes e SlidePart .
A SlideMaster
classe, que representa o <sldMaster/>
elemento, também está associada a uma série de outras classes que representam os elementos subordinados do <sldMaster/>
elemento. Entre estas classes, conforme mostrado no seguinte exemplo de código, estão a CommonSlideData
classe, a ColorMap
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 slidemaster a uma apresentação existente e cria uma instância de uma classe Open XML SDK SlideMaster
na nova parte master diapositivo. O SlideMaster
construtor de classes cria instâncias da CommonSlideData
classe e das ColorMap
classes , SlideLayoutIdList
e TextStyles
. O CommonSlideData
construtor de classe cria uma instância da ShapeTree classe, cujo construtor, por sua vez, cria instâncias de classe adicionais: uma instância da NonVisualGroupShapeProperties classe, uma instância da GroupShapeProperties classe e uma instância da Shape classe, entre outras.
O espaço de nomes representado pela letra P no código é o espaço de nomes.
static SlideMasterPart CreateSlideMasterPart(SlideLayoutPart slideLayoutPart1)
{
SlideMasterPart slideMasterPart1 = slideLayoutPart1.AddNewPart<SlideMasterPart>("rId1");
SlideMaster slideMaster = new SlideMaster(
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 Placeholder 1" },
new P.NonVisualShapeDrawingProperties(new ShapeLocks() { NoGrouping = true }),
new ApplicationNonVisualDrawingProperties(new PlaceholderShape() { Type = PlaceholderValues.Title })),
new P.ShapeProperties(),
new P.TextBody(
new BodyProperties(),
new ListStyle(),
new Paragraph())))),
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 },
new SlideLayoutIdList(new SlideLayoutId() { Id = (UInt32Value)2147483649U, RelationshipId = "rId1" }),
new TextStyles(new TitleStyle(), new BodyStyle(), new OtherStyle()));
slideMasterPart1.SlideMaster = slideMaster;
return slideMasterPart1;
}