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

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

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

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

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

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

Получить слайд по ID

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

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

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

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

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

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

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

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

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

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

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

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

// Создаёт объект Presentation, представляющий файл презентации
Presentation pres = new Presentation("HelloWorld.pptx");
try {
    // Получает номер слайда
    int firstSlideNumber = pres.getFirstSlideNumber();

    // Устанавливает номер слайда
    pres.setFirstSlideNumber(10);
	
	// Сохраняет изменённую презентацию
    pres.save("Set_Slide_Number_out.pptx", SaveFormat.Pptx);
} finally {
    pres.dispose();
}

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

Presentation presentation = new Presentation();
try {
    ILayoutSlide 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 (presentation != null) presentation.dispose();
}

FAQ

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

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

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

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

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

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