Begränsa redigering av presentationer med form‑lås i Java
Bakgrund
Ett vanligt användningsområde för Aspose.Slides för Java är att skapa, uppdatera och spara PowerPoint‑presentationer (PPTX) som en del av ett automatiserat arbetsflöde. När användare får dessa presentationer kan begränsning av ändringar i former hjälpa till att bevara den avsedda layouten och innehållet.
Denna artikel förklarar hur former organiseras på bilder och hur du tillämpar och tar bort form‑lås i en PPTX‑presentation. Dessa lås låter dig begränsa specifika redigeringsåtgärder på enskilda former.
Sammansättning av en bild
En presentationsbild består av komponenter såsom autoshapes, tabeller, OLE‑objekt, grupperade former, bildramar, videoramar, anslutningar och andra element som används för att bygga en presentation. I Aspose.Slides för Java representeras varje element på en bild av ett objekt som implementerar IShape-gränssnittet eller ärver från en klass som gör det.
Olika formtyper exponerar olika låsalternativ. IBaseShapeLock-gränssnittet är basgränssnittet för form‑lås. Aspose.Slides för Java tillhandahåller följande låsgränssnitt:
- IAutoShapeLock låser autoshapes.
- IConnectorLock låser anslutningsformer.
- IGraphicalObjectLock låser grafiska objekt.
- IGroupShapeLock låser gruppformer.
- IPictureFrameLock låser bildramar.
För att tillämpa lås på en Presentation, iterera genom dess bilder och ange de lämpliga låsen på varje stödd form.
Tillämpa och ta bort skydd
Form‑lås begränsar operationer såsom att välja, flytta och ändra storlek på former. De gör inte hela presentationen oredigerbar.
Tillämpa skydd på PPTX‑former
Aspose.Slides för Java tillhandahåller IShape-gränssnittet för att arbeta med former på en bild.
Exemplet anropar setSelectLocked, setPositionLocked, och setSizeLocked med true för autoshapes, med motsvarande lås för gruppformer, anslutningar och bildramar. Anslutningar använder setPositionMove för rörelse; grupper använder också setGroupingLocked för att begränsa gruppering.
Exemplet laddar en befintlig PPTX‑presentation, kontrollerar formerna i varje bilds form‑samling och sparar en kopia med dessa restriktioner tillämpade. Former utanför de fyra hanterade typerna lämnas oförändrade. Loopen traverserar inte de underordnade formerna i en grupp.
import com.aspose.slides.*;
Presentation presentation = new Presentation("Sample.pptx");
try {
for (ISlide slide : presentation.getSlides()) {
for (IShape shape : slide.getShapes()) {
if (shape instanceof IAutoShape) {
IAutoShape autoShape = (IAutoShape) shape;
IAutoShapeLock autoShapeLock = (IAutoShapeLock) autoShape.getShapeLock();
autoShapeLock.setPositionLocked(true);
autoShapeLock.setSelectLocked(true);
autoShapeLock.setSizeLocked(true);
} else if (shape instanceof IGroupShape) {
IGroupShape groupShape = (IGroupShape) shape;
IGroupShapeLock groupShapeLock = (IGroupShapeLock) groupShape.getShapeLock();
groupShapeLock.setGroupingLocked(true);
groupShapeLock.setPositionLocked(true);
groupShapeLock.setSelectLocked(true);
groupShapeLock.setSizeLocked(true);
} else if (shape instanceof IConnector) {
IConnector connectorShape = (IConnector) shape;
IConnectorLock connectorShapeLock = connectorShape.getShapeLock();
connectorShapeLock.setPositionMove(true);
connectorShapeLock.setSelectLocked(true);
connectorShapeLock.setSizeLocked(true);
} else if (shape instanceof IPictureFrame) {
IPictureFrame pictureFrame = (IPictureFrame) shape;
IPictureFrameLock pictureFrameLock = (IPictureFrameLock) pictureFrame.getShapeLock();
pictureFrameLock.setPositionLocked(true);
pictureFrameLock.setSelectLocked(true);
pictureFrameLock.setSizeLocked(true);
}
}
}
presentation.save("ProtectedSample.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Ta bort skydd
För att ta bort ett form‑lås, sätt dess värde till false. Följande exempel laddar en presentation med form‑lås och rensar urvalet, rörelsen och storleksändringen via IAutoShapeLock, IGroupShapeLock, IConnectorLock och IPictureFrameLock. Det tar också bort grupperingstillståndet genom att skicka false till IGroupShapeLock.setGroupingLocked och sparar en kopia av presentationen. Övriga låsinställningar lämnas oförändrade.
import com.aspose.slides.*;
Presentation presentation = new Presentation("ProtectedSample.pptx");
try {
for (ISlide slide : presentation.getSlides()) {
for (IShape shape : slide.getShapes()) {
if (shape instanceof IAutoShape) {
IAutoShape autoShape = (IAutoShape) shape;
IAutoShapeLock autoShapeLock = (IAutoShapeLock) autoShape.getShapeLock();
autoShapeLock.setPositionLocked(false);
autoShapeLock.setSelectLocked(false);
autoShapeLock.setSizeLocked(false);
} else if (shape instanceof IGroupShape) {
IGroupShape groupShape = (IGroupShape) shape;
IGroupShapeLock groupShapeLock = (IGroupShapeLock) groupShape.getShapeLock();
groupShapeLock.setGroupingLocked(false);
groupShapeLock.setPositionLocked(false);
groupShapeLock.setSelectLocked(false);
groupShapeLock.setSizeLocked(false);
} else if (shape instanceof IConnector) {
IConnector connectorShape = (IConnector) shape;
IConnectorLock connectorShapeLock = connectorShape.getShapeLock();
connectorShapeLock.setPositionMove(false);
connectorShapeLock.setSelectLocked(false);
connectorShapeLock.setSizeLocked(false);
} else if (shape instanceof IPictureFrame) {
IPictureFrame pictureFrame = (IPictureFrame) shape;
IPictureFrameLock pictureFrameLock = (IPictureFrameLock) pictureFrame.getShapeLock();
pictureFrameLock.setPositionLocked(false);
pictureFrameLock.setSelectLocked(false);
pictureFrameLock.setSizeLocked(false);
}
}
}
presentation.save("RemovedProtectionSample.pptx", SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Slutsats
Aspose.Slides för Java låter dig begränsa specifika redigeringsåtgärder på enskilda former eller tillämpa samma restriktioner över bilder. Välj de lås som stöds av varje formtyp och sätt deras värden till false när du behöver ta bort dessa restriktioner.
FAQ
Kan jag kombinera form‑lås och lösenordsskydd i samma presentation?
Ja. Form‑lås begränsar specifika redigeringsåtgärder, medan password protection kan begränsa öppning eller ändring av presentationen. Du kan använda båda i samma fil.
Kan jag begränsa redigering på specifika bilder utan att påverka andra?
Ja. Tillämpar lås enbart på former på de valda bilderna. Detta ändrar inte låsinställningarna på andra bilder.
Hur kan jag tillämpa lås på enskilda former i en grupp?
Iterera genom samlingen som returneras av gruppens getShapes‑metod och tillämpa de lämpliga låsen på varje underform. Upprepa detta för eventuella nästlade grupper. Exemplen ovan bearbetar endast bildens form‑samling, så de sätter inte lås på enskilda gruppmedlemmar.