Клонирование слайдов
Клонирование слайда в презентации
Клонирование — это процесс создания точной копии или реплики чего-либо. Aspose.Slides для C++ также позволяет создать копию или клонировать любой слайд, а затем вставить этот клонированный слайд в текущую или любую другую открытую презентацию. Процесс клонирования слайда создает новый слайд, который может быть изменен разработчиками без изменения оригинального слайда. Существует несколько возможных способов клонирования слайда:
- Клонировать в конце презентации.
- Клонировать в другое место в презентации.
- Клонировать в конце другой презентации.
- Клонировать в другое место в другой презентации.
- Клонировать в определенную позицию в другой презентации.
В Aspose.Slides для C++, коллекция ISlide объектов, предоставляемая объектом Presentation, предоставляет методы AddClone и InsertClone для выполнения вышеупомянутых типов клонирования слайдов.
Клонировать в конце презентации
Если вы хотите клонировать слайд и затем использовать его в том же файле презентации в конце существующих слайдов, используйте метод AddClone согласно шагам, перечисленным ниже:
- Создайте экземпляр класса Presentation.
- Создайте экземпляр класса ISlideCollection, ссылаясь на коллекцию слайдов, предоставляемую объектом Presentation.
- Вызовите метод AddClone, предоставляемый объектом ISlideCollection, и передайте слайд для клонирования в качестве параметра методу AddClone.
- Запишите изменённый файл презентации.
В приведённом ниже примере мы клонировали слайд (лежащий на первой позиции – нулевой индекс – презентации) в конец презентации.
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:
- Создайте экземпляр класса Presentation.
- Создайте экземпляр класса, ссылаясь на коллекцию Slides, предоставляемую объектом Presentation.
- Вызовите метод InsertClone объекта ISlideCollection и передайте слайд для клонирования вместе с индексом для нового положения в качестве параметра методу InsertClone.
- Запишите изменённую презентацию в формате 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); | |
Клонировать слайд в конец другой презентации
Если вам нужно клонировать слайд из одной презентации и использовать его в другой презентации, в конце существующих слайдов:
- Создайте экземпляр класса Presentation, содержащий презентацию, из которой будет клонироваться слайд.
- Создайте экземпляр класса Presentation, содержащий целевую презентацию, в которую будет добавлен слайд.
- Создайте экземпляр класса ISlideCollection, ссылаясь на коллекцию Slides, предоставляемую объектом Presentation целевой презентации.
- Вызовите метод AddClone, предоставляемый объектом ISlideCollection, и передайте слайд из исходной презентации в качестве параметра методу AddClone.
- Запишите изменённый файл целевой презентации.
В приведённом ниже примере мы клонировали слайд (из первого индекса исходной презентации) в конец целевой презентации.
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); | |
Клонировать слайд в другое место в другой презентации
Если вам нужно клонировать слайд из одной презентации и использовать его в другой презентации в определённом месте:
- Создайте экземпляр класса Presentation, содержащий исходную презентацию, из которой будет клонироваться слайд.
- Создайте экземпляр класса Presentation, содержащий презентацию, в которую будет добавлен слайд.
- Создайте экземпляр класса ISlideCollection, ссылаясь на коллекцию Slides, предоставляемую объектом Presentation целевой презентации.
- Вызовите метод InsertClone объекта ISlideCollection и передайте слайд из исходной презентации вместе с желаемой позицией в качестве параметра методу InsertClone.
- Запишите изменённый файл целевой презентации.
В приведённом ниже примере мы клонировали слайд (из нулевого индекса исходной презентации) на индекс 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) ожидает мастер-слайд из целевой презентации, а не из исходной. Чтобы клонировать слайд с мастер-слайдом, выполните следующие шаги:
- Создайте экземпляр класса Presentation, содержащий исходную презентацию, из которой будет клонироваться слайд.
- Создайте экземпляр класса Presentation, содержащий целевую презентацию, в которую будет клонироваться слайд.
- Получите слайд для клонирования вместе с мастер-слайдом.
- Создайте экземпляр класса IMasterSlideCollection, ссылаясь на коллекцию мастеров, предоставляемую объектом Presentation целевой презентации.
- Вызовите метод AddClone объекта IMasterSlideCollection и передайте мастер-слайд из исходного PPTX для клонирования в качестве параметра методу AddClone.
- Создайте экземпляр класса ISlideCollection, установив ссылку на коллекцию Slides, предоставляемую объектом Presentation целевой презентации.
- Вызовите метод AddClone объекта ISlideCollection и передайте слайд из исходной презентации для клонирования и мастер-слайд в качестве параметра методу AddClone.
- Запишите изменённый файл целевой презентации.
В приведённом ниже примере мы клонировали слайд с мастер-слайдом (лежащий на нулевом индексе исходной презентации) в конец целевой презентации, используя мастер из исходного слайда.
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); | |