Ограничение редактирования презентаций блокировкой фигур в Python
Предыстория
Распространённое применение Aspose.Slides for Python via .NET — создание, обновление и сохранение презентаций PowerPoint (PPTX) в рамках автоматизированного рабочего процесса. Когда пользователи получают такие презентации, ограничение изменений фигур помогает сохранить задуманную компоновку и содержимое.
В этой статье объясняется, как фигурки организованы на слайдах и как применить и удалить блокировки фигур в презентации PPTX. Эти блокировки позволяют ограничить определённые операции редактирования отдельных фигур.
Состав слайда
Слайд презентации состоит из компонентов, таких как автограммы, таблицы, OLE‑объекты, группированные фигуры, рамки изображений, видеорамки, соединители и другие элементы, используемые при построении презентации. В Aspose.Slides for Python via .NET каждый элемент на слайде представлен объектом, наследующим класс Shape .
Разные типы фигур предоставляют различные варианты блокировки. Класс BaseShapeLock является базовым классом для блокировок фигур. Aspose.Slides for Python via .NET предоставляет следующие классы блокировок:
- AutoShapeLock блокирует автограммы.
- ConnectorLock блокирует соединительные фигуры.
- GraphicalObjectLock блокирует графические объекты.
- GroupShapeLock блокирует групповые фигуры.
- PictureFrameLock блокирует рамки изображений.
Чтобы применить блокировки ко всей Presentation, пройдите по её слайдам и установите соответствующие блокировки для каждой поддерживаемой фигуры.
Применение и удаление защиты
Блокировки фигур ограничивают такие операции, как выбор, перемещение и изменение размеров фигур. Они не делают всю презентацию недоступной для редактирования.
Применение защиты к объектам PPTX
Aspose.Slides for Python via .NET предоставляет класс Shape , позволяющий работать с фигурами на слайде.
В примере свойства select_locked, position_locked и size_locked устанавливаются в True для автограмм, с аналогичными блокировками для групповых фигур, соединителей и рамок изображений. Соединители используют position_move для перемещения; группы также используют grouping_locked , чтобы ограничить группировку.
Пример загружает существующую PPTX‑презентацию, проверяет фигуры в коллекции фигур каждого слайда и сохраняет копию с применёнными ограничениями. Фигуры, не относящиеся к четырём поддерживаемым типам, остаются без изменений. Цикл не проходит по вложенным фигурам внутри группы.
import aspose.slides as slides
with slides.Presentation("Sample.pptx") as presentation:
for slide in presentation.slides:
for shape in slide.shapes:
if isinstance(shape, slides.AutoShape):
shape.shape_lock.position_locked = True
shape.shape_lock.select_locked = True
shape.shape_lock.size_locked = True
elif isinstance(shape, 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 isinstance(shape, slides.Connector):
shape.shape_lock.position_move = True
shape.shape_lock.select_locked = True
shape.shape_lock.size_locked = True
elif isinstance(shape, 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. В следующем примере загружается презентация с блокировками фигур и очищаются ограничения выбора, перемещения и изменения размеров через AutoShapeLock, GroupShapeLock, ConnectorLock и PictureFrameLock. Также очищается GroupShapeLock.grouping_locked и сохраняется копия презентации. Другие настройки блокировок оставляются без изменений.
import aspose.slides as slides
with slides.Presentation("ProtectedSample.pptx") as presentation:
for slide in presentation.slides:
for shape in slide.shapes:
if isinstance(shape, slides.AutoShape):
shape.shape_lock.position_locked = False
shape.shape_lock.select_locked = False
shape.shape_lock.size_locked = False
elif isinstance(shape, 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 isinstance(shape, slides.Connector):
shape.shape_lock.position_move = False
shape.shape_lock.select_locked = False
shape.shape_lock.size_locked = False
elif isinstance(shape, 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 for Python via .NET позволяет ограничивать конкретные операции редактирования отдельных фигур или применять одинаковые ограничения ко всем слайдам. Выбирайте блокировки, поддерживаемые типом каждой фигуры, и устанавливайте их значения в False, когда нужно снять эти ограничения.
Часто задаваемые вопросы
Можно ли комбинировать блокировки фигур и защиту паролем в одной презентации?
Да. Блокировки фигур ограничивают конкретные операции редактирования, тогда как защита паролем может ограничивать открытие или изменение презентации. Вы можете использовать оба способа в одном файле.
Можно ли ограничить редактирование на отдельных слайдах, не затрагивая остальные?
Да. Применяйте блокировки только к фигурам на выбранных слайдах. Это не меняет настройки блокировок на остальных слайдах.
Как применить блокировки к отдельным фигурам внутри группы?
Пройдите по коллекции shapes группы и примените соответствующие блокировки к каждой дочерней фигуре. Повторите это для любых вложенных групп. Приведённые выше примеры обрабатывают только коллекцию фигур слайда, поэтому они не устанавливают блокировки для отдельных членов группы.