Compartir a través de


Trabajar con diapositivas de presentaciones

En este tema se describe la clase Open XML SDK for Office Slide y cómo se relaciona con el esquema PresentationML de formato de archivo Open XML. Para obtener más información sobre la estructura general de las partes y elementos que componen un documento PresentationML, vea Estructura de un documento PresentationML.


Diapositivas de presentación en PresentationML

La especificación ISO/IEC 29500 describe el elemento <sld/> de PresentationML de Office Open XML que se usa para representar una diapositiva de presentación en un documento PresentationML de la siguiente forma:

Este elemento especifica una diapositiva en una lista de diapositivas. La lista de diapositivas se usa para especificar una ordenación de las diapositivas.

Ejemplo: considere la siguiente presentación personalizada con un orden de diapositivas.

<p:custShowLst>  
    <p:custShow name="Custom Show 1" id="0">  
        <p:sldLst>  
            <p:sld r:id="rId4"/>  
            <p:sld r:id="rId3"/>  
            <p:sld r:id="rId2"/>  
            <p:sld r:id="rId5"/>  
        </p:sldLst>  
    </p:custShow>  
</p:custShowLst>

En el ejemplo anterior, el orden especificado para presentar las diapositivas es la diapositiva 4, luego 3, 2 y, por último, 5.

© ISO/IEC 29500: 2016

El elemento <sld/> es el elemento raíz de la parte de diapositiva 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 <sld/> elemento que se usan al trabajar con diapositivas de presentación y las clases del SDK de Open XML que se corresponden con ellas.

Elemento de PresentationML Open XML SDK (clase)
<clrMapOvr /> ColorMapOverride
<cSld /> CommonSlideData
<extLst /> ExtensionListWithModification
<timing /> Timing
<transition /> Transition

Clase de diapositiva del SDK de Open XML

La clase SDK Slide de Open XML representa el <sld/> elemento definido en el esquema de formato de archivo Open XML para documentos PresentationML. Use el Slide objeto para manipular elementos individuales <sld/> en un documento PresentationML.

Las clases asociadas normalmente a la Slide clase se muestran en las secciones siguientes.

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.

© ISO/IEC 29500: 2016

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.

© ISO/IEC 29500: 2016

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 extLst elemento permite que la aplicación generadora almacene si se ha modificado esta propiedad de extensión. Fin de la nota]

© ISO/IEC 29500: 2016

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.

© ISO/IEC 29500: 2016

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.

© ISO/IEC 29500: 2016


Trabajar con la clase Slide

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

Por Slide lo tanto, la clase , que representa el <sld/> elemento , también está asociada a una serie de otras clases que representan los elementos secundarios del <sld/> 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 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 una nueva parte de diapositiva a una presentación existente y crea una instancia de la clase SDK Slide de Open XML en la nueva parte de diapositiva. El Slide constructor de clase crea instancias de las CommonSlideData clases y ColorMapOverride . 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, la GroupShapeProperties clase y la Shape clase .

Todas estas instancias de clase e instancias de las clases que representan los elementos secundarios del elemento <sld/> se requieren para crear el número mínimo de elementos XML necesarios para representar una nueva diapositiva.

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

static SlidePart CreateSlidePart(PresentationPart presentationPart)
{
    SlidePart slidePart1 = presentationPart.AddNewPart<SlidePart>("rId2");
    slidePart1.Slide = new Slide(
            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 1" },
                            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() { Language = "en-US" }))))),
            new ColorMapOverride(new MasterColorMapping()));
    return slidePart1;
}

Para agregar otra forma al árbol de formas y, por lo tanto, a la diapositiva, cree una instancia de un segundo Shape objeto pasando un parámetro adicional que contenga el código siguiente al ShapeTree constructor.

new P.Shape(
    new P.NonVisualShapeProperties(
        new P.NonVisualDrawingProperties() { Id = (UInt32Value)2U, Name = "Title 1" },
        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() { Language = "en-US" }))))),

PresentationML generado

Cuando se ejecuta el código del SDK de Open XML del método, se escribe el código 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:sld 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="Title 1" /> 
              <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 lang="en-US" /> 
          </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:sld>

Recursos adicionales

Acerca del SDK de Open XML para Office

Procedimiento para insertar una nueva diapositiva en una presentación

Procedimiento para eliminar una diapositiva de una presentación

Procedimiento para recuperar el número de diapositivas de un documento de presentación

Procedimiento para aplicar un tema a una presentación

Cómo: Crear un documento de presentación proporcionando un nombre de archivo