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

Введение

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Обеспечение совпадения размера слайдов

При клонировании слайдов в другую презентацию убедитесь, что у целевой презентации такой же размер слайда, как у исходной. Если размеры слайдов различаются, Aspose.Slides не масштабирует автоматически клонированные объекты — их исходные координаты и размеры сохраняются, что может привести к смещению содержимого или выходу его за границы слайда.

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

auto sourceSize = sourcePresentation->get_SlideSize()->get_Size();

targetPresentation->get_SlideSize()->SetSize(
    sourceSize.get_Width(), sourceSize.get_Height(), SlideSizeScaleType::DoNotScale);

Сделайте это перед клонированием мастера и слайда.

FAQ

Клонируются ли заметки выступающего и комментарии рецензента?

Да. Страницы заметок и комментарии включаются в клон. Если они не нужны, удалите их после вставки.

Как обрабатываются диаграммы и их источники данных?

Объект диаграммы, форматирование и встроенные данные копируются. Если диаграмма была связана с внешним источником (например, встроенной OLE‑книгой), эта связь сохраняется как OLE‑объект. После переноса между файлами проверьте доступность данных и поведение обновления.

Можно ли управлять позицией вставки и разделами клона?

Да. Вы можете вставить клон в конкретный индекс слайда и разместить его в выбранном разделе. Если целевой раздел не существует, сначала создайте его, а затем переместите слайд туда.