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

Обзор

В этой статье объясняется, как получить доступ к конкретным слайдам в презентации PowerPoint с использованием Aspose.Slides for Python. Показано, как открыть презентацию, ссылаться на слайды по индексу или уникальному идентификатору и читать базовую информацию о слайде, необходимую для навигации внутри файла. С помощью этих техник вы можете надёжно находить точный слайд, который требуется просмотреть или обработать.

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

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

Класс Presentation (который представляет файл презентации) предоставляет доступ к слайдам через SlideCollection объектов Slide.

Следующий код Python демонстрирует, как получить доступ к слайду по его индексу:

import aspose.slides as slides

# Создать объект Presentation, представляющий файл презентации.
with slides.Presentation("sample.pptx") as presentation:
    # Получить слайд по его индексу.
    slide = presentation.slides[0]

Доступ к слайду по идентификатору

Каждому слайду в презентации присвоен уникальный идентификатор. Вы можете использовать метод get_slide_by_id (предоставляемый классом Presentation) для получения слайда по этому идентификатору.

Следующий код Python показывает, как указать действительный идентификатор слайда и получить доступ к нему через метод get_slide_by_id:

import aspose.slides as slides

# Создать объект Presentation, который представляет файл презентации.
with slides.Presentation("sample.pptx") as presentation:
    # Получить идентификатор слайда.
    id = presentation.slides[0].slide_id
    # Доступ к слайду по его идентификатору.
    slide = presentation.get_slide_by_id(id)

Изменение позиции слайда

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

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

Следующий код Python перемещает слайд с позиции 1 на позицию 2:

import aspose.slides as slides

# Создать объект Presentation, представляющий файл презентации.
with slides.Presentation("sample.pptx") as presentation:
    # Получить слайд, позицию которого нужно изменить.
    slide = presentation.slides[0]
    # Установить новую позицию для слайда.
    slide.slide_number = 2
    # Сохранить изменённую презентацию.
    presentation.save("slide_number.pptx", slides.export.SaveFormat.PPTX)

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

Установка номера слайда

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

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

Следующий код Python демонстрирует операцию, в которой номер первого слайда устанавливается в 10:

import aspose.slides as slides

# Создать объект Presentation, представляющий файл презентации.
with slides.Presentation("sample.pptx") as presentation:
    # Установить номер слайда.
    presentation.first_slide_number = 10
    # Сохранить изменённую презентацию.
    presentation.save("first_slide_number.pptx", slides.export.SaveFormat.PPTX)

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

import aspose.slides as slides

with slides.Presentation() as presentation:
    layout_slide = presentation.layout_slides.get_by_type(slides.SlideLayoutType.BLANK)
    presentation.slides.add_empty_slide(layout_slide)
    presentation.slides.add_empty_slide(layout_slide)
    presentation.slides.add_empty_slide(layout_slide)

    # Установить номер первого слайда в презентации.
    presentation.first_slide_number = 0

    # Показать номера слайдов для всех слайдов.
    presentation.header_footer_manager.set_all_slide_numbers_visibility(True)

    # Скрыть номер слайда на первом слайде.
    presentation.slides[0].header_footer_manager.set_slide_number_visibility(False)

    # Сохранить изменённую презентацию.
    presentation.save("first_slide_number.pptx", slides.export.SaveFormat.PPTX)

FAQ

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

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

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

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

Меняется ли индекс слайда, когда добавляются или удаляются другие слайды?

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