Clona le diapositive della presentazione in PHP
Introduzione
Il clonaggio è il processo di creare una copia esatta o replica di qualcosa. Aspose.Slides per PHP via Java consente anche di creare una copia o un clone di qualsiasi diapositiva e quindi inserire quella diapositiva clonata nella presentazione corrente o in qualsiasi altra presentazione aperta. Il processo di clonazione diapositive crea una nuova diapositiva che può essere modificata dagli sviluppatori senza modificare la diapositiva originale. Esistono diversi modi per clonare una diapositiva:
- Clona alla fine all’interno di una presentazione.
- Clona in un’altra posizione all’interno della presentazione.
- Clona alla fine in un’altra presentazione.
- Clona in un’altra posizione in un’altra presentazione.
- Clona in una posizione specifica in un’altra presentazione.
In Aspose.Slides per PHP via Java, (una raccolta di Slide objects) esposta dall’oggetto Presentation fornisce i metodi addClone e insertClone per eseguire i tipi di clonazione descritti sopra.
Clona una diapositiva alla fine di una presentazione
Se desideri clonare una diapositiva e poi usarla nello stesso file di presentazione alla fine delle diapositive esistenti, utilizza il metodo addClone secondo i passaggi elencati di seguito:
- Crea un’istanza della classe Presentation.
- Ottieni l’oggetto SlideCollection facendo riferimento alla raccolta di diapositive esposta dall’oggetto Presentation.
- Chiama il metodo addClone esposto dall’oggetto SlideCollection e passa come parametro la diapositiva da clonare.
- Scrivi il file della presentazione modificata.
Nell’esempio mostrato di seguito, abbiamo clonato una diapositiva (situata nella prima posizione – indice zero – della presentazione) alla fine della presentazione.
# Istanziare la classe Presentation che rappresenta un file di presentazione
$pres = new Presentation("CloneWithinSamePresentationToEnd.pptx");
try {
# Clonare la diapositiva desiderata alla fine della raccolta di diapositive nella stessa presentazione
$slds = $pres->getSlides();
$slds->addClone($pres->getSlides()->get_Item(0));
# Scrivere la presentazione modificata su disco
$pres->save("Aspose_CloneWithinSamePresentationToEnd_out.pptx", SaveFormat::Pptx);
} finally {
$pres->dispose();
}
Clona una diapositiva in un’altra posizione all’interno di una presentazione
Se desideri clonare una diapositiva e poi usarla nello stesso file di presentazione ma in una posizione diversa, utilizza il metodo insertClone:
- Crea un’istanza della classe Presentation.
- Ottieni l’oggetto SlideCollection facendo riferimento alla raccolta Slides esposta dall’oggetto Presentation.
- Chiama il metodo insertClone esposto dall’oggetto SlideCollection e passa la diapositiva da clonare insieme all’indice per la nuova posizione come parametri al metodo insertClone.
- Scrivi la presentazione modificata come file PPTX.
Nell’esempio mostrato di seguito, abbiamo clonato una diapositiva (situata all’indice zero – posizione 1 – della presentazione) all’indice 1 – Posizione 2 – della presentazione.
# Istanziare la classe Presentation che rappresenta un file di presentazione
$pres = new Presentation("CloneWithInSamePresentation.pptx");
try {
# Clonare la diapositiva desiderata alla fine della raccolta di diapositive nella stessa presentazione
$slds = $pres->getSlides();
# Clonare la diapositiva desiderata all'indice specificato nella stessa presentazione
$slds->insertClone(2, $pres->getSlides()->get_Item(1));
# Scrivere la presentazione modificata su disco
$pres->save("Aspose_CloneWithInSamePresentation_out.pptx", SaveFormat::Pptx);
} finally {
$pres->dispose();
}
Clona una diapositiva alla fine di un’altra presentazione
Se devi clonare una diapositiva da una presentazione e usarla in un’altra presentazione, alla fine delle diapositive esistenti:
- Crea un’istanza della classe Presentation contenente la presentazione da cui la diapositiva sarà clonata.
- Crea un’istanza della classe Presentation contenente la presentazione di destinazione a cui la diapositiva sarà aggiunta.
- Ottieni l’oggetto SlideCollection facendo riferimento alla raccolta Slides esposta dall’oggetto Presentation della presentazione di destinazione.
- Chiama il metodo addClone esposto dall’oggetto SlideCollection e passa la diapositiva dalla presentazione di origine come parametro al metodo addClone.
- Scrivi il file della presentazione di destinazione modificata.
Nell’esempio mostrato di seguito, abbiamo clonato una diapositiva (dal primo indice della presentazione di origine) alla fine della presentazione di destinazione.
# Istanziare la classe Presentation per caricare il file della presentazione sorgente
$srcPres = new Presentation("CloneAtEndOfAnother.pptx");
try {
# Istanziare la classe Presentation per il PPTX di destinazione (dove la diapositiva sarà clonata)
$destPres = new Presentation();
try {
# Clonare la diapositiva desiderata dalla presentazione sorgente alla fine della raccolta di diapositive nella presentazione di destinazione
$slds = $destPres->getSlides();
$slds->addClone($srcPres->getSlides()->get_Item(0));
# Scrivere la presentazione di destinazione su disco
$destPres->save("Aspose2_out.pptx", SaveFormat::Pptx);
} finally {
$destPres->dispose();
}
} finally {
$srcPres->dispose();
}
Clona una diapositiva in un’altra posizione in un’altra presentazione
Se devi clonare una diapositiva da una presentazione e usarla in un’altra presentazione, in una posizione specifica:
- Crea un’istanza della classe Presentation contenente la presentazione di origine da cui la diapositiva sarà clonata.
- Crea un’istanza della classe Presentation contenente la presentazione a cui la diapositiva sarà aggiunta.
- Ottieni la classe SlideCollection facendo riferimento alla raccolta Slides esposta dall’oggetto Presentation della presentazione di destinazione.
- Chiama il metodo insertClone esposto dall’oggetto SlideCollection e passa la diapositiva dalla presentazione di origine insieme alla posizione desiderata come parametri al metodo insertClone.
- Scrivi il file della presentazione di destinazione modificata.
Nell’esempio mostrato di seguito, abbiamo clonato una diapositiva (dall’indice zero della presentazione di origine) all’indice 1 (posizione 2) della presentazione di destinazione.
# Istanziare la classe Presentation per caricare il file della presentazione sorgente
$srcPres = new Presentation("CloneAtEndOfAnother.pptx");
try {
# Istanziare la classe Presentation per il PPTX di destinazione (dove la diapositiva deve essere clonata)
$destPres = new Presentation();
try {
# Clonare la diapositiva desiderata dalla presentazione sorgente alla fine della raccolta di diapositive nella presentazione di destinazione
$slds = $destPres->getSlides();
$slds->insertClone(2, $srcPres->getSlides()->get_Item(0));
# Scrivere la presentazione di destinazione su disco
$destPres->save("Aspose2_out.pptx", SaveFormat::Pptx);
} finally {
$destPres->dispose();
}
} finally {
$srcPres->dispose();
}
Clona una diapositiva in una posizione specifica in un’altra presentazione
Se devi clonare una diapositiva con un master slide da una presentazione e usarla in un’altra presentazione, devi prima clonare il master slide desiderato dalla presentazione di origine a quella di destinazione. Successivamente, utilizza quel master slide per clonare la diapositiva con master. Il metodo addClone(Slide, MasterSlide, boolean) richiede un master slide dalla presentazione di destinazione anziché da quella di origine. Per clonare la diapositiva con un master, segui i passaggi seguenti:
- Crea un’istanza della classe Presentation contenente la presentazione di origine da cui la diapositiva sarà clonata.
- Crea un’istanza della classe Presentation contenente la presentazione di destinazione a cui la diapositiva sarà clonata.
- Accedi alla diapositiva da clonare insieme al master slide.
- Istanzia la classe MasterSlideCollection facendo riferimento alla raccolta Masters esposta dall’oggetto Presentation della presentazione di destinazione.
- Chiama il metodo addClone esposto dall’oggetto MasterSlideCollection e passa come parametro il master dalla presentazione PPTX di origine da clonare.
- Istanzia la classe SlideCollection impostando il riferimento alla raccolta Slides esposta dall’oggetto Presentation della presentazione di destinazione.
- Chiama il metodo addClone esposto dall’oggetto SlideCollection e passa come parametri la diapositiva dalla presentazione di origine da clonare e il master slide.
- Scrivi il file della presentazione di destinazione modificato.
Nell’esempio mostrato di seguito, abbiamo clonato una diapositiva con master (situata all’indice zero della presentazione di origine) alla fine della presentazione di destinazione utilizzando un master dalla diapositiva di origine.
# Istanziare la classe Presentation per caricare il file della presentazione sorgente
$srcPres = new Presentation("CloneToAnotherPresentationWithMaster.pptx");
try {
# Istanziare la classe Presentation per la presentazione di destinazione (dove la diapositiva deve essere clonata)
$destPres = new Presentation();
try {
# Istanziare ISlide dalla raccolta di diapositive nella presentazione sorgente insieme a
# diapositiva master
$SourceSlide = $srcPres->getSlides()->get_Item(0);
$SourceMaster = $SourceSlide->getLayoutSlide()->getMasterSlide();
# Clonare la master slide desiderata dalla presentazione sorgente nella raccolta di master nella
# presentazione di destinazione
$masters = $destPres->getMasters();
$DestMaster = $SourceSlide->getLayoutSlide()->getMasterSlide();
# Clonare la master slide desiderata dalla presentazione sorgente nella raccolta di master nella
# presentazione di destinazione
$iSlide = $masters->addClone($SourceMaster);
# Clonare la diapositiva desiderata dalla presentazione sorgente con il master desiderato alla fine della
# raccolta di diapositive nella presentazione di destinazione
$slds = $destPres->getSlides();
$slds->addClone($SourceSlide, $iSlide, true);
# Salvare la presentazione di destinazione su disco
$destPres->save("CloneToAnotherPresentationWithMaster_out.pptx", SaveFormat::Pptx);
} finally {
$destPres->dispose();
}
} finally {
$srcPres->dispose();
}
Clona una diapositiva alla fine di una sezione specificata
Se desideri clonare una diapositiva e poi usarla nello stesso file di presentazione ma in una sezione diversa, utilizza il metodo addClone esposto dalla classe SlideCollection. Aspose.Slides per PHP via Java consente di clonare una diapositiva dalla prima sezione e quindi inserire quella diapositiva clonata nella seconda sezione della stessa presentazione.
Il frammento di codice seguente mostra come clonare una diapositiva e inserire la diapositiva clonata in una sezione specificata.
$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);
# Salva la presentazione di destinazione su disco
$presentation->save("CloneSlideIntoSpecifiedSection.pptx", SaveFormat::Pptx);
} finally {
if (!java_is_null($presentation)) {
$presentation->dispose();
}
}
Assicurare la corrispondenza delle dimensioni della diapositiva
Quando cloni diapositive in un’altra presentazione, assicurati che la presentazione di destinazione abbia le stesse dimensioni della diapositiva di origine. Se le dimensioni differiscono, Aspose.Slides non ridimensiona automaticamente le forme clonate: le coordinate e le dimensioni originali vengono preservate, il che può far apparire il contenuto disallineato o estendersi oltre i bordi della diapositiva.
Puoi impostare le dimensioni della diapositiva della presentazione di destinazione per farle corrispondere a quelle di origine prima di clonare il master e la diapositiva:
$sourceSize = $sourcePresentation->getSlideSize()->getSize();
$targetPresentation->getSlideSize()->setSize(
$sourceSize->getWidth(), $sourceSize->getHeight(), SlideSizeScaleType::DoNotScale);
Esegui questa operazione prima di clonare il master e la diapositiva.
FAQ
Le note del relatore e i commenti dei revisori vengono clonati?
Sì. La pagina delle note e i commenti di revisione sono inclusi nel clone. Se non li desideri, rimuovili dopo l’inserimento.
Come vengono gestiti i grafici e le loro fonti dati?
L’oggetto grafico, la formattazione e i dati incorporati vengono copiati. Se il grafico era collegato a una fonte esterna (ad es., una cartella di lavoro OLE incorporata), quel collegamento viene conservato come un oggetto OLE. Dopo lo spostamento tra file, verifica la disponibilità dei dati e il comportamento di aggiornamento.
Posso controllare la posizione di inserimento e le sezioni per il clone?
Sì. Puoi inserire il clone in un indice di diapositiva specifico e posizionarlo in una sezione scelta. Se la sezione di destinazione non esiste, creala prima e poi sposta la diapositiva al suo interno.