Share via


Trabajar con diapositivas de presentaciones

En este tema se describe la clase Slide del SDK de Open XML para Office 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> PresentationML <de Open XML que se usa para representar una diapositiva de presentación en un documento PresentationML de la siguiente manera:

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/IEC29500: 2008.

El <elemento sld> es el elemento raíz de la parte PresentationML Slide. 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 sld> 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
<Tiempo> Timing
<Transición> Transition

Clase de diapositiva del SDK de Open XML

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

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

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.

© ISO/IEC29500: 2008.

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.

© ISO/IEC29500: 2008.

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 que la aplicación que lo genera almacene si se ha modificado la propiedad Extension. Fin de la nota]

© ISO/IEC29500: 2008.

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.

© ISO/IEC29500: 2008.

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.

© ISO/IEC29500: 2008.


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

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

Todas estas instancias de clase y las instancias de las clases que representan los elementos secundarios del <elemento sld> son necesarias 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 DocumentFormat.OpenXml.Presentation .

    private 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 objeto Shape pasando un parámetro adicional que contiene el siguiente código al constructor ShapeTree.

    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="https://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="https://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="https://schemas.openxmlformats.org/drawingml/2006/main" /> 
              </p:cNvSpPr>
                <p:nvPr>
                  <p:ph /> 
                </p:nvPr>
                </p:nvSpPr>
                <p:spPr /> 
                <p:txBody>
                 <a:bodyPr xmlns:a="https://schemas.openxmlformats.org/drawingml/2006/main" /> 
             <a:lstStyle xmlns:a="https://schemas.openxmlformats.org/drawingml/2006/main" /> 
                 <a:p xmlns:a="https://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="https://schemas.openxmlformats.org/drawingml/2006/main" /> 
        </p:clrMapOvr>
    </p:sld>

Vea también

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