Trabajar con patrones de diapositiva
En este tema se describe la clase Open XML SDK for Office SlideMaster y cómo se relaciona con el esquema PresentationML de formato de archivo Open XML.
Patrones de diapositivas de PresentationML
La especificación ISO/IEC 29500 describe al elemento de PresentationML de Office Open XML <sldMaster/>
, que se usa para representar diseños de diapositivas en un documento PresentationML de la siguiente manera.
Este elemento especifica una instancia de una diapositiva de patrón de diapositivas. Dentro de una diapositiva de patrón de diapositivas se encuentran todos los elementos que describen los objetos y su correspondiente formato para una diapositiva de presentación. En una diapositiva de patrón de diapositivas hay dos elementos principales. El elemento cSld especifica los elementos de diapositiva comunes, como las formas y sus cuerpos de texto adjuntos. A continuación, el elemento txStyles especifica el formato del texto de cada una de estas formas. Las demás propiedades dentro de una diapositiva de patrón de diapositivas especifican otras propiedades para una diapositiva de presentación, como la información de color, los encabezados y pies de página, así como la información de tiempos y transición de todas las diapositivas de presentación correspondientes.
El atributo <sldMaster/>
es el elemento raíz de la parte SlideMaster de PresentationML. Para obtener más información acerca de la estructura global de las partes y los elementos que conforman un documento PresentationML, vea Estructura de un documento PresentationML.
En la tabla siguiente se enumeran los elementos secundarios del <sldMaster/>
elemento que se usan al trabajar con patrones de diapositivas y las clases del SDK de Open XML que se corresponden con ellos.
Elemento de PresentationML | Open XML SDK (clase) |
---|---|
<clrMap/> |
ColorMap |
<cSld/> |
CommonSlideData |
<extLst/> |
ExtensionListWithModification |
<hf/> |
HeaderFooter |
<sldLayoutIdLst/> |
SlideLayoutIdList |
<timing/> |
Timing |
<transition/> |
Transition |
<txStyles/> |
TextStyles |
La siguiente tabla de la especificación ISO/IEC 29500 describe los atributos del elemento <sldMaster/>
.
Atributos | Descripción |
---|---|
preserve (Conservar patrón de diapositivas) | Especifica si el diseño de la diapositiva correspondiente se elimina al eliminar todas las diapositivas que tienen ese diseño. Si no se especifica este atributo, la aplicación generadora debe asumir un valor de false . Esto significa que la diapositiva se eliminará si la presentación no contiene diapositivas relacionadas con ella.El tipo de datos W3C XML Schema Boolean define los valores posibles para este atributo. |
Clase SlideMaster del SDK de Open XML
La clase SDKSlideMaster
de Open XML representa el <sldMaster/>
elemento definido en el esquema de formato de archivo Open XML para documentos PresentationML. Use la SlideMaster
clase para manipular elementos individuales <sldMaster/>
en un documento PresentationML.
Las clases que representan elementos secundarios del <sldMaster/>
elemento y que, por lo tanto, se asocian normalmente a la SlideMaster
clase se muestran en la lista siguiente.
Clase ColorMapOverride
La ColorMapOverride
clase corresponde al <clrMapOvr/>
elemento . La siguiente información de la especificación ISO/IEC 29500 presenta el <clrMapOvr/>
elemento :
Este elemento proporciona un mecanismo con el cual se pueden invalidar las combinaciones de colores que se enumeran en el elemento <ClrMap/>
. Si está presente el elemento secundario <masterClrMapping/>
, se usa la combinación de colores que definió el patrón. Si está presente el elemento secundario <overrideClrMapping/>
, define una nueva combinación de colores específica de la diapositiva de notas, diapositiva de presentaciones o diseño de la diapositiva primarios.
Clase CommonSlideData
La CommonSlideData
clase corresponde al <cSld/>
elemento . La siguiente información de la especificación ISO/IEC 29500 presenta el <cSld/>
elemento :
Este elemento especifica un contenedor para el tipo de información sobre diapositivas que es pertinente a todos los tipos de diapositiva. Todas las diapositivas comparten un conjunto de propiedades común, que es independiente del tipo de diapositiva; la descripción de estas propiedades para una diapositiva específica se almacena en el contenedor <cSld/>
de la diapositiva. Los datos de la diapositiva específicos del tipo de diapositiva, que indica el elemento primario, se almacenan en otro lugar.
Los datos reales de <cSld/>
describen solo la diapositiva primaria determinada; solo el tipo de información almacenada es común a todas las diapositivas.
Clase ExtensionListWithModification
La ExtensionListWithModification
clase corresponde al <extLst/>
elemento . La siguiente información de la especificación ISO/IEC 29500 presenta el <extLst/>
elemento :
Este elemento especifica la lista de extensiones con capacidad de modificación, en la cual se definen todas las futuras extensiones del tipo de elemento <ext/>
. La lista de extensiones, junto con las extensiones futuras correspondientes, se usa para ampliar la capacidad de almacenamiento del marco PresentationML. Esto permite que se almacenen en el marco diversos tipos de datos nuevos de forma nativa.
Nota:
El uso de este elemento extLst permite a la aplicación generadora almacenar si se ha modificado esta propiedad de extensión.
Clase HeaderFooter
La HeaderFooter
clase corresponde al <hf/>
elemento . La siguiente información de la especificación ISO/IEC 29500 presenta el <hf/>
elemento :
Este elemento especifica la información de los encabezados y pies de página de una diapositiva. Los encabezados y pies de página constan de marcadores de posición para texto que debe ser coherente a lo largo de todas las diapositivas, como una fecha y hora, numeración de diapositivas y encabezados y pies de página personalizados.
Clase SlideLayoutIdList
La SlideLayoutIdList
clase corresponde al <sldLayoutIdLst/>
elemento . La siguiente información de la especificación ISO/IEC 29500 presenta el <sldLayoutIdLst/>
elemento :
Este elemento especifica la existencia de la lista de identificación de diseño de la diapositiva. Esta lista está incluida en el patrón de diapositivas y se usa para determinar qué diseños están en uso en el archivo de patrón de diapositivas. Todos los diseños de la lista de diseños de la diapositiva tienen su propio número de identificación e identificador de relación que los identifican de forma única en el documento de presentación y en el patrón de diapositivas concreto en el que se usan.
Clase Timing
La Timing
clase corresponde al <timing/>
elemento . La siguiente información de la especificación ISO/IEC 29500 presenta el <timing/>
elemento :
Este elemento especifica la información de tiempos para el control de todas las animaciones y los eventos cronometrados dentro de la diapositiva correspondiente. Se realiza un seguimiento de esta información a través de nodos de tiempo del elemento <timing/>
. En la sección Animación del marco PresentationML, se puede encontrar más información sobre los detalles de estos nodos de tiempo y el modo en que deben definirse.
Clase Transition
La Transition
clase corresponde al <transition/>
elemento . La siguiente información de la especificación ISO/IEC 29500 presenta el <transition/>
elemento :
Este elemento especifica el tipo de transición de diapositiva que se debe usar para realizar la transición hacia la diapositiva actual desde la diapositiva anterior. Es decir, la información de transición se almacena en la diapositiva que aparece después de que se completa la transición.
Clase TextStyles
La TextStyles
clase corresponde al <txStyles/>
elemento . La siguiente información de la especificación ISO/IEC 29500 presenta el <txStyles/>
elemento :
Este elemento especifica los estilos de texto dentro de un patrón de diapositivas. Dentro de este elemento se encuentra la información de estilo del texto de título, el texto de cuerpo y otro texto de la diapositiva. Este elemento solo se usa dentro del patrón de diapositivas y, por tanto, establece los estilos de texto para las diapositivas de presentación correspondientes.
Tenga en cuenta el caso en el que nos gustaría especificar el texto del título de una diapositiva maestra.
<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>
En el ejemplo anterior, el texto del título se establece según el formato anterior para todas las diapositivas relacionadas dentro de la presentación.
Trabajar con la clase SlideMaster
Como se muestra en el ejemplo de código del SDK de Open XML que sigue, cada instancia de la SlideMaster
clase está asociada a una instancia de la SlideMasterPart clase , que representa una parte maestra de diapositivas, una de las partes necesarias de un paquete de archivo de presentación PresentationML. Cada SlideMaster
instancia de clase también debe estar asociada a instancias de las SlideLayout clases y Slide , a su vez, asociadas a elementos de presentación necesarios con un nombre similar, representados por las SlideLayoutPart clases y SlidePart .
Por SlideMaster
lo tanto, la clase , que representa el <sldMaster/>
elemento , también está asociada a una serie de otras clases que representan los elementos secundarios del <sldMaster/>
elemento . Entre estas clases, como se muestra en el ejemplo de código siguiente, se encuentran la CommonSlideData
clase, la ColorMap
clase, la ShapeTree clase y la Shape clase .
Ejemplo de código de Open XML SDK 2.0
El siguiente método del artículo How to: Create a presentation document by providing a file name (Cómo: Crear un documento de presentación proporcionando un nombre de archivo ) agrega un nuevo elemento slidemaster a una presentación existente y crea una instancia de una clase sdk SlideMaster
de Open XML en la nueva parte maestra de diapositivas. El SlideMaster
constructor de clase crea instancias de la CommonSlideData
clase y las ColorMap
clases , SlideLayoutIdList
y TextStyles
. El CommonSlideData
constructor de clase crea una instancia de la ShapeTree clase, cuyo constructor a su vez crea instancias de clase adicionales: una instancia de la NonVisualGroupShapeProperties clase, una instancia de la GroupShapeProperties clase y una instancia de la Shape clase, entre otros.
El espacio de nombres representado por la letra P del código es el espacio de nombres.
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;
}