Klonowanie slajdów prezentacji w .NET
Wprowadzenie
Klonowanie to proces tworzenia dokładnej kopii lub repliki czegoś. Aspose.Slides umożliwia także kopiowanie (klonowanie) dowolnego slajdu i wstawienie sklonowanego slajdu do bieżącej prezentacji lub dowolnej innej otwartej prezentacji. Klonowanie slajdu tworzy nowy slajd, który deweloperzy mogą modyfikować bez wpływu na oryginalny slajd. Istnieje kilka sposobów klonowania slajdu:
- Klonowanie na końcu prezentacji.
- Klonowanie w innym miejscu w obrębie prezentacji.
- Klonowanie na końcu innej prezentacji.
- Klonowanie w innym miejscu w innej prezentacji.
- Klonowanie w określonym miejscu w innej prezentacji.
W Aspose.Slides for .NET kolekcja slajdów (kolekcja obiektów ISlide ) udostępniona przez obiekt Presentation zapewnia metody AddClone i InsertClone do wykonywania opisanych powyżej operacji klonowania slajdów.
Klonowanie slajdu na końcu prezentacji
Jeśli chcesz sklonować slajd i następnie użyć go w tym samym pliku prezentacji na końcu istniejących slajdów, użyj metody AddClone zgodnie z poniższymi krokami:
- Utwórz instancję klasy Presentation.
- Zainicjuj klasę ISlideCollection, odwołując się do kolekcji Slides udostępnionej przez obiekt Presentation.
- Wywołaj metodę AddClone udostępnioną przez obiekt ISlideCollection i przekaż slajd do sklonowania jako parametr do metody AddClone.
- Zapisz zmodyfikowany plik prezentacji.
W poniższym przykładzie sklonowaliśmy slajd (znajdujący się na pierwszej pozycji – indeks zero – w prezentacji) na koniec prezentacji.
// Utwórz instancję klasy Presentation, która reprezentuje plik prezentacji
using (Presentation pres = new Presentation("CloneWithinSamePresentationToEnd.pptx"))
{
// Sklonuj wybrany slajd na koniec kolekcji slajdów w tej samej prezentacji
ISlideCollection slds = pres.Slides;
slds.AddClone(pres.Slides[0]);
// Zapisz zmodyfikowaną prezentację na dysku
pres.Save("Aspose_CloneWithinSamePresentationToEnd_out.pptx", SaveFormat.Pptx);
}
Klonowanie slajdu w innym miejscu w obrębie prezentacji
Jeśli chcesz sklonować slajd i następnie użyć go w tym samym pliku prezentacji, ale w innym miejscu, użyj metody InsertClone:
- Utwórz instancję klasy Presentation.
- Zainicjuj klasę, odwołując się do kolekcji Slides udostępnionej przez obiekt Presentation.
- Wywołaj metodę InsertClone udostępnioną przez obiekt ISlideCollection i przekaż slajd do sklonowania wraz z indeksem nowej pozycji jako parametr do metody InsertClone.
- Zapisz zmodyfikowaną prezentację jako plik PPTX.
W poniższym przykładzie sklonowaliśmy slajd (znajdujący się na indeksie zero – pozycja 1 – w prezentacji) na indeks 1 – pozycję 2 – w prezentacji.
// Utwórz instancję klasy Presentation, która reprezentuje plik prezentacji
using (Presentation pres = new Presentation("CloneWithInSamePresentation.pptx"))
{
// Sklonuj wybrany slajd na koniec kolekcji slajdów w tej samej prezentacji
ISlideCollection slds = pres.Slides;
// Sklonuj wybrany slajd do określonego indeksu w tej samej prezentacji
slds.InsertClone(2, pres.Slides[1]);
// Zapisz zmodyfikowaną prezentację na dysku
pres.Save("Aspose_CloneWithInSamePresentation_out.pptx", SaveFormat.Pptx);
}
Klonowanie slajdu na końcu innej prezentacji
Jeśli musisz sklonować slajd z jednej prezentacji i użyć go w innej prezentacji, na końcu istniejących slajdów:
- Utwórz instancję klasy Presentation zawierającej prezentację, z której slajd zostanie sklonowany.
- Utwórz instancję klasy Presentation zawierającej docelową prezentację, do której slajd zostanie dodany.
- Zainicjuj klasę ISlideCollection, odwołując się do kolekcji Slides udostępnionej przez obiekt Presentation docelowej prezentacji.
- Wywołaj metodę AddClone udostępnioną przez obiekt ISlideCollection i przekaż slajd z prezentacji źródłowej jako parametr do metody AddClone.
- Zapisz zmodyfikowany plik docelowej prezentacji.
W poniższym przykładzie sklonowaliśmy slajd (z pierwszego indeksu prezentacji źródłowej) na koniec prezentacji docelowej.
// Utwórz instancję klasy Presentation, aby wczytać plik prezentacji źródłowej
using (Presentation srcPres = new Presentation("CloneAtEndOfAnother.pptx"))
{
// Utwórz instancję klasy Presentation dla docelowego pliku PPTX (gdzie slajd ma zostać sklonowany)
using (Presentation destPres = new Presentation())
{
// Sklonuj wybrany slajd z prezentacji źródłowej na koniec kolekcji slajdów w prezentacji docelowej
ISlideCollection slds = destPres.Slides;
slds.AddClone(srcPres.Slides[0]);
// Zapisz docelową prezentację na dysku
destPres.Save("Aspose2_out.pptx", SaveFormat.Pptx);
}
}
Klonowanie slajdu w innym miejscu w innej prezentacji
Jeśli musisz sklonować slajd z jednej prezentacji i użyć go w innej prezentacji, w określonym miejscu:
- Utwórz instancję klasy Presentation zawierającej prezentację źródłową, z której slajd zostanie sklonowany.
- Utwórz instancję klasy Presentation zawierającej prezentację, do której slajd zostanie dodany.
- Zainicjuj klasę ISlideCollection, odwołując się do kolekcji Slides udostępnionej przez obiekt Presentation docelowej prezentacji.
- Wywołaj metodę InsertClone udostępnioną przez obiekt ISlideCollection i przekaż slajd z prezentacji źródłowej wraz z żądaną pozycją jako parametr do metody InsertClone.
- Zapisz zmodyfikowany plik docelowej prezentacji.
W poniższym przykładzie sklonowaliśmy slajd (z indeksu zero w prezentacji źródłowej) na indeks 1 (pozycja 2) w prezentacji docelowej.
// Utwórz instancję klasy Presentation, aby wczytać plik prezentacji źródłowej
using (Presentation srcPres = new Presentation("CloneAtEndOfAnother.pptx"))
{
// Utwórz instancję klasy Presentation dla docelowego pliku PPTX (gdzie slajd ma zostać sklonowany)
using (Presentation destPres = new Presentation())
{
ISlideCollection slds = destPres.Slides;
slds.InsertClone(2, srcPres.Slides[0]);
// Zapisz docelową prezentację na dysku
destPres.Save("Aspose2_out.pptx", SaveFormat.Pptx);
}
}
Klonowanie slajdu w określonym miejscu w innej prezentacji
Jeśli musisz sklonować slajd wraz z masterem z jednej prezentacji i użyć go w innej prezentacji, najpierw musisz sklonować żądany master ze źródła do prezentacji docelowej. Następnie użyj tego mastera do klonowania slajdu z masterem. Metoda AddClone(ISlide, IMasterSlide) oczekuje mastera z prezentacji docelowej, a nie ze źródłowej. Aby sklonować slajd z masterem, wykonaj poniższe kroki:
- Utwórz instancję klasy Presentation zawierającej prezentację źródłową, z której slajd zostanie sklonowany.
- Utwórz instancję klasy Presentation zawierającej prezentację docelową, do której slajd zostanie sklonowany.
- Uzyskaj dostęp do slajdu, który ma zostać sklonowany, wraz z masterem.
- Zainicjuj klasę IMasterSlideCollection, odwołując się do kolekcji Masters udostępnionej przez obiekt Presentation prezentacji docelowej.
- Wywołaj metodę AddClone udostępnioną przez obiekt IMasterSlideCollection i przekaż master z pliku PPTX źródłowego jako parametr do metody AddClone.
- Zainicjuj klasę ISlideCollection, ustawiając referencję do kolekcji Slides udostępnionej przez obiekt Presentation prezentacji docelowej.
- Wywołaj metodę AddClone udostępnioną przez obiekt ISlideCollection i przekaż slajd z prezentacji źródłowej oraz master jako parametry do metody AddClone.
- Zapisz zmodyfikowany plik docelowej prezentacji.
W poniższym przykładzie sklonowaliśmy slajd z masterem (znajdujący się w indeksie zero prezentacji źródłowej) na koniec prezentacji docelowej, używając mastera ze slajdu źródłowego.
// Utwórz instancję klasy Presentation, aby wczytać plik prezentacji źródłowej
using (Presentation srcPres = new Presentation("CloneToAnotherPresentationWithMaster.pptx"))
{
// Utwórz instancję klasy Presentation dla prezentacji docelowej (gdzie slajd ma zostać sklonowany)
using (Presentation destPres = new Presentation())
{
// Utwórz ISlide z kolekcji slajdów w prezentacji źródłowej wraz z
// slajdem master
ISlide SourceSlide = srcPres.Slides[0];
IMasterSlide SourceMaster = SourceSlide.LayoutSlide.MasterSlide;
// Sklonuj wybrany slajd master z prezentacji źródłowej do kolekcji masterów w
// prezentacji docelowej
IMasterSlideCollection masters = destPres.Masters;
IMasterSlide DestMaster = SourceSlide.LayoutSlide.MasterSlide;
// Sklonuj wybrany slajd master z prezentacji źródłowej do kolekcji masterów w
// prezentacji docelowej
IMasterSlide iSlide = masters.AddClone(SourceMaster);
// Sklonuj wybrany slajd z prezentacji źródłowej z wybranym masterem na koniec
// kolekcji slajdów w prezentacji docelowej
ISlideCollection slds = destPres.Slides;
slds.AddClone(SourceSlide, iSlide, true);
// Sklonuj wybrany slajd master z prezentacji źródłowej do kolekcji masterów w // prezentacji docelowej
// Zapisz docelową prezentację na dysku
destPres.Save("CloneToAnotherPresentationWithMaster_out.pptx", SaveFormat.Pptx);
}
}
Klonowanie slajdu na końcu określonej sekcji
Za pomocą Aspose.Slides for .NET możesz klonować slajd z jednej sekcji prezentacji i wstawiać go do innej sekcji w tej samej prezentacji. W takim wypadku należy użyć metody AddClone z interfejsu ISlideCollection.
Ten kod C# pokazuje, jak sklonować slajd i wstawić sklonowany slajd do określonej sekcji:
using (Presentation pres = new Presentation())
{
ISlide slide = pres.Slides.AddEmptySlide(pres.Slides[0].LayoutSlide);
slide.Shapes.AddAutoShape(ShapeType.Ellipse, 150, 150, 100, 100); // do sklonowania
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);
}
FAQ
Czy notatki prelegenta i komentarze recenzenta są klonowane?
Tak. Strona z notatkami oraz komentarze recenzenta są uwzględnione w klonie. Jeśli ich nie chcesz, usuń je po wstawieniu.
Jak obsługiwane są wykresy i ich źródła danych?
Obiekt wykresu, formatowanie oraz osadzone dane są kopiowane. Jeśli wykres był powiązany z zewnętrznym źródłem (np. skoroszytem osadzonym jako OLE), to powiązanie zostaje zachowane jako obiekt OLE. Po przeniesieniu między plikami sprawdź dostępność danych i zachowanie odświeżania.
Czy mogę kontrolować pozycję wstawiania i sekcje dla klonu?
Tak. Możesz wstawić klon na określonym indeksie slajdu i umieścić go w wybranej sekcji. Jeśli docelowa sekcja nie istnieje, najpierw ją utwórz, a potem przenieś slajd do niej.