Доступ к слайдам презентации в PHP

Aspose.Slides позволяет получать доступ к слайдам двумя способами: по индексу и по идентификатору.

Access a Slide by Index

Все слайды в презентации упорядочены численно в зависимости от позиции слайда, начиная с 0. Первый слайд доступен по индексу 0; второй слайд доступен по индексу 1; и т.д.

Класс Presentation, представляющий файл презентации, предоставляет все слайды как коллекцию SlideCollection (коллекцию объектов Slide). Этот PHP‑код показывает, как получить доступ к слайду по его индексу:

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

Access a Slide by ID

Каждому слайду в презентации присвоен уникальный идентификатор. Вы можете использовать метод getSlideById (представленный классом Presentation), чтобы обратиться к этому идентификатору. Этот PHP‑код показывает, как задать корректный идентификатор слайда и получить доступ к слайду через метод getSlideById:

  # Создаёт объект Presentation, представляющий файл презентации
  $pres = new Presentation("demo.pptx");
  try {
    # Получает ID слайда
    $id = $pres->getSlides()->get_Item(0)->getSlideId();
    # Получает доступ к слайду по его ID
    $slide = $pres->getSlideById($id);
  } finally {
    $pres->dispose();
  }

Change the Slide Position

Aspose.Slides позволяет изменять позицию слайда. Например, вы можете указать, чтобы первый слайд стал вторым.

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

Этот PHP‑код демонстрирует операцию, при которой слайд в позиции 1 перемещается в позицию 2:

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

Первый слайд стал вторым; второй слайд стал первым. При изменении позиции слайда остальные слайды автоматически корректируются.

Set the Slide Number

С помощью метода setFirstSlideNumber (представленного классом Presentation) вы можете задать новый номер для первого слайда в презентации. Эта операция приводит к пересчёту номеров остальных слайдов.

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

Этот PHP‑код демонстрирует операцию, при которой номер первого слайда установлен в 10:

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

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

  $presentation = new Presentation();
  try {
    $layoutSlide = $presentation->getLayoutSlides()->getByType(SlideLayoutType::Blank);
    $presentation->getSlides()->addEmptySlide($layoutSlide);
    $presentation->getSlides()->addEmptySlide($layoutSlide);
    $presentation->getSlides()->addEmptySlide($layoutSlide);
    # Устанавливает номер для первого слайда презентации
    $presentation->setFirstSlideNumber(0);
    # Отображает номера слайдов для всех слайдов
    $presentation->getHeaderFooterManager()->setAllSlideNumbersVisibility(true);
    # Скрывает номер слайда для первого слайда
    $presentation->getSlides()->get_Item(0)->getHeaderFooterManager()->setSlideNumberVisibility(false);
    # Сохраняет изменённую презентацию
    $presentation->save("output.pptx", SaveFormat::Pptx);
  } finally {
    if (!java_is_null($presentation)) {
      $presentation->dispose();
    }
  }

FAQ

Совпадает ли номер слайда, видимый пользователем, с нулевым индексом коллекции?

Номер, отображаемый на слайде, может начинаться с произвольного значения (например, 10) и не обязан совпадать с индексом; связь контролируется настройкой first slide number презентации.

Влияют ли скрытые слайды на индексацию?

Да. Скрытый слайд остаётся в коллекции и учитывается при индексации; «скрытый» относится к отображению, а не к его позиции в коллекции.

Меняется ли индекс слайда при добавлении или удалении других слайдов?

Да. Индексы всегда отражают текущий порядок слайдов и пересчитываются при вставке, удалении и перемещении.