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:

  1. Utwórz instancję klasy Presentation.
  2. Zainicjuj klasę ISlideCollection, odwołując się do kolekcji Slides udostępnionej przez obiekt Presentation.
  3. Wywołaj metodę AddClone udostępnioną przez obiekt ISlideCollection i przekaż slajd do sklonowania jako parametr do metody AddClone.
  4. 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:

  1. Utwórz instancję klasy Presentation.
  2. Zainicjuj klasę, odwołując się do kolekcji Slides udostępnionej przez obiekt Presentation.
  3. Wywołaj metodę InsertClone udostępnioną przez obiekt ISlideCollection i przekaż slajd do sklonowania wraz z indeksem nowej pozycji jako parametr do metody InsertClone.
  4. 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:

  1. Utwórz instancję klasy Presentation zawierającej prezentację, z której slajd zostanie sklonowany.
  2. Utwórz instancję klasy Presentation zawierającej docelową prezentację, do której slajd zostanie dodany.
  3. Zainicjuj klasę ISlideCollection, odwołując się do kolekcji Slides udostępnionej przez obiekt Presentation docelowej prezentacji.
  4. Wywołaj metodę AddClone udostępnioną przez obiekt ISlideCollection i przekaż slajd z prezentacji źródłowej jako parametr do metody AddClone.
  5. 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:

  1. Utwórz instancję klasy Presentation zawierającej prezentację źródłową, z której slajd zostanie sklonowany.
  2. Utwórz instancję klasy Presentation zawierającej prezentację, do której slajd zostanie dodany.
  3. Zainicjuj klasę ISlideCollection, odwołując się do kolekcji Slides udostępnionej przez obiekt Presentation docelowej prezentacji.
  4. 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.
  5. 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:

  1. Utwórz instancję klasy Presentation zawierającej prezentację źródłową, z której slajd zostanie sklonowany.
  2. Utwórz instancję klasy Presentation zawierającej prezentację docelową, do której slajd zostanie sklonowany.
  3. Uzyskaj dostęp do slajdu, który ma zostać sklonowany, wraz z masterem.
  4. Zainicjuj klasę IMasterSlideCollection, odwołując się do kolekcji Masters udostępnionej przez obiekt Presentation prezentacji docelowej.
  5. Wywołaj metodę AddClone udostępnioną przez obiekt IMasterSlideCollection i przekaż master z pliku PPTX źródłowego jako parametr do metody AddClone.
  6. Zainicjuj klasę ISlideCollection, ustawiając referencję do kolekcji Slides udostępnionej przez obiekt Presentation prezentacji docelowej.
  7. Wywołaj metodę AddClone udostępnioną przez obiekt ISlideCollection i przekaż slajd z prezentacji źródłowej oraz master jako parametry do metody AddClone.
  8. 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.