Clonar diapositivas de presentación en .NET
Introducción
Clonar es el proceso de crear una copia exacta o réplica de algo. Aspose.Slides también permite copiar (clonar) cualquier diapositiva y luego insertar la diapositiva clonada en la presentación actual o en cualquier otra presentación abierta. La clonación de diapositivas crea una nueva diapositiva que los desarrolladores pueden modificar sin afectar a la diapositiva original. Existen varias formas de clonar una diapositiva:
- Clonar al final de una presentación.
- Clonar en otra posición dentro de una presentación.
- Clonar al final de otra presentación.
- Clonar en otra posición en otra presentación.
- Clonar junto con su diapositiva maestra en otra presentación.
En Aspose.Slides para .NET, la colección de diapositivas (una colección de ISlide objetos) expuesta por el objeto Presentation proporciona los métodos AddClone y InsertClone para realizar las operaciones de clonación de diapositivas descritas anteriormente.
Clonar una diapositiva al final de una presentación
Si desea clonar una diapositiva y luego usarla dentro del mismo archivo de presentación al final de las diapositivas existentes, utilice el método AddClone según los pasos enumerados a continuación:
- Cree una instancia de la clase Presentation.
- Instancie la clase ISlideCollection haciendo referencia a la colección Slides expuesta por el objeto Presentation.
- Llame al método AddClone expuesto por el objeto ISlideCollection y pase la diapositiva que se va a clonar como parámetro al método AddClone.
- Guarde el archivo de presentación modificado.
En el ejemplo que se muestra a continuación, hemos clonado una diapositiva (situada en la primera posición – índice cero – de la presentación) al final de la presentación.
using Aspose.Slides;
using Aspose.Slides.Export;
// Instanciar la clase Presentation que representa un archivo de presentación
using (Presentation pres = new Presentation("CloneWithinSamePresentationToEnd.pptx"))
{
// Clonar la diapositiva deseada al final de la colección de diapositivas en la misma presentación
ISlideCollection slds = pres.Slides;
slds.AddClone(pres.Slides[0]);
// Guardar la presentación modificada en el disco
pres.Save("Aspose_CloneWithinSamePresentationToEnd_out.pptx", SaveFormat.Pptx);
}
Clonar una diapositiva a otra posición dentro de una presentación
Si desea clonar una diapositiva y luego usarla dentro del mismo archivo de presentación pero en una posición diferente, utilice el método InsertClone:
- Cree una instancia de la clase Presentation.
- Instancie la clase haciendo referencia a la colección Slides expuesta por el objeto Presentation.
- Llame al método InsertClone expuesto por el objeto ISlideCollection y pase la diapositiva que se va a clonar junto con el índice para la nueva posición como parámetro al método InsertClone.
- Guarde la presentación modificada como un archivo PPTX.
En el ejemplo que se muestra a continuación, hemos clonado una diapositiva (situada en el índice 1 – posición 2 – de la presentación) al índice 2 – posición 3 – de la presentación.
using Aspose.Slides;
using Aspose.Slides.Export;
// Instanciar la clase Presentation que representa un archivo de presentación
using (Presentation pres = new Presentation("CloneWithInSamePresentation.pptx"))
{
// Clonar la diapositiva deseada al final de la colección de diapositivas en la misma presentación
ISlideCollection slds = pres.Slides;
// Clonar la diapositiva deseada al índice especificado en la misma presentación
slds.InsertClone(2, pres.Slides[1]);
// Guardar la presentación modificada en el disco
pres.Save("Aspose_CloneWithInSamePresentation_out.pptx", SaveFormat.Pptx);
}
Clonar una diapositiva al final de otra presentación
Si necesita clonar una diapositiva de una presentación y usarla en otra presentación, al final de las diapositivas existentes:
- Cree una instancia de la clase Presentation que contenga la presentación de la que se clonará la diapositiva.
- Cree una instancia de la clase Presentation que contenga la presentación de destino a la que se añadirá la diapositiva.
- Instancie la clase ISlideCollection haciendo referencia a la colección Slides expuesta por el objeto Presentation de la presentación de destino.
- Llame al método AddClone expuesto por el objeto ISlideCollection y pase la diapositiva de la presentación origen como parámetro al método AddClone.
- Guarde el archivo de presentación de destino modificado.
En el ejemplo que se muestra a continuación, hemos clonado una diapositiva (del primer índice de la presentación origen) al final de la presentación de destino.
using Aspose.Slides;
using Aspose.Slides.Export;
// Instanciar la clase Presentation para cargar el archivo de presentación origen
using (Presentation srcPres = new Presentation("CloneAtEndOfAnother.pptx"))
{
// Instanciar la clase Presentation para el PPTX de destino (donde se clonará la diapositiva)
using (Presentation destPres = new Presentation())
{
// Clonar la diapositiva deseada de la presentación origen al final de la colección de diapositivas en la presentación de destino
ISlideCollection slds = destPres.Slides;
slds.AddClone(srcPres.Slides[0]);
// Guardar la presentación de destino en el disco
destPres.Save("Aspose2_out.pptx", SaveFormat.Pptx);
}
}
Clonar una diapositiva a otra posición en otra presentación
Si necesita clonar una diapositiva de una presentación y usarla en otra presentación, en una posición específica:
- Cree una instancia de la clase Presentation que contenga la presentación origen de la que se clonará la diapositiva.
- Cree una instancia de la clase Presentation que contenga la presentación a la que se añadirá la diapositiva.
- Instancie la clase ISlideCollection haciendo referencia a la colección Slides del objeto Presentation de la presentación de destino.
- Llame al método InsertClone expuesto por el objeto ISlideCollection y pase la diapositiva de la presentación origen junto con la posición deseada como parámetro al método InsertClone.
- Guarde el archivo de presentación de destino modificado.
En el ejemplo que se muestra a continuación, hemos clonado una diapositiva (del índice cero de la presentación origen) al índice 1 (posición 2) de la presentación de destino.
using Aspose.Slides;
using Aspose.Slides.Export;
// Instanciar la clase Presentation para cargar el archivo de presentación origen
using (Presentation srcPres = new Presentation("CloneAtEndOfAnother.pptx"))
{
// Instanciar la clase Presentation para el PPTX de destino (donde se clonará la diapositiva)
using (Presentation destPres = new Presentation())
{
ISlideCollection slds = destPres.Slides;
slds.InsertClone(2, srcPres.Slides[0]);
// Guardar la presentación de destino en el disco
destPres.Save("Aspose2_out.pptx", SaveFormat.Pptx);
}
}
Clonar una diapositiva con su diapositiva maestra a otra presentación
Si necesita clonar una diapositiva con su diapositiva maestra de una presentación y usarla en otra presentación, primero debe clonar la diapositiva maestra deseada de la presentación origen a la presentación destino. Después debe usar esa diapositiva maestra para clonar la diapositiva con maestra. El método AddClone(ISlide, IMasterSlide) espera una diapositiva maestra de la presentación de destino, no de la presentación origen. Para clonar la diapositiva con maestra, siga los pasos a continuación:
- Cree una instancia de la clase Presentation que contenga la presentación origen de la que se clonará la diapositiva.
- Cree una instancia de la clase Presentation que contenga la presentación destino a la que se clonará la diapositiva.
- Acceda a la diapositiva que se va a clonar junto con su maestra.
- Instancie la clase IMasterSlideCollection haciendo referencia a la colección Masters expuesta por el objeto Presentation de la presentación destino.
- Llame al método AddClone expuesto por el objeto IMasterSlideCollection y pase la maestra del PPTX origen que se va a clonar como parámetro al método AddClone.
- Instancie la clase ISlideCollection estableciendo la referencia a la colección Slides del objeto Presentation de la presentación destino.
- Llame al método AddClone expuesto por el objeto ISlideCollection y pase la diapositiva de la presentación origen que se va a clonar y la diapositiva maestra como parámetro al método AddClone.
- Guarde el archivo de presentación de destino modificado.
En el ejemplo que se muestra a continuación, hemos clonado una diapositiva con su maestra (situada en el índice cero de la presentación origen) al final de la presentación de destino usando una maestra de la diapositiva origen.
using Aspose.Slides;
using Aspose.Slides.Export;
// Instanciar la clase Presentation para cargar el archivo de presentación origen
using (Presentation srcPres = new Presentation("CloneToAnotherPresentationWithMaster.pptx"))
{
// Instanciar la clase Presentation para la presentación de destino (donde se clonará la diapositiva)
using (Presentation destPres = new Presentation())
{
// Instanciar ISlide a partir de la colección de diapositivas en la presentación origen junto con
// diapositiva maestra
ISlide SourceSlide = srcPres.Slides[0];
IMasterSlide SourceMaster = SourceSlide.LayoutSlide.MasterSlide;
// Clonar la diapositiva maestra deseada de la presentación origen a la colección de maestras en la
// presentación de destino
IMasterSlideCollection masters = destPres.Masters;
IMasterSlide DestMaster = SourceSlide.LayoutSlide.MasterSlide;
// Clonar la diapositiva maestra deseada de la presentación origen a la colección de maestras en la
// presentación de destino
IMasterSlide iSlide = masters.AddClone(SourceMaster);
// Clonar la diapositiva deseada de la presentación origen con la maestra deseada al final de la
// colección de diapositivas en la presentación de destino
ISlideCollection slds = destPres.Slides;
slds.AddClone(SourceSlide, iSlide, true);
// Clonar la diapositiva maestra deseada de la presentación origen a la colección de maestras en la // presentación de destino
// Guardar la presentación de destino en el disco
destPres.Save("CloneToAnotherPresentationWithMaster_out.pptx", SaveFormat.Pptx);
}
}
Clonar una diapositiva al final de una sección especificada
Con Aspose.Slides para .NET, puede clonar una diapositiva de una sección de una presentación e insertarla en otra sección de la misma presentación. En este caso, debe usar el método AddClone de la interfaz ISlideCollection.
Este código C# le muestra cómo clonar una diapositiva e insertar la diapositiva clonada en una sección especificada:
using Aspose.Slides;
using Aspose.Slides.Export;
using (Presentation pres = new Presentation())
{
ISlide slide = pres.Slides.AddEmptySlide(pres.Slides[0].LayoutSlide);
slide.Shapes.AddAutoShape(ShapeType.Ellipse, 150, 150, 100, 100); // para clonar
ISlide slide2 = pres.Slides.AddEmptySlide(pres.Slides[0].LayoutSlide);
ISection section = pres.Sections.AddSection("Section2", slide2);
pres.Slides.AddClone(slide, section);
pres.Save("pres.pptx", SaveFormat.Pptx);
}
Asegurar que el tamaño de la diapositiva coincida
Al clonar diapositivas en otra presentación, asegúrese de que la presentación de destino tenga el mismo tamaño de diapositiva que la de origen. Si los tamaños difieren, Aspose.Slides no redimensiona automáticamente las formas clonadas; sus coordenadas y dimensiones originales se conservan, lo que puede provocar que el contenido aparezca desalineado o se extienda más allá de los límites de la diapositiva.
Puede establecer el tamaño de diapositiva de la presentación de destino para que coincida con el de origen antes de clonar la maestra y la diapositiva:
SizeF sourceSize = sourcePresentation.SlideSize.Size;
targetPresentation.SlideSize.SetSize(
sourceSize.Width, sourceSize.Height, SlideSizeScaleType.DoNotScale);
Haga esto antes de clonar la maestra y la diapositiva.
Preguntas frecuentes
¿Se clonan las notas del orador y los comentarios de revisión?
Sí. La página de notas y los comentarios de revisión se incluyen en el clon. Si no los desea, elimínelos después de la inserción.
¿Cómo se gestionan los gráficos y sus fuentes de datos?
El objeto gráfico, su formato y los datos incrustados se copian. Si el gráfico estaba vinculado a una fuente externa (por ejemplo, a un libro de trabajo OLE incrustado), ese vínculo se conserva como un objeto OLE. Después de moverlos entre archivos, verifique la disponibilidad de los datos y el comportamiento de actualización.
¿Puedo controlar la posición de inserción y las secciones del clon?
Sí. Puede insertar el clon en un índice de diapositiva específico y ubicarlo en una sección elegida. Si la sección de destino no existe, créela primero y luego mueva la diapositiva a ella.