تطبيق الحماية على العرض التقديمي

تكوين الشريحة

تتكون شريحة PPTX من عدد من المكونات مثل الأشكال التلقائية، الجداول، عناصر OLE، الأشكال المجمعة، إطارات الصور، إطارات الفيديو، الموصلات والعناصر الأخرى المختلفة المتاحة لبناء عرض تقديمي.

في Aspose.Slides لـ C++، يتم تحويل كل عنصر على الشريحة إلى كائن Shape. بعبارة أخرى، كل عنصر على الشريحة هو إما كائن Shape أو كائن مشتق من كائن Shape.

هيكل PPTX معقد، لذلك على عكس PPT، حيث يمكن استخدام قفل عام لجميع أنواع الأشكال، هناك أنواع مختلفة من الأقفال لنوع الشكل المختلف. فئة BaseShapeLock هي فئة القفل العامة لـ PPTX. الأنواع التالية من الأقفال مدعومة في Aspose.Slides لـ C++ لـ PPTX.

  • AutoShapeLock يقفل الأشكال التلقائية.
  • ConnectorLock يقفل الأشكال الموصل.
  • GraphicalObjectLock يقفل كائنات رسومية.
  • GroupshapeLock يقفل الأشكال المجمعة.
  • PictureFrameLock يقفل إطارات الصور.

أي إجراء يتم تنفيذه على جميع كائنات Shape في كائن عرض تقديمي يُطبق على العرض التقديمي بالكامل.

تطبيق وإزالة الحماية

تطبيق الحماية يضمن أن العرض التقديمي لا يمكن تحريره. إنها تقنية مفيدة لحماية محتوى العرض التقديمي.

تطبيق الحماية على أشكال PPTX

يوفر Aspose.Slides لـ C++ فئة Shape للتعامل مع شكل على الشريحة.

كما ذُكر سابقًا، لكل فئة شكل فئة قفل شكل مرتبطة بها للحماية. تركز هذه المقالة على أقفال NoSelect وNoMove وNoResize. تضمن هذه الأقفال أنه لا يمكن تحديد الأشكال (من خلال النقرات بالماوس أو طرق التحديد الأخرى)، ولا يمكن نقلها أو تغيير حجمها.

تطبق عينات الشفرة التالية الحماية على جميع أنواع الأشكال في عرض تقديمي.

// The path to the documents directory.
const String templatePath = u"../templates/RectPicFrame.pptx";
const String outPath = u"../out/ProtectedSample.pptx";
//Instatiate Presentation class that represents a PPTX
SharedPtr<Presentation> pres = MakeObject<Presentation>(templatePath);
//ISlide object for accessing the slides in the presentation
SharedPtr<ISlide> slide = pres->get_Slides()->idx_get(0);
//IShape object for holding temporary shapes
SharedPtr<IShape> shape;
//Traversing through all the slides in the presentation
for (int slideCount = 0; slideCount < pres->get_Slides()->get_Count(); slideCount++)
{
slide = pres->get_Slides()->idx_get(slideCount);
//Travesing through all the shapes in the slides
for (int count = 0; count < slide->get_Shapes()->get_Count(); count++)
{
shape = slide->get_Shapes()->idx_get(count);
if (System::ObjectExt::Is<IAutoShape>(shape)) {
//Type casting to Auto shape and getting auto shape lock
SharedPtr<IAutoShape> aShp = DynamicCast<Aspose::Slides::IAutoShape>(shape);
SharedPtr<IAutoShapeLock> autoShapeLock = DynamicCast<Aspose::Slides::IAutoShapeLock>(aShp->get_ShapeLock());
//Applying shapes locks
autoShapeLock->set_PositionLocked(true);
autoShapeLock->set_SelectLocked(true);
autoShapeLock->set_SizeLocked(true);
}
//if shape is group shape
else if (System::ObjectExt::Is<IGroupShape>(shape)) {
//Type casting to group shape and getting group shape lock
SharedPtr<IGroupShape> group = DynamicCast<Aspose::Slides::IGroupShape>(shape);
SharedPtr<IGroupShapeLock> groupShapeLock = DynamicCast<Aspose::Slides::IGroupShapeLock>(group->get_ShapeLock());
//Applying shapes locks
groupShapeLock->set_GroupingLocked(true);
groupShapeLock->set_PositionLocked(true);
groupShapeLock->set_SelectLocked(true);
groupShapeLock->set_SizeLocked(true);
}
//if shape is a connector
else if (System::ObjectExt::Is<IConnector>(shape)) {
//Type casting to connector shape and getting connector shape lock
SharedPtr<IConnector> conn = DynamicCast<Aspose::Slides::IConnector>(shape);
SharedPtr<IConnectorLock> connLock = DynamicCast<Aspose::Slides::IConnectorLock>(conn->get_ShapeLock());
//Applying shapes locks
connLock->set_PositionMove(true);
connLock->set_SelectLocked(true);
connLock->set_SizeLocked(true);
}
//if shape is picture frame
else if (System::ObjectExt::Is<IPictureFrame>(shape)) {
//Type casting to pitcture frame shape and getting picture frame shape lock
SharedPtr<IPictureFrame> pic = DynamicCast<Aspose::Slides::IPictureFrame>(shape);
SharedPtr<IPictureFrameLock> picLock = DynamicCast<Aspose::Slides::IPictureFrameLock>(pic->get_ShapeLock());
//Applying shapes locks
picLock->set_PositionLocked(true);
picLock->set_SelectLocked(true);
picLock->set_SizeLocked(true);
}
}
}
//Saving the presentation file
pres->Save(outPath, Aspose::Slides::Export::SaveFormat::Pptx);

