Управление слайд-мастерами PowerPoint в Python

Обзор

Slide Master — это шаблон слайда, который определяет макет, стили, тему, шрифты, фон и другие свойства слайдов в презентации. Если вы хотите создать презентацию (или серию презентаций) с одинаковым стилем и шаблоном для вашей компании, вы можете использовать Slide Master.

Slide Master полезен тем, что позволяет задать и изменить внешний вид всех слайдов презентации одновременно. Aspose.Slides поддерживает механизм Slide Master PowerPoint.

VBA также позволяет управлять Slide Master и выполнять те же операции, что поддерживает PowerPoint: изменять фон, добавлять фигуры, настраивать макеты и т.д. Aspose.Slides предоставляет гибкие API, которые позволяют работать с Slide Master и выполнять типичные задачи.

Это базовые операции с Slide Master:

  • Создать Slide Master.
  • Применить Slide Master к слайдам презентации.
  • Изменить фон Slide Master.
  • Добавить изображение, заполнитель, SmartArt и т.п. к Slide Master.

Это более продвинутые операции, связанные с Slide Master:

  • Сравнивать Slide Master.
  • Объединять Slide Master.
  • Применять несколько Slide Master.
  • Копировать слайд вместе с его Slide Master в другую презентацию.
  • Выявлять дублирующиеся Slide Master в презентациях.
  • Установить Slide Master как представление презентации по умолчанию.

Как применяется Slide Master

Перед тем как работать с Slide Master, вам может быть полезно понять, как Slide Master используются в презентациях и применяются к слайдам.

  • Каждая презентация имеет как минимум один Slide Master по умолчанию.
  • Презентация может содержать несколько Slide Master. Вы можете добавить несколько Slide Master и использовать их для стилизации разных частей презентации разными способами.

В Aspose.Slides Slide Master представлен типом MasterSlide.

Объект Aspose.Slides Presentation содержит коллекцию masters типа MasterSlideCollection, в которой хранятся все мастер‑слайды, определённые в презентации.

Помимо CRUD‑операций, класс MasterSlideCollection предоставляет полезные методы, такие как add_clone и insert_clone. Они расширяют базовую функциональность клонирования слайдов и, при работе с Slide Master, позволяют реализовать более сложные настройки.

Когда в презентацию добавляется новый слайд, к нему автоматически применяется Slide Master. По умолчанию выбирается Slide Master предыдущего слайда.

Примечание: Слайды презентации хранятся в коллекции slides, и каждый новый слайд добавляется в конец этой коллекции по умолчанию. Если в презентации присутствует единственный Slide Master, он будет выбран для всех новых слайдов. По этой причине вам не нужно указывать Slide Master для каждого создаваемого слайда.

Тот же принцип работает в PowerPoint и Aspose.Slides. Например, в PowerPoint, когда вы добавляете новый слайд, вы можете кликнуть область под последним слайдом, и будет создан новый слайд (использующий Slide Master предыдущего слайда).

todo:image_alt_text

В Aspose.Slides вы можете выполнить эквивалентную задачу, используя метод add_clone(ISlide) класса SlideCollection.

Slide Master в иерархии Slides

Использование Slide Layouts совместно с Slide Master предоставляет максимальную гибкость. Slide Layout может определять те же типы стилей, что и Slide Master (фон, шрифты, фигуры и т.д.). Когда под Slide Master определено несколько Slide Layout, они совместно образуют единую систему стилей. Применяя Slide Layout к отдельному слайду, вы можете корректировать его стиль относительно того, что предоставляет Slide Master.

Приоритет следующий: Slide MasterSlide LayoutSlide.

todo:image_alt_text

Каждый объект MasterSlide имеет свойство layout_slides, содержащее список макетов слайдов. У объекта Slide есть свойство layout_slide, которое ссылается на применённый к нему макет слайда. Взаимодействие между слайдом и Slide Master происходит через его Slide Layout.

Из чего состоит Slide Master

Чтобы понять, как можно изменять Slide Master, необходимо знать его компоненты. Это основные свойства MasterSlide:

  • background — получает/устанавливает фон слайда.
  • body_style — получает/устанавливает стили текста тела слайда.
  • shapes — получает/устанавливает все фигуры на Slide Master (заполнители, рамки изображений и т.д.).
  • controls — получает/устанавливает элементы управления ActiveX.
  • theme_manager — получает менеджер темы.
  • header_footer_manager — получает менеджер верхнего и нижнего колонтитула.

Методы Slide Master:

  • get_depending_slides() — возвращает все слайды, зависящие от данного Slide Master.
  • apply_external_theme_to_depending_slides(fname) — создаёт новый Slide Master на основе текущего и внешней темы, затем применяет новый Slide Master ко всем зависимым слайдам.

Получить Slide Master

В PowerPoint доступ к Slide Master осуществляется через ViewSlide Master:

todo:image_alt_text

С помощью Aspose.Slides вы можете получить Slide Master следующим образом:

import aspose.slides as slides

with slides.Presentation() as presentation:
    # Получить первый мастер‑слайд в презентации.
    master_slide = presentation.masters[0]

Класс MasterSlide представляет Slide Master. Свойство masters (это MasterSlideCollection) содержит все Slide Master, определённые в презентации.

Добавить изображение в Slide Master

Когда вы добавляете изображение в Slide Master, оно появляется на всех слайдах, зависящих от данного мастера.

Например, разместите логотип вашей компании или другие изображения на Slide Master, затем вернитесь в обычный режим просмотра. Вы увидите изображение на каждом зависимом слайде.

