Clonar diapositivas de PowerPoint en Python
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. El clonado de diapositivas crea una nueva diapositiva que los desarrolladores pueden modificar sin afectar a la diapositiva original. Hay 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 en una posición específica en otra presentación.
En Aspose.Slides para Python mediante .NET, la colección de diapositivas expuesta por el objeto Presentación proporciona los métodos add_clone e insert_clone para realizar estos tipos de clonación de diapositivas.
Instalación
pip install aspose.slides
Clonar al final dentro de la misma presentación
Si deseas clonar una diapositiva dentro de la misma presentación y añadirla al final de las diapositivas existentes, usa el método add_clone. Sigue estos pasos:
- Crea una instancia de la clase Presentación.
- Obtén la colección de diapositivas del objeto Presentación.
- Llama al método
add_cloneen la SlideCollection, pasando la diapositiva a clonar. - Guarda la presentación modificada.
En el siguiente ejemplo, la primera diapositiva (índice 0) se clona y se añade al final de la presentación.
import aspose.slides as slides
# Instanciar la clase Presentation para representar el archivo de presentación.
with slides.Presentation("CloneWithinSamePresentationToEnd.pptx") as presentation:
# Clonar la diapositiva deseada al final de la colección de diapositivas en la misma presentación.
presentation.slides.add_clone(presentation.slides[0])
# Guardar la presentación modificada en disco.
presentation.save("Aspose_CloneWithinSamePresentationToEnd_out.pptx", slides.export.SaveFormat.PPTX)
Clonar a una posición específica dentro de la misma presentación
Si deseas clonar una diapositiva dentro de la misma presentación y ubicarla en una posición diferente, usa el método insert_clone:
- Crea una instancia de la clase Presentación.
- Obtén la colección de diapositivas del objeto Presentación.
- Llama al método
insert_cloneen la SlideCollection, pasando la diapositiva a clonar y el índice de destino para su nueva posición. - Guarda la presentación modificada.
En el siguiente ejemplo, la diapositiva en el índice 1 (posición 2) se clona al índice 2 (posición 3) dentro de la misma presentación.
import aspose.slides as slides
# Instanciar la clase Presentation para representar el archivo de presentación.
with slides.Presentation("CloneWithInSamePresentation.pptx") as presentation:
# Clonar la diapositiva deseada a la posición (índice) especificada dentro de la misma presentación.
presentation.slides.insert_clone(2, presentation.slides[1])
# Guardar la presentación modificada en disco.
presentation.save("Aspose_CloneWithInSamePresentation_out.pptx", slides.export.SaveFormat.PPTX)
Clonar al final de otra presentación
Si necesitas clonar una diapositiva de una presentación y añadirla al final de otra presentación:
- Crea una instancia de la clase Presentación para la presentación origen (la que contiene la diapositiva a clonar).
- Crea una instancia de la clase Presentación para la presentación destino (donde se añadirá la diapositiva).
- Obtén la colección de diapositivas de la presentación destino.
- Llama a
add_cloneen la SlideCollection de destino, pasando la diapositiva de la presentación origen. - Guarda la presentación destino modificada.
En el siguiente ejemplo, la diapositiva en el índice 0 de la presentación origen se clona al final de la presentación destino.
import aspose.slides as slides
# Instanciar la clase Presentation para representar el archivo de presentación de origen.
with slides.Presentation("CloneAtEndOfAnother.pptx") as source_presentation:
# Instanciar la clase Presentation para el PPTX de destino (donde se clonará la diapositiva).
with slides.Presentation() as target_presentation:
# Clonar la diapositiva deseada de la presentación de origen al final de la colección de diapositivas en la presentación de destino.
target_presentation.slides.add_clone(source_presentation.slides[0])
# Guardar la presentación de destino en disco.
target_presentation.save("Aspose2_out.pptx", slides.export.SaveFormat.PPTX)
Clonar a una posición específica en otra presentación
-
Cree una instancia de la clase Presentation para la presentación de origen (la que contiene la diapositiva a clonar).
-
Cree una instancia de la clase Presentation para la presentación de destino (donde se añadirá la diapositiva).
-
Obtenga la colección de diapositivas de la presentación de destino.
-
Llame al método
insert_cloneen la SlideCollection de destino, pasando la diapositiva de la presentación de origen y el índice de destino deseado. -
Guarde la presentación de destino modificada.
-
Crea una instancia de la clase Presentación para la presentación origen (la que contiene la diapositiva a clonar).
-
Crea una instancia de la clase Presentación para la presentación destino (donde se añadirá la diapositiva).
-
Obtén la colección de diapositivas de la presentación destino.
-
Llama al método
insert_cloneen la SlideCollection de destino, pasando la diapositiva de la presentación origen y el índice de destino deseado. -
Guarda la presentación destino modificada.
En el siguiente ejemplo, la diapositiva en el índice 0 de la presentación origen se clona al índice 2 (posición 3) en la presentación destino.
import aspose.slides as slides
# Instanciar la clase Presentation para representar el archivo de presentación de origen.
with slides.Presentation("CloneAtEndOfAnother.pptx") as source_presentation:
# Instanciar la clase Presentation para el PPTX de destino (donde se clonará la diapositiva).
with slides.Presentation("Aspose2_out.pptx") as target_presentation:
# Insertar una copia de la primera diapositiva del origen en el índice 2 de la presentación de destino.
target_presentation.slides.insert_clone(2, source_presentation.slides[0])
# Guardar la presentación de destino en disco.
target_presentation.save("Aspose3_out.pptx", slides.export.SaveFormat.PPTX)
Clonar una diapositiva con su diapositiva maestra en otra presentación
Para clonar una diapositiva con su maestra, siga estos pasos:
-
Cree una instancia de la clase Presentation para la presentación de origen (la que contiene la diapositiva a clonar).
-
Cree una instancia de la clase Presentation para la presentación de destino.
-
Acceda a la diapositiva de origen que se va a clonar y a su diapositiva maestra.
-
Obtenga la MasterSlideCollection de la colección de maestras de la presentación de destino.
-
Llame a
add_cloneen la MasterSlideCollection de destino, pasando la maestra de origen para clonarla en el destino. -
Obtenga la SlideCollection de la colección de diapositivas de la presentación de destino.
-
Llame a
add_cloneen la SlideCollection de destino, pasando la diapositiva de origen y la maestra de destino clonada. -
Guarde la presentación de destino modificada.
-
Crea una instancia de la clase Presentación para la presentación origen (la que contiene la diapositiva a clonar).
-
Crea una instancia de la clase Presentación para la presentación destino.
-
Accede a la diapositiva origen que se va a clonar y a su maestra.
-
Obtén la MasterSlideCollection de la colección de maestras de la presentación destino.
-
Llama a
add_cloneen la MasterSlideCollection de destino, pasando la maestra origen para clonarla en el destino. -
Obtén la SlideCollection de la colección de diapositivas de la presentación destino.
-
Llama a
add_cloneen la SlideCollection de destino, pasando la diapositiva origen y la maestra clonada del destino. -
Guarda la presentación destino modificada.
En el siguiente ejemplo, la diapositiva en el índice 0 de la presentación origen se clona al final de la presentación destino usando la maestra clonada del origen.
import aspose.slides as slides
# Instanciar la clase Presentation para representar el archivo de presentación de origen.
with slides.Presentation("CloneToAnotherPresentationWithMaster.pptx") as source_presentation:
# Instanciar la clase Presentation para la presentación de destino donde se clonará la diapositiva.
with slides.Presentation() as target_presentation:
# Obtener la primera diapositiva de la presentación de origen.
source_slide = source_presentation.slides[0]
# Obtener la diapositiva maestra utilizada por la primera diapositiva.
source_master = source_slide.layout_slide.master_slide
# Clonar la diapositiva maestra en la colección de maestras de la presentación de destino.
cloned_master = target_presentation.masters.add_clone(source_master)
# Clonar la diapositiva de la presentación de origen al final de la presentación de destino usando la maestra clonada.
target_presentation.slides.add_clone(source_slide, cloned_master, True)
# Guardar la presentación de destino en disco.
target_presentation.save("CloneToAnotherPresentationWithMaster_out.pptx", slides.export.SaveFormat.PPTX)
Clonar al final en una sección especificada
Con Aspose.Slides para Python mediante .NET, puedes clonar una diapositiva de una sección de una presentación e insertarla en otra sección dentro de la misma presentación. Para ello, usa el método add_clone(Slide, Section) de la clase [SlideCollection].
El siguiente ejemplo en Python muestra cómo clonar una diapositiva e insertar el clon en una sección especificada:
import aspose.slides as slides
# Crear una nueva presentación en blanco.
with slides.Presentation() as presentation:
# Añadir una diapositiva vacía basada en el diseño de la primera diapositiva.
slide = presentation.slides.add_empty_slide(presentation.slides[0].layout_slide)
# Añadir una forma de elipse a la nueva diapositiva; esta diapositiva se clonará más tarde.
slide.shapes.add_auto_shape(slides.ShapeType.ELLIPSE, 150, 150, 100, 100)
# Añadir otra diapositiva vacía basada en el diseño de la primera diapositiva.
slide2 = presentation.slides.add_empty_slide(presentation.slides[0].layout_slide)
# Crear una sección llamada "Section2" que comienza en slide2.
section = presentation.sections.add_section("Section2", slide2)
# Clonar la diapositiva creada previamente en la sección "Section2".
presentation.slides.add_clone(slide, section)
# Guardar la presentación como archivo PPTX.
presentation.save("presentation.pptx", slides.export.SaveFormat.PPTX)
Asegurar que el tamaño de la diapositiva coincida
Al clonar diapositivas en otra presentación, asegúrate de que la presentación de destino tenga el mismo tamaño de diapositiva que la de 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 hacer que el contenido aparezca desalineado o se extienda más allá de los límites de la diapositiva.
Puedes 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:
source_size = source_presentation.slide_size.size
target_presentation.slide_size.set_size(
source_size.width, source_size.height, slides.SlideSizeScaleType.DO_NOT_SCALE)
Haz esto antes de clonar la maestra y la diapositiva.
FAQ
¿Se clonan las notas del orador 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 deseas, elimínalos después de la inserción.
¿Cómo se gestionan los gráficos y sus fuentes de datos?
El objeto del 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, verifica 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í. Puedes 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éala primero y luego mueve la diapositiva a ella.