إزالة الحماية

يمكن إزالة الحماية المطبقة باستخدام Aspose.Slides لـ C++ فقط بواسطة Aspose.Slides لـ C++. لإلغاء تأمين شكل، قم بتعيين قيمة القفل المطبق إلى false. تظهر عينة الشفرة التالية كيفية إلغاء تأمين الأشكال في عرض تقديمي مؤمن.

// The path to the documents directory.
const String templatePath = u"../templates/ProtectedSample.pptx";
const String outPath = u"../out/RemoveProtectionSample.pptx";
//Instatiate Presentation class that represents a PPTX
SharedPtr<Presentation> pres = MakeObject<Presentation>(templatePath);
//ISlide object for accessing the slides in the presentation
SharedPtr<ISlide> slide = pres->get_Slides()->idx_get(0);
//IShape object for holding temporary shapes
SharedPtr<IShape> shape;
//Traversing through all the slides in the presentation
for (int slideCount = 0; slideCount < pres->get_Slides()->get_Count(); slideCount++)
{
slide = pres->get_Slides()->idx_get(slideCount);
//Travesing through all the shapes in the slides
for (int count = 0; count < slide->get_Shapes()->get_Count(); count++)
{
shape = slide->get_Shapes()->idx_get(count);
if (System::ObjectExt::Is<IAutoShape>(shape)) {
//Type casting to Auto shape and getting auto shape lock
SharedPtr<IAutoShape> aShp = DynamicCast<Aspose::Slides::IAutoShape>(shape);
SharedPtr<IAutoShapeLock> autoShapeLock = DynamicCast<Aspose::Slides::IAutoShapeLock>(aShp->get_ShapeLock());
//Applying shapes locks
autoShapeLock->set_PositionLocked(false);
autoShapeLock->set_SelectLocked(false);
autoShapeLock->set_SizeLocked(false);
}
//if shape is group shape
else if (System::ObjectExt::Is<IGroupShape>(shape)) {
//Type casting to group shape and getting group shape lock
SharedPtr<IGroupShape> group = DynamicCast<Aspose::Slides::IGroupShape>(shape);
SharedPtr<IGroupShapeLock> groupShapeLock = DynamicCast<Aspose::Slides::IGroupShapeLock>(group->get_ShapeLock());
//Applying shapes locks
groupShapeLock->set_GroupingLocked(false);
groupShapeLock->set_PositionLocked(false);
groupShapeLock->set_SelectLocked(false);
groupShapeLock->set_SizeLocked(false);
}
//if shape is a connector
else if (System::ObjectExt::Is<IConnector>(shape)) {
//Type casting to connector shape and getting connector shape lock
SharedPtr<IConnector> conn = DynamicCast<Aspose::Slides::IConnector>(shape);
SharedPtr<IConnectorLock> connLock = DynamicCast<Aspose::Slides::IConnectorLock>(conn->get_ShapeLock());
//Applying shapes locks
connLock->set_PositionMove(false);
connLock->set_SelectLocked(false);
connLock->set_SizeLocked(false);
}
//if shape is picture frame
else if (System::ObjectExt::Is<IPictureFrame>(shape)) {
//Type casting to pitcture frame shape and getting picture frame shape lock
SharedPtr<IPictureFrame> pic = DynamicCast<Aspose::Slides::IPictureFrame>(shape);
SharedPtr<IPictureFrameLock> picLock = DynamicCast<Aspose::Slides::IPictureFrameLock>(pic->get_ShapeLock());
//Applying shapes locks
picLock->set_PositionLocked(false);
picLock->set_SelectLocked(false);
picLock->set_SizeLocked(false);
}
}
}
//Saving the presentation file
pres->Save(outPath, Aspose::Slides::Export::SaveFormat::Pptx);

الملخص

المقالات ذات الصلة