todo:image_alt_text

Вы можете добавить изображения в Slide Master с помощью Aspose.Slides:

import aspose.slides as slides

with slides.Presentation() as presentation:

    with open("image.png", "rb") as image_stream:
        image = presentation.images.add_image(image_stream.read())

    master_slide = presentation.masters[0]
    master_slide.shapes.add_picture_frame(slides.ShapeType.RECTANGLE, 10, 10, 100, 100, image)

    presentation.save("presentation.pptx", slides.export.SaveFormat.PPTX)

Добавить заполнитель в Slide Master

Эти текстовые поля — стандартные заполнители на Slide Master:

  • Click to edit Master title style
  • Edit Master text styles
  • Second level
  • Third level

Эти заполнители также отображаются на слайдах, основанных на Slide Master. Вы можете редактировать их на Slide Master, и изменения автоматически применятся к слайдам.

В PowerPoint добавить заполнитель можно через Slide MasterInsert Placeholder:

todo:image_alt_text

Рассмотрим более сложный пример заполнителей в Aspose.Slides. Предположим, есть слайд с заполнителями, унаследованными от Slide Master:

todo:image_alt_text

Нужно обновить форматирование заголовка и подзаголовка на Slide Master следующим образом:

todo:image_alt_text

Сначала получаем заполнитель заголовка из Slide Master, затем используем свойство PlaceHolder.fill_format:

# Получить ссылку на заполнитель заголовка мастер‑слайда.
title_placeholder = master_slide.shapes[0]

# Установить тип заливки градиентом.
title_placeholder.fill_format.fill_type = slides.FillType.GRADIENT
title_placeholder.fill_format.gradient_format.gradient_stops.add(0, draw.Color.red)
title_placeholder.fill_format.gradient_format.gradient_stops.add(50, draw.Color.green)
title_placeholder.fill_format.gradient_format.gradient_stops.add(100, draw.Color.blue)

Стиль и форматирование заголовка изменятся на всех слайдах, основанных на Slide Master:

todo:image_alt_text

Изменить фон Slide Master

Когда вы меняете цвет фона Slide Master, все обычные слайды в презентации наследуют новый цвет. Ниже приведён пример кода на Python:

master_slide.background.type = slides.BackgroundType.OWN_BACKGROUND
master_slide.background.fill_format.fill_type = slides.FillType.SOLID
master_slide.background.fill_format.solid_fill_color.color = draw.Color.gray

Добавить несколько Slide Masters в презентацию

Aspose.Slides позволяет добавлять несколько Slide Master и Slide Layout в любую презентацию. Это даёт возможность настраивать стили, макеты и параметры форматирования слайдов разными способами.

В PowerPoint новые Slide Master и Slide Layout можно добавить через меню Slide Master следующим образом:

todo:image_alt_text

С помощью Aspose.Slides вы можете добавить новый Slide Master, вызвав метод add_clone:

# Добавить новый мастер‑слайд.
master_slide2 = presentation.masters.add_clone(master_slide1)

Сравнить Slide Masters

Slide Master наследует класс BaseSlide, который включает метод equals(slide) для сравнения слайдов. Этот метод возвращает true, когда Slide Masters идентичны по структуре и статическому содержимому.

Два Slide Master считаются равными, если их фигуры, стили, тексты, анимации и другие настройки совпадают. При сравнении игнорируются уникальные идентификаторы (например, slide_id) и динамическое содержимое (например, текущая дата в заполнителе даты).

Установить Slide Master как представление презентации по умолчанию

Aspose.Slides позволяет установить Slide Master как представление презентации по умолчанию. Представление по умолчанию — это то, что пользователь видит первым при открытии презентации. Ниже пример на Python, показывающий, как установить Slide Master как представление по умолчанию:

import aspose.slides as slides

# Создать экземпляр класса Presentation, представляющего файл презентации.
with slides.Presentation() as presentation:
    # Установить представление по умолчанию как представление мастера слайдов.
    presentation.view_properties.last_view = slides.ViewType.SLIDE_MASTER_VIEW

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

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

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

import aspose.slides as slides

with slides.Presentation("presentation.pptx") as presentation:
    slides.lowcode.Compress.remove_unused_master_slides(presentation)
    presentation.save("presentation-out.pptx", slides.export.SaveFormat.PPTX)

FAQ

Что такое Slide Master в PowerPoint?

Slide Master — это шаблон слайда, который определяет макет, стили, темы, шрифты, фон и другие свойства слайдов в презентации. Он позволяет задать и изменить внешний вид всех слайдов презентации сразу.

Как Slide Masters связаны с Slide Layouts?

Slide Layouts работают совместно с Slide Master, обеспечивая гибкость в дизайне слайдов. Пока Slide Master задаёт глобальные стили и темы, Slide Layouts позволяют варьировать расположение контента. Иерархия выглядит так:

  • Slide Master → определяет глобальные стили.
  • Slide Layout → предоставляет различные варианты расположения контента.
  • Slide → наследует дизайн от своего Slide Layout.

Можно ли иметь несколько Slide Masters в одной презентации?

Да, презентация может содержать несколько Slide Masters. Это позволяет стилизовать разные секции презентации различными способами, предоставляя гибкость в дизайне.

Как получить доступ к Slide Master и изменить его с помощью Aspose.Slides?

В Aspose.Slides Slide Master представлен классом MasterSlide. Вы можете получить Slide Master, используя свойство masters объекта Presentation.