Предотвращение редактирования презентаций с помощью блокировок фигур в Python

Обзор

Распространённое применение Aspose.Slides — создание, обновление и сохранение презентаций Microsoft PowerPoint (PPTX) в рамках автоматизированного рабочего процесса. Пользователи приложений, использующих Aspose.Slides таким образом, имеют доступ к сгенерированным презентациям, поэтому защита их от редактирования является актуальной проблемой. Важно, чтобы автоматически созданные презентации сохраняли своё оригинальное форматирование и содержимое.

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

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

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

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

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

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

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

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

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

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

Пример кода ниже применяет защиту ко всем типам фигур в презентации.

import aspose.slides as slides

# Создайте объект класса Presentation, представляющий файл PPTX.
with slides.Presentation("Sample.pptx") as presentation:
    # Проходим все слайды в презентации.
    for slide in presentation.slides:
        # Проходим все фигуры на слайде.
        for shape in slide.shapes:
            if type(shape) is slides.AutoShape:
                shape.shape_lock.position_locked = True
                shape.shape_lock.select_locked = True
                shape.shape_lock.size_locked = True
            elif type(shape) is slides.GroupShape:
                shape.shape_lock.grouping_locked = True
                shape.shape_lock.position_locked = True
                shape.shape_lock.select_locked = True
                shape.shape_lock.size_locked = True
            elif type(shape) is slides.Connector:
                shape.shape_lock.position_move = True
                shape.shape_lock.select_locked = True
                shape.shape_lock.size_locked = True
            elif type(shape) is slides.PictureFrame:
                shape.shape_lock.position_locked = True
                shape.shape_lock.select_locked = True
                shape.shape_lock.size_locked = True
    # Сохраняем файл презентации.
    presentation.save("ProtectedSample.pptx", slides.export.SaveFormat.PPTX)

Удалить защиту

Чтобы разблокировать фигуру, установите значение соответствующего замка в False. В следующем примере кода показано, как разблокировать фигуры в заблокированной презентации.

import aspose.slides as slides

# Создайте объект класса Presentation, представляющий файл PPTX.
with slides.Presentation("ProtectedSample.pptx") as presentation:
    # Проходим все слайды в презентации.
    for slide in presentation.slides:
        # Проходим все фигуры на слайде.
        for shape in slide.shapes:
            if type(shape) is slides.AutoShape:
                shape.shape_lock.position_locked = False
                shape.shape_lock.select_locked = False
                shape.shape_lock.size_locked = False
            elif type(shape) is slides.GroupShape:
                shape.shape_lock.grouping_locked = False
                shape.shape_lock.position_locked = False
                shape.shape_lock.select_locked = False
                shape.shape_lock.size_locked = False
            elif type(shape) is slides.Connector:
                shape.shape_lock.position_move = False
                shape.shape_lock.select_locked = False
                shape.shape_lock.size_locked = False
            elif type(shape) is slides.PictureFrame:
                shape.shape_lock.position_locked = False
                shape.shape_lock.select_locked = False
                shape.shape_lock.size_locked = False
    # Сохраняем файл презентации.
    presentation.save("RemovedProtectionSample.pptx", slides.export.SaveFormat.PPTX)

Заключение

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

FAQ

Могу ли я комбинировать блокировки фигур и защиту паролем в одной презентации?

Да. Блокировки ограничивают редактирование объектов внутри файла, тогда как password protection контролирует доступ к открытию и/или сохранению изменений. Эти механизмы дополняют друг друга и работают совместно.

Могу ли я ограничить редактирование на отдельных слайдах, не затрагивая остальные?

Да. Примените блокировки к фигурам на выбранных слайдах; остальные слайды останутся редактируемыми.

Применяются ли блокировки фигур к сгруппированным объектам и соединителям?

Да. Для групп, соединителей, графических объектов и других типов фигур поддерживаются специальные типы блокировок.