Share via


Trabajar con diseños de diapositiva

En este tema se describe la clase SlideLayout del SDK de Open XML para Office y cómo se relaciona con el esquema PresentationML de formato de archivo Open XML.

Diseños de diapositiva en PresentationML

La especificación ISO/IEC 29500 describe el elemento sldLayout> de PresentationML <de Open XML que se usa para representar diseños de diapositivas en un documento PresentationML de la siguiente manera:

Este elemento especifica una instancia de un diseño de diapositiva. En esencia, el diseño de diapositiva contiene una plantilla de diseño de diapositivas que puede aplicarse a cualquier diapositiva existente. Cuando se aplica a una diapositiva existente, todo el contenido correspondiente se debe asignar al nuevo diseño de diapositiva.

El <elemento sldLayout> es el elemento raíz de la parte PresentationML Slide Layout. 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 sldLayout> que se usan al trabajar con diseños de diapositivas y las clases del SDK de Open XML que se corresponden con ellos.

Elemento de PresentationML Open XML SDK (clase)
<clrMapOvr> ColorMapOverride
<cSld> CommonSlideData
<extLst> ExtensionListWithModification
<Hf> HeaderFooter
<Tiempo> Timing
<Transición> Transition

En la tabla siguiente de la especificación ISO/IEC 29500 se describen los atributos del <elemento sldLayout> .

Atributos Descripción
matchingName (Nombre coincidente) Especifica un nombre que se usará en lugar del atributo name del elemento cSld. Se usa para la coincidencia del diseño en respuesta a los cambios en el diseño y a las aplicaciones de plantillas.
El tipo de datos string del esquema XML W3C define los valores posibles para este atributo.
preserve (Conservar diseño de diapositiva) 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.
showMasterPhAnim (Mostrar animaciones en marcadores de posición del patrón) Especifica si se deben mostrar o no animaciones en los marcadores de posición de la diapositiva patrón.
El tipo de datos boolean del esquema XML W3C define los valores posibles para este atributo.
showMasterSp (Mostrar formas patrón) Especifica si se deben mostrar o no formas en la diapositiva patrón.
El tipo de datos boolean del esquema XML W3C define los valores posibles para este atributo.
type (Tipo de diseño de diapositiva) Especifica el tipo de diseño de diapositiva que usa esta diapositiva.
El tipo simple ST_SlideLayoutType define los valores posibles para este atributo (§19.7.15).
userDrawn (Dibujado por el usuario) Especifica si el usuario ha dibujado el objeto correspondiente y, por lo tanto, no se debe eliminar. Esto permite la posibilidad de marcar las diapositivas que contienen datos dibujados por el usuario.
El tipo de datos boolean del esquema XML W3C define los valores posibles para este atributo.

Clase SlideLayout del SDK de Open XML

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

Las clases que representan elementos secundarios del <elemento sldLayout> y que, por lo tanto, se asocian normalmente a la clase SlideLayout 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 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.

Trabajar con la clase SlideLayout

Como se muestra en el ejemplo de código del SDK de Open XML que sigue, cada instancia de la clase SlideLayout está asociada a una instancia de la clase SlideLayoutPart , que representa una parte de diseño de diapositivas, una de las partes necesarias de un paquete de archivos de presentación PresentationML. Cada instancia de clase SlideLayout también debe asociarse a instancias de las clases SlideMaster y Slide , que a su vez están asociadas a elementos de presentación necesarios con un nombre similar, representados por las clases SlideMasterPart y SlidePart.

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

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 de diseño de diapositiva a una presentación existente y crea una instancia de una claseSlideLayout del SDK de Open XML en la nueva parte de diseño de diapositivas. El constructor de la clase SlideLayout crea instancias de las clases CommonSlideData y ColorMapOverride. 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 (https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.nonvisualgroupshapeproperties.aspx) , una instancia de la clase GroupShapeProperties y una instancia de la clase Shape .

El espacio de nombres representado por la letra P del código es el espacio de nombres [DocumentFormat.OpenXml.Presentation (https://msdn.microsoft.com/library/office/documentformat.openxml.presentation.aspx) .

using DocumentFormat.OpenXml;
using DocumentFormat.OpenXml.Drawing;
using DocumentFormat.OpenXml.Packaging;
using DocumentFormat.OpenXml.Presentation;
using P = DocumentFormat.OpenXml.Presentation;

static SlideLayoutPart CreateSlideLayoutPart(SlidePart slidePart1)
{
    SlideLayoutPart slideLayoutPart1 = slidePart1.AddNewPart<SlideLayoutPart>("rId1");
    SlideLayout slideLayout = new SlideLayout(
    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 = "" },
        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()))))),
    new ColorMapOverride(new MasterColorMapping()));
    slideLayoutPart1.SlideLayout = slideLayout;
    return slideLayoutPart1;
}