Применение защиты к презентации

Состав слайда

Слайд PPTX состоит из ряда компонентов, таких как автофигуры, таблицы, OLE-объекты, сгруппированные фигуры, рамки для изображений, рамки для видео, соединители и различные другие элементы, доступные для создания презентации.

В Aspose.Slides для Python через .NET каждый элемент на слайде превращен в объект Shape. Другими словами, каждый элемент на слайде является либо объектом Shape, либо объектом, производным от объекта Shape.

Структура PPTX сложна, поэтому в отличие от PPT, где можно использовать общий замок для всех типов фигур, существуют разные типы замков для разных типов фигур. Класс BaseShapeLock — это общий класс блокировки PPTX. В Aspose.Slides для Python через .NET поддерживаются следующие типы блокировок для PPTX:

  • AutoShapeLock блокирует автофигуры.
  • ConnectorLock блокирует соединительные фигуры.
  • GraphicalObjectLock блокирует графические объекты.
  • GroupshapeLock блокирует групповые фигуры.
  • PictureFrameLock блокирует рамки для изображений.

Любое действие, выполняемое над всеми объектами Shape в объекте Presentation, применяется ко всей презентации.

Применение и удаление защиты

Применение защиты обеспечивает невозможность редактирования презентации. Это полезная техника для защиты содержания презентации.

Применение защиты к фигурам PPTX

Aspose.Slides для Python через .NET предоставляет класс Shape для работы с фигурой на слайде.

Как упоминалось ранее, каждому классу фигуры соответствует связанный класс блокировки фигуры для защиты. Эта статья сосредоточена на блокировках NoSelect, NoMove и NoResize. Эти блокировки обеспечивают невозможность выбора фигур (через клики мыши или другие методы выбора), а также их перемещения или изменения размера.

Следующие примеры кода применяют защиту ко всем типам фигур в презентации.

import aspose.slides as slides

#Создание экземпляра класса Presentation, который представляет файл PPTX
with slides.Presentation(path + "RectPicFrame.pptx") as pres:
    #Объект ISlide для доступа к слайдам в презентации
    slide = pres.slides[0]

    #Перебор всех слайдов в презентации
    for slide in pres.slides:
        for shape in slide.shapes:
            #если фигура является автофигурой
            if type(shape) is slides.AutoShape:
                auto_shape_lock = shape.shape_lock

                #Применение замков к фигурам
                auto_shape_lock.position_locked = True
                auto_shape_lock.select_locked = True
                auto_shape_lock.size_locked = True

            #если фигура является групповой фигурой
            elif type(shape) is slides.GroupShape:
                group_shape_lock = shape.shape_lock

                #Применение замков к фигурам
                group_shape_lock.grouping_locked = True
                group_shape_lock.position_locked = True
                group_shape_lock.select_locked = True
                group_shape_lock.size_locked = True

            #если фигура является соединителем
            elif type(shape) is slides.Connector:
                connector_lock = shape.shape_lock

                #Применение замков к фигурам
                connector_lock.position_move = True
                connector_lock.select_locked = True
                connector_lock.size_locked = True
            #если фигура является рамкой для изображения
            elif type(shape) is slides.PictureFrame:
                #Приведение к типу рамки для изображения и получение замка для рамки
                picture_lock = shape.shape_lock

                #Применение замков к фигурам
                picture_lock.position_locked = True
                picture_lock.select_locked = True
                picture_lock.size_locked = True

    #Сохранение файла презентации
    pres.save("ProtectedSample.pptx", slides.export.SaveFormat.PPTX)

Удаление защиты

Защита, применяемая с помощью Aspose.Slides для Python через .NET, может быть удалена только с помощью Aspose.Slides для Python через .NET. Чтобы разблокировать фигуру, установите значение примененной блокировки в false. Пример кода ниже показывает, как разблокировать фигуры в защищенной презентации.

import aspose.slides as slides

#Открытие нужной презентации
with slides.Presentation("ProtectedSample.pptx") as pres:
    for slide in pres.slides:
        for shape in slide.shapes:
            
            if type(shape) is slides.AutoShape: 
                auto_shape_lock = shape.shape_lock

                #Применение замков к фигурам
                auto_shape_lock.position_locked = False
                auto_shape_lock.select_locked = False
                auto_shape_lock.size_locked = False
            
            elif type(shape) is slides.GroupShape:  
                group_shape_lock = shape.shape_lock

                #Применение замков к фигурам
                group_shape_lock.grouping_locked = False
                group_shape_lock.position_locked = False
                group_shape_lock.select_locked = False
                group_shape_lock.size_locked = False
            elif type(shape) is slides.Connector:
                connector_lock = shape.shape_lock

                #Применение замков к фигурам
                connector_lock.position_move = False
                connector_lock.select_locked = False
                connector_lock.size_locked = False
            elif type(shape) is slides.PictureFrame:
                picture_lock = shape.shape_lock

                #Применение замков к фигурам
                picture_lock.position_locked = False
                picture_lock.select_locked = False
                picture_lock.size_locked = False
    #Сохранение файла презентации
    pres.save("RemoveProtectionSample.pptx", slides.export.SaveFormat.PPTX)

Резюме