ป้องกันการแก้ไขงานนำเสนอด้วยการล็อกรูปทรง
พื้นหลัง
การใช้ Aspose.Slides อย่างทั่วไปคือการสร้าง, อัปเดต, และบันทึกงานนำเสนอ Microsoft PowerPoint (PPTX) เป็นส่วนหนึ่งของเวิร์กโฟลว์อัตโนมัติ ผู้ใช้แอปพลิเคชันที่ใช้ Aspose.Slides ด้วยวิธีนี้จะเข้าถึงงานนำเสนอที่สร้างขึ้นได้ ดังนั้นการป้องกันไม่ให้แก้ไขจึงเป็นความกังวลทั่วไป สิ่งสำคัญคือนำเสนอที่สร้างโดยอัตโนมัติต้องรักษารูปแบบและเนื้อหาเดิมไว้
บทความนี้อธิบายว่าโครงสร้างของงานนำเสนอและสไลด์เป็นอย่างไรและ Aspose.Slides for C++ สามารถใช้การป้องกันกับงานนำเสนอและลบการป้องกันนั้นออกได้อย่างไร มันให้วิธีการแก่ผู้พัฒนาในการควบคุมการใช้งานนำเสนอที่แอปพลิเคชันของพวกเขาสร้างขึ้น
โครงสร้างของสไลด์
สไลด์ของงานนำเสนอประกอบด้วยส่วนประกอบต่าง ๆ เช่น autoshapes, tables, OLE objects, grouped shapes, picture frames, video frames, connectors และองค์ประกอบอื่น ๆ ที่ใช้สร้างงานนำเสนอ ใน Aspose.Slides for C++ แต่ละองค์ประกอบบนสไลด์จะถูกแทนด้วยอ็อบเจ็กต์ที่ทำการ implements อินเทอร์เฟซ IShape หรือสืบทอดจากคลาสที่ทำเช่นนั้น
โครงสร้างของ PPTX มีความซับซ้อน ดังนั้นแตกต่างจาก PPT ที่สามารถใช้ lock ทั่วไปกับรูปทรงทุกประเภทได้ รูปทรงแต่ละประเภทต้องการ lock ที่แตกต่างกัน อินเทอร์เฟซ IBaseShapeLock เป็นคลาสการล็อกทั่วไปสำหรับ PPTX ประเภทของ lock ต่อไปนี้ได้รับการสนับสนุนใน Aspose.Slides for C++ สำหรับ PPTX:
- IAutoShapeLock ล็อก autoshapes.
- IConnectorLock ล็อก connector shapes.
- IGraphicalObjectLock ล็อก graphical objects.
- IGroupShapeLock ล็อก group shapes.
- IPictureFrameLock ล็อก picture frames.
การกระทำใด ๆ ที่ทำบนอ็อบเจ็กต์ shape ทั้งหมดในอ็อบเจ็กต์ Presentation จะถูกนำไปใช้กับงานนำเสนอทั้งหมด
ใช้และลบการป้องกัน
การใช้การป้องกันจะทำให้แน่ใจว่างานนำเสนอไม่สามารถแก้ไขได้ นี่เป็นเทคนิคที่มีประโยชน์ในการปกป้องเนื้อหาของงานนำเสนอ
ใช้การป้องกันกับรูปทรง PPTX
Aspose.Slides for C++ ให้อินเทอร์เฟซ IShape เพื่อทำงานกับ shape บนสไลด์
ตามที่ได้กล่าวไว้ก่อนหน้านี้แต่ละคลาส shape มีคลาส shape‑lock ที่สัมพันธ์กันสำหรับการป้องกัน บทความนี้มุ่งเน้นที่ lock NoSelect, NoMove, และ NoResize lock เหล่านี้ทำให้ shape ไม่สามารถเลือก (โดยการคลิกเมาส์หรือวิธีการเลือกอื่น) และไม่สามารถย้ายหรือปรับขนาดได้
ตัวอย่างโค้ดต่อไปนี้ใช้การป้องกันกับทุกประเภทของ shape ในงานนำเสนอ
// สร้างอินสแตนซ์ของคลาส Presentation ที่เป็นตัวแทนของไฟล์ PPTX.
auto presentation = MakeObject<Presentation>(u"Sample.pptx");
// วนผ่านสไลด์ทั้งหมดในงานนำเสนอ.
for (auto&& slide : presentation->get_Slides()) {
// วนผ่านรูปทรงทั้งหมดในสไลด์.
for (auto&& shape : slide->get_Shapes()) {
if (ObjectExt::Is<IAutoShape>(shape)) {
// แปลงประเภทของรูปร่างเป็น autoshape และดึง shape lock ของมัน.
auto autoShape = ExplicitCast<IAutoShape>(shape);
auto autoShapeLock = ExplicitCast<IAutoShapeLock>(autoShape->get_ShapeLock());
autoShapeLock->set_PositionLocked(true);
autoShapeLock->set_SelectLocked(true);
autoShapeLock->set_SizeLocked(true);
}
else if (ObjectExt::Is<IGroupShape>(shape)) {
// แปลงประเภทของรูปร่างเป็น group shape และดึง shape lock ของมัน.
auto groupShape = ExplicitCast<IGroupShape>(shape);
auto groupShapeLock = ExplicitCast<IGroupShapeLock>(groupShape->get_ShapeLock());
groupShapeLock->set_GroupingLocked(true);
groupShapeLock->set_PositionLocked(true);
groupShapeLock->set_SelectLocked(true);
groupShapeLock->set_SizeLocked(true);
}
else if (ObjectExt::Is<IConnector>(shape)) {
// แปลงประเภทของรูปร่างเป็น connector shape และดึง shape lock ของมัน.
auto connectorShape = ExplicitCast<IConnector>(shape);
auto connectorShapeLock = ExplicitCast<IConnectorLock>(connectorShape->get_ShapeLock());
connectorShapeLock->set_PositionMove(true);
connectorShapeLock->set_SelectLocked(true);
connectorShapeLock->set_SizeLocked(true);
}
else if (ObjectExt::Is<IPictureFrame>(shape)) {
// แปลงประเภทของรูปร่างเป็น picture frame และดึง shape lock ของมัน.
auto pictureFrame = ExplicitCast<IPictureFrame>(shape);
auto pictureFrameLock = ExplicitCast<IPictureFrameLock>(pictureFrame->get_ShapeLock());
pictureFrameLock->set_PositionLocked(true);
pictureFrameLock->set_SelectLocked(true);
pictureFrameLock->set_SizeLocked(true);
}
}
}
// บันทึกไฟล์งานนำเสนอ.
presentation->Save(u"ProtectedSample.pptx", SaveFormat::Pptx);
presentation->Dispose();
ลบการป้องกัน
เพื่อปลดล็อก shape ให้ตั้งค่าของ lock ที่ใช้งานเป็น false ตัวอย่างโค้ดต่อไปนี้แสดงวิธีปลดล็อก shape ในงานนำเสนอที่ถูกล็อก
// สร้างอินสแตนซ์ของคลาส Presentation ที่เป็นตัวแทนของไฟล์ PPTX.
auto presentation = MakeObject<Presentation>(u"ProtectedSample.pptx");
// วนผ่านสไลด์ทั้งหมดในงานนำเสนอ.
for (auto&& slide : presentation->get_Slides()) {
// วนผ่านรูปทรงทั้งหมดในสไลด์.
for (auto&& shape : slide->get_Shapes()) {
if (ObjectExt::Is<IAutoShape>(shape)) {
// แปลงประเภทของรูปร่างเป็น autoshape และดึง shape lock ของมัน.
auto autoShape = ExplicitCast<IAutoShape>(shape);
auto autoShapeLock = ExplicitCast<IAutoShapeLock>(autoShape->get_ShapeLock());
autoShapeLock->set_PositionLocked(false);
autoShapeLock->set_SelectLocked(false);
autoShapeLock->set_SizeLocked(false);
}
else if (ObjectExt::Is<IGroupShape>(shape)) {
// แปลงประเภทของรูปร่างเป็น group shape และดึง shape lock ของมัน.
auto groupShape = ExplicitCast<IGroupShape>(shape);
auto groupShapeLock = ExplicitCast<IGroupShapeLock>(groupShape->get_ShapeLock());
groupShapeLock->set_GroupingLocked(false);
groupShapeLock->set_PositionLocked(false);
groupShapeLock->set_SelectLocked(false);
groupShapeLock->set_SizeLocked(false);
}
else if (ObjectExt::Is<IConnector>(shape)) {
// แปลงประเภทของรูปร่างเป็น connector shape และดึง shape lock ของมัน.
auto connectorShape = ExplicitCast<IConnector>(shape);
auto connectorShapeLock = ExplicitCast<IConnectorLock>(connectorShape->get_ShapeLock());
connectorShapeLock->set_PositionMove(false);
connectorShapeLock->set_SelectLocked(false);
connectorShapeLock->set_SizeLocked(false);
}
else if (ObjectExt::Is<IPictureFrame>(shape)) {
// แปลงประเภทของรูปร่างเป็น picture frame และดึง shape lock ของมัน.
auto pictureFrame = ExplicitCast<IPictureFrame>(shape);
auto pictureFrameLock = ExplicitCast<IPictureFrameLock>(pictureFrame->get_ShapeLock());
pictureFrameLock->set_PositionLocked(false);
pictureFrameLock->set_SelectLocked(false);
pictureFrameLock->set_SizeLocked(false);
}
}
}
// บันทึกไฟล์งานนำเสนอ.
presentation->Save(u"RemovedProtectionSample.pptx", SaveFormat::Pptx);
presentation->Dispose();
สรุป
Aspose.Slides มีตัวเลือกหลายอย่างสำหรับการป้องกัน shape ในงานนำเสนอ คุณสามารถล็อก shape เดียวหรือวนรอบทุก shape ในงานนำเสนอและล็อกแต่ละอันเพื่อปกป้องไฟล์ทั้งหมดได้อย่างมีประสิทธิภาพ คุณสามารถลบการป้องกันโดยตั้งค่าของ lock เป็น false
คำถามที่พบบ่อย
ฉันสามารถรวม shape locks กับการป้องกันด้วยรหัสผ่านในงานนำเสนอเดียวกันได้หรือไม่?
ได้. Locks จำกัดการแก้ไขอ็อบเจ็กต์ภายในไฟล์ในขณะที่ password protection ควบคุมการเข้าถึงการเปิดและ/หรือการบันทึกการเปลี่ยนแปลง กลไกเหล่านี้ทำงานเสริมกันและทำงานร่วมกัน
ฉันสามารถจำกัดการแก้ไขบนสไลด์เฉพาะโดยไม่ส่งผลต่อสไลด์อื่นได้หรือไม่?
ได้. ใช้ locks กับ shape บนสไลด์ที่เลือก; สไลด์ที่เหลือจะยังคงสามารถแก้ไขได้
shape locks ใช้กับอ็อบเจ็กต์ที่จัดกลุ่มและ connectors หรือไม่?
ได้. มีประเภท lock เฉพาะสำหรับกลุ่ม, connectors, graphic objects, และรูปแบบ shape อื่น ๆ