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
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