Применение защиты к презентации
Один из распространенных способов использования Aspose.Slides заключается в создании, обновлении и сохранении презентаций Microsoft PowerPoint 2007 (PPTX) в рамках автоматизированного рабочего процесса. Пользователи приложения, использующего Aspose.Slides таким образом, получают доступ к выходным презентациям. Защита их от редактирования является общей проблемой. Важно, чтобы автоматически сгенерированные презентации сохраняли свое исходное форматирование и содержимое.
В этой статье объясняется, как конструируются презентации и слайды и как Aspose.Slides для PHP через Java может применить защиту к, а затем удалить ее из презентации. Эта функция уникальна для Aspose.Slides и на момент написания недоступна в Microsoft PowerPoint. Она предоставляет разработчикам способ контролировать, как используются презентации, создаваемые их приложениями.
Состав слайда
Слайд PPTX состоит из множества компонентов, таких как автофигуры, таблицы, OLE-объекты, сгруппированные фигуры, рамки для изображений, видеокадры, соединители и различные другие элементы, доступные для создания презентации. В Aspose.Slides для PHP через Java каждый элемент на слайде превращается в объект Shape. Другими словами, каждый элемент на слайде является либо объектом Shape, либо объектом, производным от объекта Shape. Структура PPTX сложна, поэтому, в отличие от PPT, где можно использовать универсальную блокировку для всех типов фигур, для разных типов фигур существуют разные виды блокировок. Класс BaseShapeLock является универсальным классом блокировки PPTX. В Aspose.Slides для PHP через Java поддерживаются следующие типы блокировок для PPTX.
- AutoShapeLock блокирует автофигуры.
- ConnectorLock блокирует соединительные фигуры.
- GraphicalObjectLock блокирует графические объекты.
- GroupshapeLock блокирует групповые фигуры.
- PictureFrameLock блокирует рамки для изображений. Любое действие, выполняемое над всеми объектами Shape в объекте Presentation, применяется ко всей презентации.
Применение и удаление защиты
Применение защиты гарантирует, что презентацию нельзя редактировать. Это полезная техника для защиты содержимого презентации.
Применение защиты к фигурам PPTX
Aspose.Slides для PHP через Java предоставляет класс Shape для обработки фигуры на слайде.
Как упоминалось ранее, для каждого класса формы есть соответствующий класс блокировки формы для защиты. Эта статья сосредоточена на блокировках NoSelect, NoMove и NoResize. Эти блокировки гарантируют, что фигуры нельзя выбрать (через щелчки мышью или другие методы выбора), а также нельзя перемещать или изменять размер.
Примеры кода, которые следуют, применяют защиту ко всем типам фигур в презентации.
try { | |
//Instatiate Presentation class that represents a PPTX file | |
Presentation pTemplate = new Presentation("RectPicFrame.pptx"); | |
//ISlide object for accessing the slides in the presentation | |
ISlide slide = pTemplate.getSlides().get_Item(0); | |
//IShape object for holding temporary shapes | |
IShape shape; | |
//Traversing through all the slides in the presentation | |
for (int slideCount = 0; slideCount < pTemplate.getSlides().size(); slideCount++) | |
{ | |
slide = pTemplate.getSlides().get_Item(slideCount); | |
//Travesing through all the shapes in the slides | |
for (int count = 0; count < slide.getShapes().size(); count++) | |
{ | |
shape = slide.getShapes().get_Item(count); | |
//if shape is autoshape | |
if (shape instanceof IAutoShape) | |
{ | |
//Type casting to Auto shape and getting auto shape lock | |
IAutoShape Ashp = (IAutoShape)shape; | |
IAutoShapeLock AutoShapeLock = (IAutoShapeLock) Ashp.getShapeLock(); | |
//Applying shapes locks | |
AutoShapeLock.setPositionLocked(true); | |
AutoShapeLock.setSelectLocked(true); | |
AutoShapeLock.setSizeLocked(true); | |
} | |
//if shape is group shape | |
else if (shape instanceof IGroupShape) | |
{ | |
//Type casting to group shape and getting group shape lock | |
IGroupShape Group = (IGroupShape)shape; | |
IGroupShapeLock groupShapeLock = (IGroupShapeLock) Group.getShapeLock(); | |
//Applying shapes locks | |
groupShapeLock.setGroupingLocked(true); | |
groupShapeLock.setPositionLocked(true); | |
groupShapeLock.setSelectLocked(true); | |
groupShapeLock.setSizeLocked(true); | |
} | |
//if shape is a connector | |
else if (shape instanceof IConnector) | |
{ | |
//Type casting to connector shape and getting connector shape lock | |
IConnector Conn = (IConnector)shape; | |
IConnectorLock ConnLock = Conn.getShapeLock(); | |
//Applying shapes locks | |
ConnLock.setPositionMove(true); | |
ConnLock.setSelectLocked(true); | |
ConnLock.setSizeLocked(true); | |
} | |
//if shape is picture frame | |
else if (shape instanceof IPictureFrame) | |
{ | |
//Type casting to pitcture frame shape and getting picture frame shape lock | |
IPictureFrame Pic = (IPictureFrame)shape; | |
IPictureFrameLock PicLock = (IPictureFrameLock) Pic.getShapeLock(); | |
//Applying shapes locks | |
PicLock.setPositionLocked(true); | |
PicLock.setSelectLocked(true); | |
PicLock.setSizeLocked(true); | |
} | |
} | |
} | |
//Saving the presentation file | |
pTemplate.save("ProtectedSample.pptx", SaveFormat.Pptx); | |
} catch (Exception e) { | |
} |
Удаление защиты
Защита, примененная с помощью Aspose.Slides для .NET/Java, может быть удалена только с помощью Aspose.Slides для .NET/Java. Чтобы разблокировать фигуру, установите значение примененной блокировки в false. Пример кода, который следует, показывает, как разблокировать фигуры в заблокированной презентации.
try { | |
//Instatiate Presentation class that represents a PPTX file | |
Presentation pTemplate = new Presentation("ProtectedSample.pptx"); | |
//ISlide object for accessing the slides in the presentation | |
ISlide slide = pTemplate.getSlides().get_Item(0); | |
//IShape object for holding temporary shapes | |
IShape shape; | |
//Traversing through all the slides in the presentation | |
for (int slideCount = 0; slideCount < pTemplate.getSlides().size(); slideCount++) | |
{ | |
slide = pTemplate.getSlides().get_Item(slideCount); | |
//Travesing through all the shapes in the slides | |
for (int count = 0; count < slide.getShapes().size(); count++) | |
{ | |
shape = slide.getShapes().get_Item(count); | |
//if shape is autoshape | |
if (shape instanceof IAutoShape) | |
{ | |
//Type casting to Auto shape and getting auto shape lock | |
IAutoShape Ashp = (IAutoShape)shape; | |
IAutoShapeLock AutoShapeLock = (IAutoShapeLock) Ashp.getShapeLock(); | |
//Applying shapes locks | |
AutoShapeLock.setPositionLocked(false); | |
AutoShapeLock.setSelectLocked(false); | |
AutoShapeLock.setSizeLocked(false); | |
} | |
//if shape is group shape | |
else if (shape instanceof IGroupShape) | |
{ | |
//Type casting to group shape and getting group shape lock | |
IGroupShape Group = (IGroupShape)shape; | |
IGroupShapeLock groupShapeLock = (IGroupShapeLock) Group.getShapeLock(); | |
//Applying shapes locks | |
groupShapeLock.setGroupingLocked(false); | |
groupShapeLock.setPositionLocked(false); | |
groupShapeLock.setSelectLocked(false); | |
groupShapeLock.setSizeLocked(false); | |
} | |
//if shape is a connector | |
else if (shape instanceof IConnector) | |
{ | |
//Type casting to connector shape and getting connector shape lock | |
IConnector Conn = (IConnector)shape; | |
IConnectorLock ConnLock = Conn.getShapeLock(); | |
//Applying shapes locks | |
ConnLock.setPositionMove(false); | |
ConnLock.setSelectLocked(false); | |
ConnLock.setSizeLocked(false); | |
} | |
//if shape is picture frame | |
else if (shape instanceof IPictureFrame) | |
{ | |
//Type casting to pitcture frame shape and getting picture frame shape lock | |
IPictureFrame Pic = (IPictureFrame)shape; | |
IPictureFrameLock PicLock = (IPictureFrameLock) Pic.getShapeLock(); | |
//Applying shapes locks | |
PicLock.setPositionLocked(false); | |
PicLock.setSelectLocked(false); | |
PicLock.setSizeLocked(false); | |
} | |
} | |
} | |
//Saving the presentation file | |
pTemplate.save("RemoveProtectionSample.pptx", SaveFormat.Pptx); | |
} catch (Exception e) { | |
} | |