Share via


Trabajar con patrones de diapositiva

En este tema se describe la clase SlideMaster del SDK de Open XML para Office 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 el elemento sldMaster> de PresentationML <de Open XML que se usa para representar diseños de diapositivas en un documento PresentationML como se indica a continuación.

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 <elemento sldMaster> es el elemento raíz de la parte PresentationML Slide Master. Para obtener más información acerca de la estructura global de los elementos que conforman un documento PresentationML, vea Estructura de un documento PresentationML.

En la tabla siguiente se enumeran los elementos secundarios del <elemento sldMaster> 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
<Tiempo> Timing
<Transición> Transition
<txStyles> TextStyles

En la tabla siguiente de la especificación ISO/IEC 29500 se describen 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 que lo genera supondrá un valor false. Esto significa que la diapositiva se eliminará si la presentación no contiene diapositivas relacionadas con ella.
El tipo de datos Boolean del esquema XML W3C define los valores posibles para este atributo.

Clase SlideMaster del SDK de Open XML

La claseSlideMaster del SDK de Open XML representa el <elemento sldMaster> definido en el esquema de formato de archivo Open XML para documentos PresentationML. Use la clase SlideMaster para manipular elementos sldMaster> individuales <en un documento PresentationML.

Las clases que representan elementos secundarios del <elemento sldMaster> y que, por lo tanto, se asocian normalmente a la clase SlideMaster se muestran en la lista siguiente.

Clase ColorMapOverride

La clase ColorMapOverride corresponde al <elemento clrMapOvr> . La siguiente información de la especificación ISO/IEC 29500 presenta el <elemento clrMapOvr> :

Este elemento proporciona un mecanismo con el que invalidar las combinaciones de colores enumeradas en el <elemento ClrMap> . Si el <elemento secundario masterClrMapping> está presente, se usa la combinación de colores definida por el patrón. Si el <elemento secundario overrideClrMapping> está presente, define una nueva combinación de colores específica de la diapositiva de notas primarias, la diapositiva de presentación o el diseño de diapositivas.

Clase CommonSlideData

La clase CommonSlideData corresponde al <elemento cSld> . La siguiente información de la especificación ISO/IEC 29500 presenta el <elemento cSld> :

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 común de propiedades que son independientes del tipo de diapositiva; la descripción de estas propiedades para cualquier diapositiva determinada 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; es solo el tipo de información almacenada que es común en todas las diapositivas.

Clase ExtensionListWithModification

La clase ExtensionListWithModification corresponde al <elemento extLst>. La siguiente información de la especificación ISO/IEC 29500 presenta el <elemento extLst> :

Este elemento especifica la lista de extensiones con capacidad de modificación en la que se definen todas las extensiones futuras 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 clase HeaderFooter corresponde al <elemento hf> . La siguiente información de la especificación ISO/IEC 29500 presenta el <elemento hf> :

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 clase SlideLayoutIdList corresponde al <elemento sldLayoutIdLst> . La siguiente información de la especificación ISO/IEC 29500 presenta el <elemento sldLayoutIdLst> :

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 clase Timing corresponde al <elemento timing> . La siguiente información de la especificación ISO/IEC 29500 presenta el <elemento timing> :

Este elemento especifica la información de tiempos para el control de todas las animaciones y los eventos cronometrados dentro de la diapositiva correspondiente. Esta información se realiza un seguimiento a través de nodos de tiempo dentro 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 clase Transition corresponde al <elemento transition> . La siguiente información de la especificación ISO/IEC 29500 presenta el <elemento de transición> :

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 clase TextStyles corresponde al <elemento txStyles> . La siguiente información de la especificación ISO/IEC 29500 presenta el <elemento txStyles> :

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>vv  
                    <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 clase SlideMaster está asociada a una instancia de la clase SlideMasterPart , que representa una parte maestra de diapositivas, una de las partes necesarias de un paquete de archivos de presentación PresentationML. Cada instancia de clase SlideMaster también debe asociarse a instancias de las clases SlideLayout y <Slide , que a su vez están asociadas a elementos de presentación necesarios con un nombre similar, representados por las clases SlideLayoutPart y SlidePart .

La clase SlideMaster , que representa el <elemento sldMaster> , también está asociada a una serie de otras clases que representan los elementos secundarios del <elemento sldMaster> . Entre estas clases, como se muestra en el ejemplo de código siguiente, se encuentran la clase CommonSlideData , la clase ColorMap , la clase ShapeTree y la clase Shape .

Ejemplo de código de Open XML SDK 2.0

El método siguiente del artículo How to: Create a presentation document by providing a file name agrega un nuevo elemento slidemaster a una presentación existente y crea una instancia de una claseSlideMaster del SDK de Open XML en la nueva parte maestra de diapositivas. El constructor de la clase SlideMaster crea instancias de las clases CommonSlideData, ColorMap, SlideLayoutIdList y TextStyles. El constructor de clase CommonSlideData crea una instancia de la clase ShapeTree , cuyo constructor a su vez crea instancias de clase adicionales: una instancia de la clase NonVisualGroupShapeProperties , una instancia de la clase GroupShapeProperties y una instancia de la clase Shape , entre otros.

El espacio de nombres representado por la letra P del código es el espacio de nombres 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 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;
}