Zabránit úpravám prezentace pomocí zámků tvarů
Pozadí
Běžné použití Aspose.Slides je vytvářet, aktualizovat a ukládat prezentace Microsoft PowerPoint (PPTX) jako součást automatizovaného pracovního postupu. Uživatelé aplikací, které Aspose.Slides tímto způsobem využívají, mají přístup k vygenerovaným prezentacím, takže jejich ochrana před úpravami je častou starostí. Je důležité, aby automaticky generované prezentace zachovaly původní formátování a obsah.
Tento článek vysvětluje, jak jsou prezentace a snímky strukturovány a jak může Aspose.Slides for C++ aplikovat ochranu na prezentaci a později ji odebrat. Poskytuje vývojářům způsob, jak kontrolovat, jak jsou prezentace generované jejich aplikacemi využívány.
Složení snímku
Snímek prezentace se skládá z komponent, jako jsou automatické tvary, tabulky, OLE objekty, seskupené tvary, rámečky obrázků, video rámečky, propojení a další prvky používané k vytvoření prezentace. V Aspose.Slides for C++ je každý prvek na snímku reprezentován objektem, který implementuje rozhraní IShape nebo dědí z třídy, která to dělá.
Struktura PPTX je složitá, takže na rozdíl od PPT, kde lze použít obecný zámek pro všechny typy tvarů, různé typy tvarů vyžadují různé zámky. Rozhraní IBaseShapeLock je obecná třída pro zamykání v PPTX. Následující typy zámků jsou podporovány v Aspose.Slides for C++ pro PPTX:
- IAutoShapeLock zamyká automatické tvary.
- IConnectorLock zamyká propojené tvary.
- IGraphicalObjectLock zamyká grafické objekty.
- IGroupShapeLock zamyká skupinové tvary.
- IPictureFrameLock zamyká rámečky obrázků.
Jakákoli akce provedená na všech objektech tvarů v objektu Presentation se aplikuje na celou prezentaci.
Aplikace a odebrání ochrany
Aplikace ochrany zajišťuje, že prezentaci nelze upravovat. Jedná se o užitečnou techniku pro ochranu obsahu prezentace.
Aplikovat ochranu na tvary PPTX
Aspose.Slides for C++ poskytuje rozhraní IShape pro práci s tvary na snímku.
Jak bylo zmíněno dříve, každá třída tvaru má přiřazenou třídu zamykání tvaru pro ochranu. Tento článek se zaměřuje na zámky NoSelect, NoMove a NoResize. Tyto zámky zajišťují, že tvary nelze vybrat (kliknutím myší nebo jinými metodami výběru) a že je nelze přesunout ani změnit jejich velikost.
Ukázkový kód níže aplikuje ochranu na všechny typy tvarů v prezentaci.
// Vytvořte třídu Presentation, která představuje soubor PPTX.
auto presentation = MakeObject<Presentation>(u"Sample.pptx");
// Procházení všech snímků v prezentaci.
for (auto&& slide : presentation->get_Slides()) {
// Procházení všech tvarů na snímku.
for (auto&& shape : slide->get_Shapes()) {
if (ObjectExt::Is<IAutoShape>(shape)) {
// Přetypování tvaru na automatický tvar a získání jeho zámku tvaru.
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)) {
// Přetypování tvaru na skupinový tvar a získání jeho zámku tvaru.
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)) {
// Přetypování tvaru na spojovací tvar a získání jeho zámku tvaru.
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)) {
// Přetypování tvaru na rámeček obrázku a získání jeho zámku tvaru.
auto pictureFrame = ExplicitCast<IPictureFrame>(shape);
auto pictureFrameLock = ExplicitCast<IPictureFrameLock>(pictureFrame->get_ShapeLock());
pictureFrameLock->set_PositionLocked(true);
pictureFrameLock->set_SelectLocked(true);
pictureFrameLock->set_SizeLocked(true);
}
}
}
// Ukládání souboru prezentace.
presentation->Save(u"ProtectedSample.pptx", SaveFormat::Pptx);
presentation->Dispose();
Odebrat ochranu
Pro odemknutí tvaru nastavte hodnotu aplikovaného zámku na false. Následující ukázkový kód ukazuje, jak odemknout tvary v zamčené prezentaci.
// Vytvořte instanci třídy Presentation, která představuje soubor PPTX.
auto presentation = MakeObject<Presentation>(u"ProtectedSample.pptx");
// Procházení všech snímků v prezentaci.
for (auto&& slide : presentation->get_Slides()) {
// Procházení všech tvarů na snímku.
for (auto&& shape : slide->get_Shapes()) {
if (ObjectExt::Is<IAutoShape>(shape)) {
// Přetypování tvaru na automatický tvar a získání jeho zámku tvaru.
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)) {
// Přetypování tvaru na skupinový tvar a získání jeho zámku tvaru.
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)) {
// Přetypování tvaru na spojovací tvar a získání jeho zámku tvaru.
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)) {
// Přetypování tvaru na rámeček obrázku a získání jeho zámku tvaru.
auto pictureFrame = ExplicitCast<IPictureFrame>(shape);
auto pictureFrameLock = ExplicitCast<IPictureFrameLock>(pictureFrame->get_ShapeLock());
pictureFrameLock->set_PositionLocked(false);
pictureFrameLock->set_SelectLocked(false);
pictureFrameLock->set_SizeLocked(false);
}
}
}
// Ukládání souboru prezentace.
presentation->Save(u"RemovedProtectionSample.pptx", SaveFormat::Pptx);
presentation->Dispose();
Závěr
Aspose.Slides nabízí několik možností, jak chránit tvary v prezentaci. Můžete zamknout jednotlivý tvar nebo projít všechny tvary v prezentaci a zamknout každý z nich, abyste efektivně zabezpečili celý soubor. Ochranu můžete odebrat nastavením hodnoty zámku na false.
Často kladené otázky
Mohu kombinovat zámky tvarů a ochranu heslem ve stejné prezentaci?
Ano. Zámky omezují úpravy objektů uvnitř souboru, zatímco ochrana heslem řídí přístup k otevření a/nebo uložení změn. Tyto mechanismy se doplňují a pracují společně.
Mohu omezit úpravy na konkrétních snímcích, aniž by to ovlivnilo ostatní?
Ano. Aplikujte zámky na tvary na vybraných snímcích; zbývající snímky zůstanou upravitelně.
Platí zámky tvarů i na seskupené objekty a propojení?
Ano. Pro skupiny, propojení, grafické objekty a další typy tvarů jsou podporovány vyhrazené typy zámků.