Защита презентаций от записи на Android
Введение
Пароль защиты от записи ограничивает изменение презентации, но не шифрует её содержимое. Пользователи могут загрузить и просмотреть защищённую от записи презентацию без пароля. В зависимости от приложения они также могут редактировать содержимое и сохранить его под другим именем, поэтому защита от записи не должна рассматриваться как механизм конфиденциальности.
Пароль открытия служит иной цели: он шифрует презентацию и требуется для загрузки её содержимого. Чтобы зашифровать презентацию или проверить пароль открытия, см. Password-Protect Presentations.
Рабочие процессы в этой статье применимы как к презентациям PPT, так и PPTX. Примеры используют файлы PPTX; при сохранении в PPT используйте расширение .ppt и соответствующий формат сохранения PPT.
Установить защиту от записи в презентации
Используйте IProtectionManager.setWriteProtection для назначения пароля, ограничивающего изменение презентации. Сохранение презентации сохраняет настройку защиты.
Следующий пример устанавливает защиту от записи в презентацию 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();
}
Загрузить защищённую от записи презентацию
Поскольку защита от записи не шифрует содержимое презентации, пароль не требуется для её загрузки. Пароль имеет значение только при проверке разрешения на изменение защищённой презентации.
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();
}
Не передавайте пароль защиты от записи в ILoadOptions.setPassword. Этот метод принимает пароль открытия для зашифрованного содержимого. Если презентация имеет оба типа защиты, укажите пароль открытия для загрузки и обрабатывайте пароль защиты от записи отдельно.
Удалить защиту от записи из презентации
Используйте IProtectionManager.removeWriteProtection для снятия ограничения изменения, затем сохраните презентацию.
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();
}
Проверить, защищена ли презентация от записи
Чтобы проверить файл без создания полного экземпляра Presentation, вызовите IPresentationFactory.getPresentationInfo и проверьте IPresentationInfo.isWriteProtected. Метод использует NullableBool и возвращает NullableBool.True, когда обнаружена защита от записи.
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.");
}
Перегрузка метода, принимающая поток, IPresentationFactory.getPresentationInfo, предоставляет ту же информацию для презентации, переданной в виде потока.
Проверить пароль защиты от записи
Используйте IPresentationInfo.checkWriteProtection для проверки пароля изменения без загрузки полной презентации. Сначала проверьте IPresentationInfo.isWriteProtected , чтобы приложение запрашивало или проверяло пароль только при наличии защиты от записи.
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 проверяет только пароль защиты от записи. Он не проверяет пароль открытия и не определяет, может ли быть загружено зашифрованное содержимое. Напротив, IPresentationInfo.checkPassword проверяет только пароль открытия. Если полная презентация уже загружена, IProtectionManager.checkWriteProtection предоставляет эквивалентную проверку через менеджер защиты.
В производственных приложениях не записывайте пароли в журналы и не включайте их в диагностические сообщения. Избегайте ненужных повторных попыток проверки и храните пароли в памяти только столько, сколько это необходимо.
FAQ
Шифрует ли защита от записи презентацию?
Нет. Она ограничивает изменение, но оставляет содержимое презентации доступным для загрузки и просмотра.
Требуется ли пароль защиты от записи для открытия презентации?
Нет. Только пароль открытия требуется для загрузки зашифрованного содержимого презентации.
Может ли у презентации быть одновременно пароль открытия и пароль защиты от записи?
Да. Укажите пароль открытия через параметры загрузки, чтобы открыть зашифрованную презентацию, и проверяйте пароль защиты от записи отдельно, когда требуется авторизация на изменение.