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

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

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

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

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

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

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

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

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

For complete examples and data files, please go to https://github.com/aspose-slides/Aspose.Slides-for-C
// The path to the documents directory.
const String templatePath = u"../templates/AddSlides.pptx";
const String outPath = u"../out/CloneWithinSamePresentationToEnd.pptx";
// Instantiate Presentation class
SharedPtr<Presentation> pres = MakeObject<Presentation>(templatePath);
// Accessing Slide by ID from collection
SharedPtr<ISlideCollection> slides = pres->get_Slides();
// Clone the desired slide at end of same presentation
slides->AddClone(pres->get_Slides()->idx_get(0));
// Writing the presentation file
pres->Save(outPath, Aspose::Slides::Export::SaveFormat::Pptx);

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

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

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

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

For complete examples and data files, please go to https://github.com/aspose-slides/Aspose.Slides-for-C
// The path to the documents directory.
const String templatePath = u"../templates/AddSlides.pptx";
const String outPath = u"../out/CloneWithInSamePresentation.pptx";
// Instantiate Presentation class
SharedPtr<Presentation> pres = MakeObject<Presentation>(templatePath);
// Accessing Slide by ID from collection
SharedPtr<ISlideCollection> slides = pres->get_Slides();
// Clone the desired slide to the specified index in the same presentation
slides->InsertClone(2, pres->get_Slides()->idx_get(0));
// Writing the presentation file
pres->Save(outPath, Aspose::Slides::Export::SaveFormat::Pptx);

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

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

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

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

For complete examples and data files, please go to https://github.com/aspose-slides/Aspose.Slides-for-C
// The path to the documents directory.
const String templatePath = u"../templates/AddSlides.pptx";
const String outPath = u"../out/CloneAtEndOfAnotherPresentation.pptx";
// Instantiate Presentation class
SharedPtr<Presentation> pres = MakeObject<Presentation>(templatePath);
//Instantiate target presentation object
SharedPtr<Presentation> destPres = MakeObject<Presentation>();
// Accessing Slide by ID from collection
SharedPtr<ISlideCollection> slideCollection = destPres->get_Slides();
// Clone the desired slide at end of other presentation
slideCollection->AddClone(pres->get_Slides()->idx_get(0));
// Writing the presentation file
destPres->Save(outPath, Aspose::Slides::Export::SaveFormat::Pptx);

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

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

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

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

For complete examples and data files, please go to https://github.com/aspose-slides/Aspose.Slides-for-C
// The path to the documents directory.
const String templatePath = u"../templates/AddSlides.pptx";
const String outPath = u"../out/CloneAtEndOfAnotherPresentation.pptx";
// Instantiate Presentation class
SharedPtr<Presentation> pres = MakeObject<Presentation>(templatePath);
//Instantiate target presentation object
SharedPtr<Presentation> destPres = MakeObject<Presentation>();
// Accessing Slide by ID from collection
SharedPtr<ISlideCollection> slideCollection = destPres->get_Slides();
// Clone the desired slide at end of other presentation
slideCollection->AddClone(pres->get_Slides()->idx_get(0));
// Writing the presentation file
destPres->Save(outPath, Aspose::Slides::Export::SaveFormat::Pptx);

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

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

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

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

For complete examples and data files, please go to https://github.com/aspose-slides/Aspose.Slides-for-C
// The path to the documents directory.
const String templatePath = u"../templates/AddSlides.pptx";
const String outPath = u"../out/CloneToAnotherPresentationWithMaster.pptx";
// Instantiate Presentation class
SharedPtr<Presentation> pres = MakeObject<Presentation>(templatePath);
//Instantiate target presentation object
SharedPtr<Presentation> destPres = MakeObject<Presentation>();
// Accessing Slide by ID from collection
SharedPtr<ISlideCollection> slideCollection = destPres->get_Slides();
// Instantiate ISlide from the collection of slides in source presentation along with
// Master slide
SharedPtr<ISlide> SourceSlide = pres->get_Slides()->idx_get(0);
SharedPtr<IMasterSlide> SourceMaster = SourceSlide->get_LayoutSlide()->get_MasterSlide();
// Clone the desired master slide from the source presentation to the collection of masters in the
// Destination presentation
SharedPtr<IMasterSlideCollection> masters = destPres->get_Masters();
SharedPtr<IMasterSlide> DestMaster = SourceSlide->get_LayoutSlide()->get_MasterSlide();
// Clone the desired master slide from the source presentation to the collection of masters in the
// Destination presentation
SharedPtr<IMasterSlide> iSlide = masters->AddClone(SourceMaster);
// Clone the desired slide from the source presentation with the desired master to the end of the
// Collection of slides in the destination presentation
slideCollection->AddClone(SourceSlide, iSlide, true);
// Clone the desired slide at end of other presentation
slideCollection->InsertClone(1, pres->get_Slides()->idx_get(0));
// Writing the presentation file
destPres->Save(outPath, Aspose::Slides::Export::SaveFormat::Pptx);

Клонировать слайд в заданный раздел

Если вы хотите клонировать слайд и затем использовать его в том же файле презентации, но в другом разделе, используйте метод AddClone(), предоставляемый интерфейсом ISlideCollection. Aspose.Slides для C++ позволяет клонировать слайд из первого раздела и затем вставить этот клонированный слайд во второй раздел той же презентации.

Следующий фрагмент кода показывает, как клонировать слайд и вставить клонированный слайд в заданный раздел.

const String outPath = u"../out/CloneSlideIntoSpecifiedSection.pptx";
auto presentation = MakeObject<Presentation>();
presentation->get_Slides()->idx_get(0)->get_Shapes()->AddAutoShape(ShapeType::Rectangle, 200.0f, 50.0f, 300.0f, 100.0f);
presentation->get_Sections()->AddSection(u"Section 1", presentation->get_Slides()->idx_get(0));
auto section2 = presentation->get_Sections()->AppendEmptySection(u"Section 2");
presentation->get_Slides()->AddClone(presentation->get_Slides()->idx_get(0), section2);
presentation->Save(outPath, Aspose::Slides::Export::SaveFormat::Pptx);