Доступ к слайдам презентации в PHP
Aspose.Slides позволяет получать доступ к слайдам двумя способами: по индексу и по идентификатору.
Доступ к слайду по индексу
Все слайды в презентации располагаются численно в порядке их позиции, начиная с 0. Первый слайд доступен по индексу 0; второй — по индексу 1; и т.д.
Класс Presentation, представляющий файл презентации, открывает все слайды как коллекцию ISlideCollection (коллекцию объектов ISlide). Этот PHP‑код показывает, как получить доступ к слайду по его индексу:
# Создает объект Presentation, представляющий файл презентации
$pres = new Presentation("demo.pptx");
try {
# Получает слайд по его индексу
$slide = $pres->getSlides()->get_Item(0);
} finally {
$pres->dispose();
}
Доступ к слайду по идентификатору
Каждому слайду в презентации присвоен уникальный идентификатор. Вы можете использовать метод 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();
}
Изменение позиции слайда
Aspose.Slides позволяет изменять позицию слайда. Например, можно указать, что первый слайд должен стать вторым.
- Создайте экземпляр класса Presentation.
- Получите ссылку на слайд (позицию которого нужно изменить) по его индексу
- Установите новую позицию для слайда через свойство setSlideNumber.
- Сохраните изменённую презентацию.
Этот 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();
}
Первый слайд стал вторым; второй стал первым. При изменении позиции слайда остальные слайды автоматически корректируются.
Установка номера слайда
С помощью свойства setFirstSlideNumber (предоставленного классом Presentation) можно задать новый номер первого слайда в презентации. Эта операция приводит к перерасчёту номеров остальных слайдов.
- Создайте экземпляр класса Presentation.
- Получите номер слайда.
- Установите номер слайда.
- Сохраните изменённую презентацию.
Этот 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 презентации.
Влияют ли скрытые слайды на индексацию?
Да. Скрытый слайд остаётся в коллекции и учитывается при индексации; «скрытый» относится к отображению, а не к его позиции в коллекции.
Меняется ли индекс слайда, когда добавляются или удаляются другие слайды?
Да. Индексы всегда отражают текущий порядок слайдов и пересчитываются при вставке, удалении и перемещении.