Клонирование слайдов презентации на Android
Клонирование слайдов в презентации
Клонирование — это процесс создания точной копии или реплики чего‑либо. Aspose.Slides for Android via Java также позволяет создать копию или клон любого слайда и затем вставить этот клон в текущую или любую другую открытую презентацию. При клонировании слайда создаётся новый слайд, который разработчики могут изменять, не затрагивая оригинал. Существует несколько способов клонирования слайда:
- Клонировать в конец внутри презентации.
- Клонировать в другое положение внутри презентации.
- Клонировать в конец в другой презентации.
- Клонировать в другое положение в другой презентации.
- Клонировать в указанное положение в другой презентации.
В Aspose.Slides for Android via Java (коллекция объектов ISlide) , доступная через объект Presentation, предоставляет методы addClone и insertClone для выполнения перечисленных видов клонирования слайдов.
Клонирование слайда в конец презентации
Если необходимо клонировать слайд и затем использовать его в том же файле презентации в конце существующих слайдов, используйте метод addClone согласно следующей последовательности:
- Создайте экземпляр класса Presentation.
- Получите объект ISlideCollection через свойство Slides презентации.
- Вызовите метод addClone у объекта ISlideCollection и передайте слайд, который нужно клонировать, в качестве параметра.
- Сохраните изменённый файл презентации.
В примере ниже мы клонировали слайд (находившийся на первой позиции — индекс 0 — презентации) в конец презентации.
// Создайте экземпляр класса Presentation, представляющего файл презентации
Presentation pres = new Presentation("CloneWithinSamePresentationToEnd.pptx");
try {
// Клонируйте нужный слайд в конец коллекции слайдов в той же презентации
ISlideCollection slds = pres.getSlides();
slds.addClone(pres.getSlides().get_Item(0));
// Запишите изменённую презентацию на диск
pres.save("Aspose_CloneWithinSamePresentationToEnd_out.pptx", SaveFormat.Pptx);
} finally {
pres.dispose();
}
Клонирование слайда в другое положение внутри презентации
Если нужно клонировать слайд и использовать его в том же файле презентации, но в другом месте, используйте метод insertClone:
- Создайте экземпляр класса Presentation.
- Получите объект Slides у презентации.
- Вызовите метод insertClone у объекта ISlideCollection и передайте слайд для клонирования вместе с индексом новой позиции.
- Сохраните изменённый документ в формате PPTX.
В примере ниже мы клонировали слайд (находившийся на нулевом индексе — позиция 1 — презентации) в индекс 1 — позиция 2 — презентации.
// Создайте экземпляр класса Presentation, представляющего файл презентации
Presentation pres = new Presentation("CloneWithInSamePresentation.pptx");
try {
// Клонируйте нужный слайд в конец коллекции слайдов в той же презентации
ISlideCollection slds = pres.getSlides();
// Клонируйте нужный слайд в указанный индекс в той же презентации
slds.insertClone(2, pres.getSlides().get_Item(1));
// Запишите изменённую презентацию на диск
pres.save("Aspose_CloneWithInSamePresentation_out.pptx", SaveFormat.Pptx);
} finally {
pres.dispose();
}
Клонирование слайда в конец другой презентации
Если необходимо клонировать слайд из одной презентации и добавить его в другую презентацию в конец существующих слайдов:
- Создайте экземпляр класса Presentation, содержащей исходную презентацию.
- Создайте экземпляр класса Presentation, содержащей целевую презентацию.
- Получите объект ISlideCollection через коллекцию Slides целевой презентации.
- Вызовите метод addClone у объекта ISlideCollection и передайте в него слайд из исходной презентации.
- Сохраните изменённый файл целевой презентации.
В примере ниже мы клонировали слайд (с первого индекса исходной презентации) в конец целевой презентации.
// Создайте экземпляр класса Presentation для загрузки исходного файла презентации
Presentation srcPres = new Presentation("CloneAtEndOfAnother.pptx");
try {
// Создайте экземпляр класса Presentation для целевой PPTX (куда будет клонироваться слайд)
Presentation destPres = new Presentation();
try {
// Клонируйте нужный слайд из исходной презентации в конец коллекции слайдов целевой презентации
ISlideCollection slds = destPres.getSlides();
slds.addClone(srcPres.getSlides().get_Item(0));
// Запишите целевую презентацию на диск
destPres.save("Aspose2_out.pptx", SaveFormat.Pptx);
} finally {
destPres.dispose();
}
} finally {
srcPres.dispose();
}
Клонирование слайда в другое положение в другой презентации
Если необходимо клонировать слайд из одной презентации и разместить его в другой презентации в определённом месте:
- Создайте экземпляр класса Presentation с исходной презентацией.
- Создайте экземпляр класса Presentation с целевой презентацией.
- Получите объект ISlideCollection через коллекцию Slides целевой презентации.
- Вызовите метод insertClone у объекта ISlideCollection и передайте слайд из исходной презентации вместе с требуемым индексом позиции.
- Сохраните изменённый файл целевой презентации.
В примере ниже мы клонировали слайд (с нулевого индекса исходной презентации) в индекс 1 (позиция 2) целевой презентации.
// Создайте экземпляр класса Presentation для загрузки исходного файла презентации
Presentation srcPres = new Presentation("CloneAtEndOfAnother.pptx");
try {
// Создайте экземпляр класса Presentation для целевого PPTX (куда будет клонироваться слайд)
Presentation destPres = new Presentation();
try {
// Клонируйте нужный слайд из исходной презентации в конец коллекции слайдов целевой презентации
ISlideCollection slds = destPres.getSlides();
slds.insertClone(2, srcPres.getSlides().get_Item(0));
// Запишите целевую презентацию на диск
destPres.save("Aspose2_out.pptx", SaveFormat.Pptx);
} finally {
destPres.dispose();
}
} finally {
srcPres.dispose();
}
Клонирование слайда в конкретном положении в другой презентации
Если необходимо клонировать слайд вместе с мастер‑слайдом из одной презентации и использовать его в другой, сперва нужно склонировать нужный мастер‑слайд из исходной презентации в целевую. Затем используйте этот мастер‑слайд при клонировании слайда. Метод addClone(ISlide, IMasterSlide, boolean) ожидает мастер‑слайд из целевой презентации, а не из исходной. Чтобы клонировать слайд с мастером, выполните следующие шаги:
- Создайте экземпляр класса Presentation с исходной презентацией.
- Создайте экземпляр класса Presentation с целевой презентацией.
- Получите доступ к клонируемому слайду вместе с его мастер‑слайдом.
- Получите объект IMasterSlideCollection через коллекцию Masters целевой презентации.
- Вызовите метод addClone у объекта IMasterSlideCollection и передайте мастер‑слайд из исходного PPTX.
- Получите объект ISlideCollection через коллекцию Slides целевой презентации.
- Вызовите метод addClone у объекта ISlideCollection и передайте в него слайд из исходной презентации и мастер‑слайд.
- Сохраните изменённый файл целевой презентации.
В примере ниже мы клонировали слайд с мастером (находившийся на нулевом индексе исходной презентации) в конец целевой презентации, используя мастер‑слайд из исходного слайда.
// Создайте экземпляр класса Presentation для загрузки исходного файла презентации
Presentation srcPres = new Presentation("CloneToAnotherPresentationWithMaster.pptx");
try {
// Создайте экземпляр класса Presentation для целевой презентации (куда будет клонироваться слайд)
Presentation destPres = new Presentation();
try {
// Получите ISlide из коллекции слайдов исходной презентации вместе с
// Мастер‑слайдом
ISlide SourceSlide = srcPres.getSlides().get_Item(0);
IMasterSlide SourceMaster = SourceSlide.getLayoutSlide().getMasterSlide();
// Клонируйте нужный мастер‑слайд из исходной презентации в коллекцию мастеров в
// целевой презентации
IMasterSlideCollection masters = destPres.getMasters();
IMasterSlide DestMaster = SourceSlide.getLayoutSlide().getMasterSlide();
// Клонируйте нужный мастер‑слайд из исходной презентации в коллекцию мастеров в
// целевой презентации
IMasterSlide iSlide = masters.addClone(SourceMaster);
// Клонируйте нужный слайд из исходной презентации с выбранным мастером в конец
// коллекции слайдов в целевой презентации
ISlideCollection slds = destPres.getSlides();
slds.addClone(SourceSlide, iSlide, true);
// Сохраните целевую презентацию на диск
destPres.save("CloneToAnotherPresentationWithMaster_out.pptx", SaveFormat.Pptx);
} finally {
destPres.dispose();
}
} finally {
srcPres.dispose();
}
Клонирование слайда в конец указанного раздела
Если нужно клонировать слайд и разместить его в том же файле презентации, но в другом разделе, используйте метод addClone интерфейса ISlideCollection. Aspose.Slides for Android via Java позволяет клонировать слайд из первого раздела и вставить его во второй раздел той же презентации.
Следующий фрагмент кода демонстрирует, как клонировать слайд и вставить его в указанный раздел.
IPresentation presentation = new Presentation();
try {
presentation.getSlides().get_Item(0).getShapes().addAutoShape(ShapeType.Rectangle, 200, 50, 300, 100);
presentation.getSections().addSection("Section 1", presentation.getSlides().get_Item(0));
ISection section2 = presentation.getSections().appendEmptySection("Section 2");
presentation.getSlides().addClone(presentation.getSlides().get_Item(0), section2);
// Сохраните целевую презентацию на диск
presentation.save(dataDir + "CloneSlideIntoSpecifiedSection.pptx", SaveFormat.Pptx);
} finally {
if (presentation != null) presentation.dispose();
}
Часто задаваемые вопросы
Клонируются ли заметки к спикеру и комментарии рецензентов?
Да. Страницы заметок и комментарии включаются в клон. Если они не нужны, удалите их после вставки.
Как обрабатываются диаграммы и их источники данных?
Объект диаграммы, форматирование и встроенные данные копируются. Если диаграмма была связана с внешним источником (например, OLE‑встроенной книгой), связь сохраняется как OLE‑объект. После перемещения между файлами проверьте доступность данных и поведение обновления.
Можно ли управлять позицией вставки и разделами клона?
Да. Вы можете вставить клон в конкретный индекс слайда и поместить его в выбранный раздел. Если целевой раздел отсутствует, создайте его заранее и переместите слайд туда.