Клонирование слайдов

Клонирование слайдов в презентации

Клонирование — это процесс создания точной копии или реплики чего-либо. Aspose.Slides для .NET также позволяет создавать копию или клонировать любой слайд и затем вставлять этот клонированный слайд в текущую или любую другую открытую презентацию. Процесс клонирования слайдов создает новый слайд, который может быть изменен разработчиками без изменения оригинального слайда. Существует несколько возможных способов клонирования слайда:

  • Клонировать в конец в рамках презентации.
  • Клонировать в другое положение в рамках презентации.
  • Клонировать в конец в другой презентации.
  • Клонировать в другое положение в другой презентации.
  • Клонировать в определенное положение в другой презентации.

В Aspose.Slides для .NET (коллекция объектов ISlide), предоставляемая объектом Presentation, содержит методы AddClone и InsertClone для выполнения вышеуказанных типов клонирования слайдов.

Клонировать в конец в рамках презентации

Если вы хотите клонировать слайд и затем использовать его в том же файле презентации в конце существующих слайдов, используйте метод AddClone согласно приведенным ниже шагам:

  1. Создайте экземпляр класса Presentation.
  2. Создайте экземпляр класса ISlideCollection, ссылаясь на коллекцию слайдов, предоставляемую объектом Presentation.
  3. Вызовите метод AddClone, предоставляемый объектом ISlideCollection, и передайте слайд, который необходимо клонировать, в качестве параметра метода AddClone.
  4. Сохраните измененный файл презентации.

В приведенном ниже примере мы клонировали слайд (стоящий на первом месте — нулевой индекс — презентации) в конец презентации.

// Создание экземпляра класса Presentation, который представляет файл презентации
using (Presentation pres = new Presentation("CloneWithinSamePresentationToEnd.pptx"))
{

    // Клонирование нужного слайда в конец коллекции слайдов в той же презентации
    ISlideCollection slds = pres.Slides;

    slds.AddClone(pres.Slides[0]);

    // Запись измененной презентации на диск
    pres.Save("Aspose_CloneWithinSamePresentationToEnd_out.pptx", SaveFormat.Pptx);

}

Клонировать в другое положение в рамках презентации

Если вы хотите клонировать слайд и затем использовать его в том же файле презентации, но в другом положении, используйте метод InsertClone:

  1. Создайте экземпляр класса Presentation.
  2. Создайте экземпляр класса, ссылающегося на коллекцию Slides, предоставляемую объектом Presentation.
  3. Вызовите метод InsertClone, предоставляемый объектом ISlideCollection, и передайте слайд, который необходимо клонировать, вместе с индексом для нового положения в качестве параметра метода InsertClone.
  4. Сохраните измененную презентацию в файле PPTX.

В приведенном ниже примере мы клонировали слайд (стоящий на нулевом индексе — позиция 1 — презентации) в индекс 1 — позиция 2 — презентации.

// Создание экземпляра класса Presentation, который представляет файл презентации
using (Presentation pres = new Presentation("CloneWithInSamePresentation.pptx"))
{

    // Клонирование нужного слайда в конец коллекции слайдов в той же презентации
    ISlideCollection slds = pres.Slides;

    // Клонирование нужного слайда на указанном индексе в той же презентации
    slds.InsertClone(2, pres.Slides[1]);

    // Запись измененной презентации на диск
    pres.Save("Aspose_CloneWithInSamePresentation_out.pptx", SaveFormat.Pptx);

}

Клонировать в конец в другой презентации

Если вам нужно клонировать слайд из одной презентации и использовать его в другой презентации, в конце существующих слайдов:

  1. Создайте экземпляр класса Presentation, содержащего презентацию, из которой будет клонироваться слайд.
  2. Создайте экземпляр класса Presentation, содержащего целевую презентацию, в которую будет добавлен слайд.
  3. Создайте экземпляр класса ISlideCollection, ссылаясь на коллекцию Slides, предоставляемую объектом Presentation целевой презентации.
  4. Вызовите метод AddClone, предоставляемый объектом ISlideCollection, и передайте слайд из исходной презентации в качестве параметра метода AddClone.
  5. Сохраните измененный файл целевой презентации.

В приведенном ниже примере мы клонировали слайд (с первого индекса исходной презентации) в конец целевой презентации.

// Создание экземпляра класса Presentation для загрузки исходного файла презентации
using (Presentation srcPres = new Presentation("CloneAtEndOfAnother.pptx"))
{
    // Создание экземпляра класса Presentation для целевой PPTX (куда слайд будет клонирован)
    using (Presentation destPres = new Presentation())
    {
        // Клонирование нужного слайда из исходной презентации в конец коллекции слайдов в целевой презентации
        ISlideCollection slds = destPres.Slides;

        slds.AddClone(srcPres.Slides[0]);

        // Запись целевой презентации на диск
        destPres.Save("Aspose2_out.pptx", SaveFormat.Pptx);
    }
}

Клонировать в другое положение в другой презентации

