Proteger Apresentações contra Gravação em Java
Introdução
Uma senha de proteção contra gravação restringe a modificação de uma apresentação, mas não criptografa seu conteúdo. Os usuários podem carregar e visualizar uma apresentação protegida contra gravação sem a senha. Dependendo do aplicativo, eles também podem editar o conteúdo e salvá‑lo com outro nome, portanto a proteção contra gravação não deve ser tratada como um mecanismo de confidencialidade.
Uma senha de abertura tem um propósito diferente: ela criptografa a apresentação e é necessária para carregar seu conteúdo. Para criptografar uma apresentação ou validar uma senha de abertura, veja Proteger Apresentações com Senha.
Os fluxos de trabalho neste artigo se aplicam a apresentações PPT e PPTX. Os exemplos usam arquivos PPTX; ao salvar em PPT, use a extensão .ppt e o formato de salvamento PPT correspondente.
Definir Proteção Contra Gravação em uma Apresentação
Use IProtectionManager.setWriteProtection para atribuir uma senha para modificar uma apresentação. Salvar a apresentação mantém a configuração de proteção.
O exemplo a seguir define proteção contra gravação em uma apresentação PPTX:
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();
}
Carregar uma Apresentação Protegida contra Gravação
Como a proteção contra gravação não criptografa o conteúdo da apresentação, nenhuma senha é necessária para carregá‑la. A senha é relevante apenas ao validar a autorização para modificar a apresentação protegida.
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();
}
Não passe uma senha de proteção contra gravação para ILoadOptions.setPassword. Esse método aceita uma senha de abertura para conteúdo criptografado. Se uma apresentação tiver ambos os tipos de proteção, forneça a senha de abertura nas opções de carregamento para abrir a apresentação criptografada e trate a senha de proteção contra gravação separadamente.
Remover Proteção Contra Gravação de uma Apresentação
Use IProtectionManager.removeWriteProtection para remover a restrição de modificação e, em seguida, salvar a apresentação.
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();
}
Verificar se uma Apresentação está Protegida contra Gravação
Para inspecionar um arquivo sem criar uma instância completa de Presentation, chame IPresentationFactory.getPresentationInfo e verifique IPresentationInfo.isWriteProtected. O método usa NullableBool e retorna NullableBool.True quando a proteção contra gravação é detectada.
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.");
}
A sobrecarga de fluxo de IPresentationFactory.getPresentationInfo fornece as mesmas informações para uma apresentação fornecida como stream.
Validar uma Senha de Proteção contra Gravação
Use IPresentationInfo.checkWriteProtection para validar uma senha de modificação sem carregar a apresentação completa. Verifique primeiro IPresentationInfo.isWriteProtected para que o aplicativo solicite ou valide uma senha apenas quando a proteção contra gravação estiver presente.
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 valida apenas a senha de proteção contra gravação. Ela não valida uma senha de abertura nem determina se o conteúdo criptografado pode ser carregado. Por outro lado, IPresentationInfo.checkPassword valida apenas uma senha de abertura. Se uma apresentação completa já foi carregada, IProtectionManager.checkWriteProtection fornece a verificação equivalente de proteção contra gravação por meio de seu gerenciador de proteção.
Em aplicativos de produção, não registre senhas nem as inclua em mensagens de diagnóstico. Evite tentativas de validação repetidas desnecessárias e mantenha as senhas na memória apenas pelo tempo necessário.
Veja também
FAQ
A proteção contra gravação criptografa uma apresentação?
Não.
A senha de proteção contra gravação é necessária para abrir uma apresentação?
Não. Apenas uma senha de abertura é necessária para carregar o conteúdo de uma apresentação criptografada.
Uma apresentação pode ter tanto uma senha de abertura quanto uma senha de proteção contra gravação?
Sim. Forneça a senha de abertura nas opções de carregamento para abrir a apresentação criptografada e valide a senha de proteção contra gravação separadamente quando for necessária autorização para modificação.