Prezentáció szerkesztésének megakadályozása alakzatzárolásokkal
Háttér
Az Aspose.Slides gyakori felhasználási módja, hogy automatikus munkafolyamat részeként Microsoft PowerPoint (PPTX) prezentációkat hozzon létre, frissítsen és mentse. Az Aspose.Slides-et ilyen módon használó alkalmazások felhasználói hozzáférnek a generált prezentációkhoz, így azok szerkesztésének megakadályozása gyakori aggodalom. Fontos, hogy az automatikusan létrehozott prezentációk megőrizzék eredeti formázásukat és tartalmukat.
Ez a cikk bemutatja, hogyan épülnek fel a prezentációk és diaelemek, valamint hogyan tudja az Aspose.Slides for C++ védelmet alkalmazni egy prezentáción, majd később eltávolítani azt. A fejlesztők számára lehetőséget kínál arra, hogy szabályozzák, hogyan használják fel az alkalmazásaik által generált prezentációkat.
Dia felépítése
Egy prezentációs dia olyan összetevőkből áll, mint az automatikus alakzatok, táblázatok, OLE-objektumok, csoportos alakzatok, képkockák, videokockák, csatlakozók és egyéb elemek, amelyeket a prezentáció felépítéséhez használnak. Az Aspose.Slides for C++‑ben a dián lévő minden elem egy olyan objektummal van reprezentálva, amely implementálja a IShape interfészt, vagy egy olyan osztályból származik, amely ezt az interfészt megvalósítja.
A PPTX felépítése összetett, ezért a PPT‑vel ellentétben, ahol egy általános zár használható az összes alakzattípusra, a különböző alakzattípusok különféle zárolásokat igényelnek. A IBaseShapeLock interfész a PPTX általános zárolási osztálya. Az Aspose.Slides for C++ a PPTX‑hez a következő zártípusokat támogatja:
- IAutoShapeLock zárolja az automatikus alakzatokat.
- IConnectorLock zárolja a csatlakozó alakzatokat.
- IGraphicalObjectLock zárolja a grafikus objektumokat.
- IGroupShapeLock zárolja a csoportos alakzatokat.
- IPictureFrameLock zárolja a képkockákat.
Bármely művelet, amelyet egy Presentation objektum összes alakzaton hajtunk végre, az egész prezentációra vonatkozik.
Védelem alkalmazása és eltávolítása
A védelem alkalmazása biztosítja, hogy a prezentációt ne lehessen szerkeszteni. Hasznos technika a prezentáció tartalmának védelmére.
Védelem alkalmazása PPTX alakzatokra
Az Aspose.Slides for C++ a IShape interfészt biztosítja az alakzatokkal való munkához egy dián.
Ahogy korábban említettük, minden alakzat osztálynak van egy hozzá tartozó alakzat-záró osztálya a védelemhez. Ez a cikk a NoSelect, NoMove és NoResize zárakra összpontosít. Ezek a zárak biztosítják, hogy az alakzatok ne legyenek kiválaszthatók (egérkattintással vagy egyéb kiválasztási módszerekkel), és ne mozgathatók vagy átméretezhetők legyenek.
Az alábbi kódminták a prezentáció összes alakzattípusára alkalmazzák a védelmet.
// Példányosítsa a Presentation osztályt, amely egy PPTX fájlt képvisel.
auto presentation = MakeObject<Presentation>(u"Sample.pptx");
// Az összes diát végigjárja a prezentációban.
for (auto&& slide : presentation->get_Slides()) {
// Az összes alakzatot végigjárja a diában.
for (auto&& shape : slide->get_Shapes()) {
if (ObjectExt::Is<IAutoShape>(shape)) {
// Áttípusolja az alakzatot egy autoshape-re, és megszerzi annak shape lock-ját.
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)) {
// Áttípusolja az alakzatot egy csoportos alakzatra, és megszerzi annak shape lock-ját.
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)) {
// Áttípusolja az alakzatot egy csatlakozó alakzatra, és megszerzi annak shape lock-ját.
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)) {
// Áttípusolja az alakzatot egy képkockára, és megszerzi annak shape lock-ját.
auto pictureFrame = ExplicitCast<IPictureFrame>(shape);
auto pictureFrameLock = ExplicitCast<IPictureFrameLock>(pictureFrame->get_ShapeLock());
pictureFrameLock->set_PositionLocked(true);
pictureFrameLock->set_SelectLocked(true);
pictureFrameLock->set_SizeLocked(true);
}
}
}
// Mentse a prezentációfájlt.
presentation->Save(u"ProtectedSample.pptx", SaveFormat::Pptx);
presentation->Dispose();
Védelem eltávolítása
Egy alakzat feloldásához állítsuk a alkalmazott zár értékét false‑ra. Az alábbi kódminta bemutatja, hogyan oldhatók fel a zárak egy zárolt prezentációban.
// Példányosítja a Presentation osztályt, amely egy PPTX fájlt képvisel.
auto presentation = MakeObject<Presentation>(u"ProtectedSample.pptx");
// Az összes diát végigjárja a prezentációban.
for (auto&& slide : presentation->get_Slides()) {
// Az összes alakzatot végigjárja a diában.
for (auto&& shape : slide->get_Shapes()) {
if (ObjectExt::Is<IAutoShape>(shape)) {
// Áttípusolja az alakzatot autoshape-re, és megszerzi annak shape lock-ját.
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)) {
// Áttípusolja az alakzatot csoportos alakzatra, és megszerzi annak shape lock-ját.
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)) {
// Áttípusolja az alakzatot csatlakozó alakzatra, és megszerzi annak shape lock-ját.
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)) {
// Áttípusolja az alakzatot képkockára, és megszerzi annak shape lock-ját.
auto pictureFrame = ExplicitCast<IPictureFrame>(shape);
auto pictureFrameLock = ExplicitCast<IPictureFrameLock>(pictureFrame->get_ShapeLock());
pictureFrameLock->set_PositionLocked(false);
pictureFrameLock->set_SelectLocked(false);
pictureFrameLock->set_SizeLocked(false);
}
}
}
// Mentse a prezentációfájlt.
presentation->Save(u"RemovedProtectionSample.pptx", SaveFormat::Pptx);
presentation->Dispose();
Következtetés
Az Aspose.Slides több lehetőséget is kínál az alakzatok prezentációban való védelmére. Egyedi alakzatot zárolhat, vagy végigiterálhat a prezentáció összes alakzatán, és mindegyiket lezárhatja, így hatékonyan védi az egész fájlt. A védelem eltávolítható a zár értékét false‑ra állítva.
GYIK
Kombinálhatok-e alakzat-zárolásokat és jelszóvédelmet ugyanabban a prezentációban?
Igen. A zárak korlátozzák a fájlon belüli objektumok szerkesztését, míg a password protection szabályozza a megnyitáshoz és/vagy a módosítások mentéséhez való hozzáférést. Ezek a mechanizmusok kiegészítik egymást, és együtt működnek.
Korlátozhatom-e a szerkesztést csak bizonyos diákra, anélkül, hogy a többit érinteném?
Igen. Alkalmazzon zárakat a kiválasztott diák alakzataira; a többi dia szerkeszthető marad.
Az alakzat-zárolások vonatkoznak-e csoportos objektumokra és csatlakozókra?
Igen. Külön dedikált zár típusok támogatottak csoportokra, csatlakozókra, grafikus objektumokra és más alakzatfajtákra.