Presentaties met schrijfbeveiliging in Java

Introductie

Een write‑protection‑wachtwoord beperkt de wijziging van een presentatie, maar versleutelt de inhoud niet. Gebruikers kunnen een write‑protected‑presentatie laden en bekijken zonder het wachtwoord. Afhankelijk van de applicatie kunnen ze ook de inhoud bewerken en onder een andere naam opslaan, dus write‑protection mag niet worden beschouwd als een vertrouwelijkheidsmechanisme.

Een opening‑wachtwoord heeft een ander doel: het versleutelt de presentatie en is vereist om de inhoud te laden. Voor het versleutelen van een presentatie of het valideren van een opening‑wachtwoord, zie Presentaties beveiligen met wachtwoord.

De werkstromen in dit artikel zijn van toepassing op zowel PPT‑ als PPTX‑presentaties. De voorbeeldbestanden gebruiken PPTX‑bestanden; bij opslaan naar PPT, gebruik de extensie .ppt en het bijbehorende PPT‑opslaformaat.

Write‑protection instellen voor een presentatie

Gebruik IProtectionManager.setWriteProtection om een wachtwoord toe te wijzen voor het wijzigen van een presentatie. Het opslaan van de presentatie maakt de beschermingsinstelling permanent.

Het volgende voorbeeld stelt write‑protection in op een PPTX‑presentatie:

import com.aspose.slides.Presentation;
import com.aspose.slides.SaveFormat;

Presentation presentation = new Presentation("pres.pptx");
try {
    presentation.getProtectionManager().setWriteProtection("modify_password");
    presentation.save("write-protected-pres.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Write‑protected presentatie laden

Aangezien write‑protection de presentatie‑inhoud niet versleutelt, is er geen wachtwoord nodig om de presentatie te laden. Het wachtwoord is alleen relevant bij het valideren van de autorisatie om de beschermde presentatie te wijzigen.

import com.aspose.slides.Presentation;

Presentation presentation = new Presentation("write-protected-pres.pptx");
try {
    System.out.println("Slide count: " + presentation.getSlides().size());
} finally {
    presentation.dispose();
}

Geef geen write‑protection‑wachtwoord door aan ILoadOptions.setPassword. Deze methode accepteert een opening‑wachtwoord voor versleutelde inhoud. Als een presentatie beide beschermingssoorten heeft, voorzie dan het opening‑wachtwoord om deze te laden en behandel het write‑protection‑wachtwoord apart.

Write‑protection verwijderen van een presentatie

Gebruik IProtectionManager.removeWriteProtection om de wijzigingsbeperking te verwijderen, en sla vervolgens de presentatie op.

import com.aspose.slides.Presentation;
import com.aspose.slides.SaveFormat;

Presentation presentation = new Presentation("write-protected-pres.pptx");
try {
    presentation.getProtectionManager().removeWriteProtection();
    presentation.save("write-protection-removed.pptx", SaveFormat.Pptx);
} finally {
    presentation.dispose();
}

Controleren of een presentatie write‑protected is

Om een bestand te onderzoeken zonder een volledige Presentation-instantie te maken, roep IPresentationFactory.getPresentationInfo aan en inspecteer IPresentationInfo.isWriteProtected. Deze methode gebruikt NullableBool en retourneert NullableBool.True wanneer write‑protection wordt gedetecteerd.

import com.aspose.slides.IPresentationInfo;
import com.aspose.slides.NullableBool;
import com.aspose.slides.PresentationFactory;

IPresentationInfo presentationInfo = PresentationFactory.getInstance().getPresentationInfo("write-protected-pres.pptx");

if (presentationInfo.isWriteProtected() == NullableBool.True) {
    System.out.println("The presentation is write protected.");
} else {
    System.out.println("Write protection was not detected.");
}

De stream‑overload van IPresentationFactory.getPresentationInfo levert dezelfde informatie voor een presentatie die als stream wordt aangeleverd.

Write‑protection‑wachtwoord valideren

Gebruik IPresentationInfo.checkWriteProtection om een wijzigingswachtwoord te valideren zonder de volledige presentatie te laden. Controleer eerst IPresentationInfo.isWriteProtected zodat de applicatie alleen om een wachtwoord vraagt of dit valideert wanneer write‑protection aanwezig is.

import com.aspose.slides.IPresentationInfo;
import com.aspose.slides.NullableBool;
import com.aspose.slides.PresentationFactory;

IPresentationInfo presentationInfo = PresentationFactory.getInstance().getPresentationInfo("write-protected-pres.pptx");

if (presentationInfo.isWriteProtected() != NullableBool.True) {
    System.out.println("The presentation is not write protected.");
} else if (presentationInfo.checkWriteProtection("modify_password")) {
    System.out.println("The write-protection password is correct.");
} else {
    System.out.println("The write-protection password is incorrect.");
}

IPresentationInfo.checkWriteProtection valideert alleen het write‑protection‑wachtwoord. Het valideert geen opening‑wachtwoord en bepaalt niet of versleutelde inhoud kan worden geladen. Integendeel, IPresentationInfo.checkPassword valideert alleen een opening‑wachtwoord. Als een volledige presentatie al is geladen, biedt IProtectionManager.checkWriteProtection de equivalente write‑protection‑controle via zijn beschermingsmanager.

Log in productie‑toepassingen geen wachtwoorden en neem ze niet op in diagnostische berichten. Vermijd onnodige herhaalde validatie‑pogingen en bewaar wachtwoorden alleen zo lang in het geheugen als nodig is.

FAQ

Versleutelt write‑protection een presentatie?

Nee. Het beperkt de wijziging, maar laat de inhoud van de presentatie beschikbaar voor laden en bekijken.

Is het write‑protection‑wachtwoord vereist om een presentatie te openen?

Nee. Alleen een opening‑wachtwoord is vereist om versleutelde presentatiedata te laden.

Kan een presentatie zowel een opening‑wachtwoord als een write‑protection‑wachtwoord hebben?

Ja. Voorzie het opening‑wachtwoord via de laad‑opties om de versleutelde presentatie te openen, en valideer het write‑protection‑wachtwoord apart wanneer autorisatie voor wijziging nodig is.