Clonar diapositivas de presentación en PHP
Introducción
Clonar es el proceso de crear una copia exacta o réplica de algo. Aspose.Slides for PHP via Java también permite crear una copia o clon de cualquier diapositiva y luego insertar esa diapositiva clonada en la presentación actual o en cualquier otra abierta. El proceso de clonación de diapositivas crea una nueva diapositiva que puede ser modificada por los desarrolladores sin cambiar la diapositiva original. Existen varias formas posibles de clonar una diapositiva:
- Clonar al final dentro de una presentación.
- Clonar en otra posición dentro de la presentación.
- Clonar al final en otra presentación.
- Clonar en otra posición en otra presentación.
- Clonar en una posición específica en otra presentación.
En Aspose.Slides for PHP via Java, (una colección de Slide objetos) expuesta por el objeto Presentation proporciona los métodos addClone y insertClone para realizar los tipos de clonación de diapositivas descritos 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, use el método addClone según los pasos que se enumeran a continuación:
- Cree una instancia de la clase Presentation.
- Obtenga el objeto SlideCollection haciendo referencia a la colección de diapositivas expuesta por el objeto Presentation.
- Llame al método addClone expuesto por el objeto SlideCollection y pase la diapositiva a clonar como parámetro del 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.
# Instanciar la clase Presentation que representa un archivo de presentación
$pres = new Presentation("CloneWithinSamePresentationToEnd.pptx");
try {
# Clonar la diapositiva deseada al final de la colección de diapositivas en la misma presentación
$slds = $pres->getSlides();
$slds->addClone($pres->getSlides()->get_Item(0));
# Guardar la presentación modificada en disco
$pres->save("Aspose_CloneWithinSamePresentationToEnd_out.pptx", SaveFormat::Pptx);
} finally {
$pres->dispose();
}
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, use el método insertClone:
- Cree una instancia de la clase Presentation.
- Obtenga el objeto SlideCollection haciendo referencia a la colección Slides expuesta por el objeto Presentation.
- Llame al método insertClone expuesto por el objeto SlideCollection y pase la diapositiva a clonar junto con el índice de la nueva posición como parámetro del 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 cero – posición 1 – de la presentación) al índice 1 – Posición 2 – de la presentación.
# Instanciar la clase Presentation que representa un archivo de presentación
$pres = new Presentation("CloneWithInSamePresentation.pptx");
try {
# Clonar la diapositiva deseada al final de la colección de diapositivas en la misma presentación
$slds = $pres->getSlides();
# Clonar la diapositiva deseada al índice especificado en la misma presentación
$slds->insertClone(2, $pres->getSlides()->get_Item(1));
# Guardar la presentación modificada en disco
$pres->save("Aspose_CloneWithInSamePresentation_out.pptx", SaveFormat::Pptx);
} finally {
$pres->dispose();
}
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 cual 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.
- Obtenga el objeto SlideCollection 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 SlideCollection y pase la diapositiva de la presentación origen como parámetro del método addClone.
- Guarde el archivo de la presentación de destino modificada.
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.
# Instanciar la clase Presentation para cargar el archivo de presentación origen
$srcPres = new Presentation("CloneAtEndOfAnother.pptx");
try {
# Instanciar la clase Presentation para el PPTX de destino (donde se clonará la diapositiva)
$destPres = new Presentation();
try {
# Clonar la diapositiva deseada de la presentación origen al final de la colección de diapositivas en la presentación de destino
$slds = $destPres->getSlides();
$slds->addClone($srcPres->getSlides()->get_Item(0));
# Guardar la presentación de destino en disco
$destPres->save("Aspose2_out.pptx", SaveFormat::Pptx);
} finally {
$destPres->dispose();
}
} finally {
$srcPres->dispose();
}
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 cual se clonará la diapositiva.
- Cree una instancia de la clase Presentation que contenga la presentación a la que se añadirá la diapositiva.
- Obtenga la clase SlideCollection haciendo referencia a la colección Slides expuesta por el objeto Presentation de la presentación de destino.
- Llame al método insertClone expuesto por el objeto SlideCollection y pase la diapositiva de la presentación origen junto con la posición deseada como parámetro del método insertClone.
- Guarde el archivo de la presentación de destino modificada.
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.
# Instanciar la clase Presentation para cargar el archivo de presentación origen
$srcPres = new Presentation("CloneAtEndOfAnother.pptx");
try {
# Instanciar la clase Presentation para el PPTX de destino (donde se clonará la diapositiva)
$destPres = new Presentation();
try {
# Clonar la diapositiva deseada de la presentación origen al final de la colección de diapositivas en la presentación de destino
$slds = $destPres->getSlides();
$slds->insertClone(2, $srcPres->getSlides()->get_Item(0));
# Guardar la presentación de destino en disco
$destPres->save("Aspose2_out.pptx", SaveFormat::Pptx);
} finally {
$destPres->dispose();
}
} finally {
$srcPres->dispose();
}
Clonar una diapositiva en una posición específica en otra presentación
Si necesita clonar una diapositiva con una 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. Luego debe usar esa diapositiva maestra para clonar la diapositiva con maestra. El método addClone(Slide, MasterSlide, boolean) espera una diapositiva maestra de la presentación destino en lugar de la presentación origen. Para clonar la diapositiva con una maestra, siga los pasos a continuación:
- Cree una instancia de la clase Presentation que contenga la presentación origen de la cual 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 a clonar junto con la diapositiva maestra.
- Instancie la clase MasterSlideCollection 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 MasterSlideCollection y pase la maestra del PPTX origen que se debe clonar como parámetro del método addClone.
- Instancie la clase SlideCollection estableciendo la referencia a la colección Slides expuesta por el objeto Presentation de la presentación destino.
- Llame al método addClone expuesto por el objeto SlideCollection y pase la diapositiva de la presentación origen que se debe clonar y la diapositiva maestra como parámetro del método addClone.
- Guarde el archivo de la presentación destino modificada.
En el ejemplo que se muestra a continuación, hemos clonado una diapositiva con maestra (situada en el índice cero de la presentación origen) al final de la presentación destino usando una maestra de la diapositiva origen.
# Instanciar la clase Presentation para cargar el archivo de presentación origen
$srcPres = new Presentation("CloneToAnotherPresentationWithMaster.pptx");
try {
# Instanciar la clase Presentation para la presentación de destino (donde se clonará la diapositiva)
$destPres = new Presentation();
try {
# Instanciar ISlide de la colección de diapositivas en la presentación origen junto con
# diapositiva maestra
$SourceSlide = $srcPres->getSlides()->get_Item(0);
$SourceMaster = $SourceSlide->getLayoutSlide()->getMasterSlide();
# Clonar la diapositiva maestra deseada de la presentación origen a la colección de maestras en la
# presentación de destino
$masters = $destPres->getMasters();
$DestMaster = $SourceSlide->getLayoutSlide()->getMasterSlide();
# Clonar la diapositiva maestra deseada de la presentación origen a la colección de maestras en la
# presentación de destino
$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
$slds = $destPres->getSlides();
$slds->addClone($SourceSlide, $iSlide, true);
# Guardar la presentación de destino en disco
$destPres->save("CloneToAnotherPresentationWithMaster_out.pptx", SaveFormat::Pptx);
} finally {
$destPres->dispose();
}
} finally {
$srcPres->dispose();
}
Clonar una diapositiva al final de una sección especificada
Si desea clonar una diapositiva y luego usarla dentro del mismo archivo de presentación pero en una sección diferente, use el método addClone expuesto por la clase SlideCollection. Aspose.Slides for PHP via Java permite clonar una diapositiva de la primera sección y luego insertar esa diapositiva clonada en la segunda sección de la misma presentación.
El siguiente fragmento de código muestra cómo clonar una diapositiva e insertar la diapositiva clonada en una sección especificada.
$presentation = new Presentation();
try {
$presentation->getSlides()->get_Item(0)->getShapes()->addAutoShape(ShapeType::Rectangle, 200, 50, 300, 100);
$presentation->getSections()->addSection("Section 1", $presentation->getSlides()->get_Item(0));
$section2 = $presentation->getSections()->appendEmptySection("Section 2");
$presentation->getSlides()->addClone($presentation->getSlides()->get_Item(0), $section2);
# Guardar la presentación de destino en disco
$presentation->save("CloneSlideIntoSpecifiedSection.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($presentation)) {
$presentation->dispose();
}
}
Asegurar que el tamaño de la diapositiva coincida
Al clonar diapositivas a otra presentación, asegúrese de que la presentación destino tenga el mismo tamaño de diapositiva que la origen. Si los tamaños de diapositiva difieren, Aspose.Slides no redimensiona automáticamente las formas clonadas; sus coordenadas y dimensiones originales se conservan, lo que puede causar 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 destino para que coincida con el origen antes de clonar la maestra y la diapositiva:
$sourceSize = $sourcePresentation->getSlideSize()->getSize();
$targetPresentation->getSlideSize()->setSize(
$sourceSize->getWidth(), $sourceSize->getHeight(), SlideSizeScaleType::DoNotScale);
Haga esto antes de clonar la maestra y la diapositiva.
Preguntas frecuentes
¿Se clonan las notas del presentador y los comentarios del revisor?
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 de gráfico, su formato y los datos incrustados se copian. Si el gráfico estaba vinculado a una fuente externa (p.ej., un libro de trabajo incrustado como OLE), ese vínculo se conserva como un objeto OLE. Después de moverlo 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 para el clon?
Sí. Puede insertar el clon en un índice de diapositiva específico y colocarlo en una sección elegida. Si la sección de destino no existe, créela primero y luego mueva la diapositiva a ella.