Compartir a través de


Trabajar con diseños de diapositiva

En este tema se describe la clase Open XML SDK for Office SlideLayout 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 de PresentationML de Office Open XML <sldLayout/> que se usa para representar diseños de diapositiva 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 de diseño de diapositiva 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 <sldLayout/> elemento 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
<timing/> Timing
<transition/> Transition

La siguiente tabla de la especificación ISO/IEC 29500 describe 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.

Los valores posibles para este atributo se definen mediante el tipo de datos de esquema string XML W3C.
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 generadora debe asumir un valor de false . Esto significa que la diapositiva se eliminará si la presentación no contiene diapositivas relacionadas con ella.

Los valores posibles para este atributo se definen mediante el tipo de datos de esquema boolean XML W3C.
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.

Los valores posibles para este atributo se definen mediante el tipo de datos de esquema boolean XML W3C.
showMasterSp (Mostrar formas patrón) Especifica si se deben mostrar o no formas en la diapositiva patrón.

Los valores posibles para este atributo se definen mediante el tipo de datos de esquema boolean XML W3C.
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.

Los valores posibles para este atributo se definen mediante el tipo de datos de esquema boolean XML W3C.

Clase SlideLayout del SDK de Open XML

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

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

ISO/IEC 29500

especificación 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 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.

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

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

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 (Cómo: Crear un documento de presentación proporcionando un nombre de archivo ) agrega una nueva parte de diseño de diapositiva a una presentación existente y crea una instancia de una clase sdk SlideLayout de Open XML en la nueva parte de diseño de diapositivas. El SlideLayout constructor de clase crea instancias de la CommonSlideData clase y la ColorMapOverride clase . 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 .

El espacio de nombres representado por la letra P del código es el espacio de DocumentFormat.OpenXml.Presentation nombres.

static SlideLayoutPart CreateSlideLayoutPart(SlidePart slidePart1)
{
    SlideLayoutPart slideLayoutPart1 = slidePart1.AddNewPart<SlideLayoutPart>();
    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;
}

PresentationML generado

Cuando se ejecuta el código del SDK de Open XML, se escribe el XML siguiente en el archivo de documento PresentationML al que se hace referencia en el código.

    <?xml version="1.0" encoding="utf-8"?>
    <p:sldLayout xmlns:p="http://schemas.openxmlformats.org/presentationml/2006/main">
      <p:cSld>
        <p:spTree>
          <p:nvGrpSpPr>
            <p:cNvPr id="1"
                     name="" />
            <p:cNvGrpSpPr />
            <p:nvPr />
          </p:nvGrpSpPr>
          <p:grpSpPr>
            <a:xfrm xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" />
          </p:grpSpPr>
          <p:sp>
            <p:nvSpPr>
              <p:cNvPr id="2"
                       name="" />
              <p:cNvSpPr>
                <a:spLocks noGrp="1"
                           xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" />
              </p:cNvSpPr>
              <p:nvPr>
                <p:ph />
              </p:nvPr>
            </p:nvSpPr>
            <p:spPr />
            <p:txBody>
              <a:bodyPr xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" />
              <a:lstStyle xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" />
              <a:p xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main">
                <a:endParaRPr />
              </a:p>
            </p:txBody>
          </p:sp>
        </p:spTree>
      </p:cSld>
      <p:clrMapOvr>
        <a:masterClrMapping xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main" />
      </p:clrMapOvr>
    </p:sldLayout>

Vea también

Acerca del SDK de Open XML para Office

Procedimiento para crear un documento de presentación proporcionando un nombre de archivo

Procedimiento para aplicar un tema a una presentación