Если вам нужно клонировать слайд из одной презентации и использовать его в другой презентации, в определенное положение:

  1. Создайте экземпляр класса Presentation, содержащего исходную презентацию, из которой будет клонирован слайд.
  2. Создайте экземпляр класса Presentation, содержащего презентацию, в которую будет добавлен слайд.
  3. Создайте экземпляр класса ISlideCollection, ссылаясь на коллекцию Slides, предоставляемую объектом Presentation целевой презентации.
  4. Вызовите метод InsertClone, предоставляемый объектом ISlideCollection, и передайте слайд из исходной презентации вместе с желаемой позицией в качестве параметра метода InsertClone.
  5. Сохраните измененный файл целевой презентации.

В приведенном ниже примере мы клонировали слайд (с нулевого индекса исходной презентации) в индекс 1 (позиция 2) целевой презентации.

// Создание экземпляра класса Presentation для загрузки исходного файла презентации
using (Presentation srcPres = new Presentation("CloneAtEndOfAnother.pptx"))
{
    // Создание экземпляра класса Presentation для целевой PPTX (куда слайд будет клонирован)
    using (Presentation destPres = new Presentation())
    {
        ISlideCollection slds = destPres.Slides;

        slds.InsertClone(2, srcPres.Slides[0]);

        // Запись целевой презентации на диск
        destPres.Save("Aspose2_out.pptx", SaveFormat.Pptx);
    }
}

Клонировать в определенное положение в другой презентации

Если вам нужно клонировать слайд с мастер-слайдом из одной презентации и использовать его в другой презентации, вам нужно сначала клонировать нужный мастер-слайд из исходной презентации в целевую презентацию. Затем вам необходимо использовать этот мастер-слайд для клонирования слайда с мастер-слайдом. Метод AddClone(ISlide, IMasterSlide) ожидает мастер-слайд из целевой презентации, а не из исходной. Чтобы клонировать слайд с мастер-слайдом, следуйте приведенным ниже шагам:

  1. Создайте экземпляр класса Presentation, содержащего исходную презентацию, из которой будет клонирован слайд.
  2. Создайте экземпляр класса Presentation, содержащего целевую презентацию, в которую будет клонирован слайд.
  3. Получите слайд, который необходимо клонировать вместе с мастер-слайдом.
  4. Создайте экземпляр класса IMasterSlideCollection, ссылку на коллекцию мастеров, предоставляемую объектом Presentation целевой презентации.
  5. Вызовите метод AddClone, предоставляемый объектом IMasterSlideCollection, и передайте мастер из исходного PPTX, который нужно клонировать, в качестве параметра метода AddClone.
  6. Создайте экземпляр класса ISlideCollection, установив ссылку на коллекцию слайдов, предоставляемую объектом Presentation целевой презентации.
  7. Вызовите метод AddClone, предоставляемый объектом ISlideCollection, и передайте слайд из исходной презентации, который необходимо клонировать, и мастер-слайд в качестве параметра для метода AddClone.
  8. Сохраните измененный файл целевой презентации.

В приведенном ниже примере мы клонировали слайд с мастер-слайдом (стоящий на нулевом индексе исходной презентации) в конец целевой презентации, используя мастер из исходного слайда.

// Создание экземпляра класса Presentation для загрузки исходного файла презентации

using (Presentation srcPres = new Presentation("CloneToAnotherPresentationWithMaster.pptx"))
{
    // Создание экземпляра класса Presentation для целевой презентации (куда слайд будет клонирован)
    using (Presentation destPres = new Presentation())
    {

        // Создание экземпляра ISlide из коллекции слайдов в исходной презентации вместе с
        // Мастер-слайдом
        ISlide SourceSlide = srcPres.Slides[0];
        IMasterSlide SourceMaster = SourceSlide.LayoutSlide.MasterSlide;

        // Клонирование нужного мастер-слайда из исходной презентации в коллекцию мастеров в
        // Целевой презентации
        IMasterSlideCollection masters = destPres.Masters;
        IMasterSlide DestMaster = SourceSlide.LayoutSlide.MasterSlide;

        // Клонирование нужного мастер-слайда из исходной презентации в коллекцию мастеров в
        // Целевой презентации
        IMasterSlide iSlide = masters.AddClone(SourceMaster);

        // Клонирование нужного слайда из исходной презентации с нужным мастером в конец
        // Коллекции слайдов в целевой презентации
        ISlideCollection slds = destPres.Slides;
        slds.AddClone(SourceSlide, iSlide, true);
      
        // Клонирование нужного мастер-слайда из исходной презентации в коллекцию мастеров в
        // Целевой презентации
        // Сохранение целевой презентации на диск
        destPres.Save("CloneToAnotherPresentationWithMaster_out.pptx", SaveFormat.Pptx);

    }
}

Клонировать в конец в указанном разделе

С помощью Aspose.Slides для .NET вы можете клонировать слайд из одного раздела презентации и вставить этот слайд в другой раздел в той же презентации. В этом случае вам нужно использовать метод AddClone из интерфейса ISlideCollection.

Эта C# программа показывает, как клонировать слайд и вставить клонированный слайд в указанный раздел:

using (Presentation pres = new Presentation())
{
    ISlide slide = pres.Slides.AddEmptySlide(pres.Slides[0].LayoutSlide);
    slide.Shapes.AddAutoShape(ShapeType.Ellipse, 150, 150, 100, 100); // для клонирования
    
    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);
}