Удалить слайды из презентаций на PHP

Если слайд (или его содержимое) становится избыточным, вы можете удалить его. Aspose.Slides предоставляет класс Presentation, который инкапсулирует ISlideCollection, являющийся хранилищем всех слайдов в презентации. Используя указатели (ссылка или индекс) для известного объекта ISlide, вы можете указать слайд, который хотите удалить.

Удалить слайд по ссылке

  1. Создайте экземпляр класса Presentation.
  2. Получите ссылку на слайд, который хотите удалить, используя его ID или индекс.
  3. Удалите указанный слайд из презентации.
  4. Сохраните изменённую презентацию.

Этот PHP‑код показывает, как удалить слайд по ссылке:

  # Создайте объект Presentation, представляющий файл презентации
  $pres = new Presentation("demo.pptx");
  try {
    # Получает слайд по его индексу в коллекции слайдов
    $slide = $pres->getSlides()->get_Item(0);
    # Удаляет слайд по его ссылке
    $pres->getSlides()->remove($slide);
    # Сохраняет изменённую презентацию
    $pres->save("modified.pptx", SaveFormat::Pptx);
  } finally {
    $pres->dispose();
  }

Удалить слайд по индексу

  1. Создайте экземпляр класса Presentation.
  2. Удалите слайд из презентации, указав его позицию по индексу.
  3. Сохраните изменённую презентацию.

Этот PHP‑код показывает, как удалить слайд по индексу:

  # Создает объект Presentation, представляющий файл презентации
  $pres = new Presentation("demo.pptx");
  try {
    # Удаляет слайд по его индексу
    $pres->getSlides()->removeAt(0);
    # Сохраняет изменённую презентацию
    $pres->save("modified.pptx", SaveFormat::Pptx);
  } finally {
    $pres->dispose();
  }

Удалить неиспользуемые макетные слайды

Aspose.Slides предоставляет метод removeUnusedLayoutSlides (из класса Compress), позволяющий удалить нежелательные и неиспользуемые макетные слайды. Этот PHP‑код показывает, как удалить макетный слайд из презентации PowerPoint:

  $pres = new Presentation("pres.pptx");
  try {
    Compress->removeUnusedLayoutSlides($pres);
    $pres->save("pres-out.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

Удалить неиспользуемые мастер‑слайды

Aspose.Slides предоставляет метод removeUnusedMasterSlides (из класса Compress), позволяющий удалить нежелательные и неиспользуемые мастер‑слайды. Этот PHP‑код показывает, как удалить мастер‑слайд из презентации PowerPoint:

  $pres = new Presentation("pres.pptx");
  try {
    Compress->removeUnusedMasterSlides($pres);
    $pres->save("pres-out.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($pres)) {
      $pres->dispose();
    }
  }

FAQ

Что происходит с индексами слайдов после их удаления?

После удаления коллекция slidecollection переиндексирует слайды: каждый последующий слайд смещается влево на одну позицию, поэтому предыдущие номера индексов становятся недействительными. Если вам нужен стабильный указатель, используйте постоянный ID слайда вместо его индекса.

Отличается ли ID слайда от его индекса и меняется ли он при удалении соседних слайдов?

Да. Индекс — это позиция слайда, и он меняется при добавлении или удалении слайдов. ID слайда — постоянный идентификатор и не меняется, когда удаляются другие слайды.

Как удаление слайда влияет на секции слайдов?

Если слайд принадлежал секции, в этой секции просто останется на один слайд меньше. Структура секций сохраняется; если секция становится пустой, вы можете remove or reorganize sections по необходимости.

Что происходит с приметками и комментариями, прикреплёнными к слайду, при его удалении?

Notes и comments привязаны к конкретному слайду и удаляются вместе с ним. Содержание остальных слайдов не затрагивается.

В чём разница между удалением слайдов и очисткой неиспользуемых макетов/мастеров?

Удаление устраняет конкретные обычные слайды из набора. Очистка неиспользуемых макетов/мастеров удаляет шаблоны или мастер‑слайды, на которые больше ничего не ссылается, сокращая размер файла без изменения содержимого оставшихся слайдов. Эти действия дополняют друг друга: обычно сначала удаляют слайды, затем очищают неиспользуемые макеты и мастеры.