Защита презентаций от записи в PHP
Введение
Пароль защиты от записи ограничивает изменение презентации, но не шифрует её содержимое. Пользователи могут загрузить и просмотреть презентацию с защитой от записи без пароля. В зависимости от приложения они также могут редактировать содержимое и сохранять его под другим именем, поэтому защита от записи не должна рассматриваться как механизм конфиденциальности.
Пароль открытия служит иной цели: он шифрует презентацию и требуется для загрузки её содержимого. Чтобы зашифровать презентацию или проверить пароль открытия, см. Password-Protect Presentations.
Процессы, описанные в этой статье, применимы как к презентациям PPT, так и PPTX. В примерах используются файлы PPTX; при сохранении в PPT используйте расширение .ppt и соответствующий формат сохранения PPT.
Установить защиту от записи в презентации
Используйте ProtectionManager::setWriteProtection, чтобы назначить пароль для изменения презентации. При сохранении презентации настройка защиты сохраняется.
Следующий пример устанавливает защиту от записи в презентацию PPTX:
use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
$presentation = new Presentation("pres.pptx");
try {
$presentation->getProtectionManager()->setWriteProtection("modify_password");
$presentation->save("write-protected-pres.pptx", SaveFormat::Pptx);
} finally {
$presentation->dispose();
}
Загрузка презентации с защитой от записи
Поскольку защита от записи не шифрует содержимое презентации, пароль для загрузки презентации не требуется. Пароль требуется только при проверке разрешения на изменение защищённой презентации.
use aspose\slides\Presentation;
$presentation = new Presentation("write-protected-pres.pptx");
try {
echo("Slide count: " . $presentation->getSlides()->size() . "\n");
} finally {
$presentation->dispose();
}
Не передавайте пароль защиты от записи в LoadOptions::setPassword. Этот метод принимает пароль открытия для зашифрованного содержимого. Если у презентации оба типа защиты, передайте пароль открытия для её загрузки и обрабатывайте пароль защиты от записи отдельно.
Снять защиту от записи с презентации
Используйте ProtectionManager::removeWriteProtection, чтобы убрать ограничение на изменение, затем сохраните презентацию.
use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
$presentation = new Presentation("write-protected-pres.pptx");
try {
$presentation->getProtectionManager()->removeWriteProtection();
$presentation->save("write-protection-removed.pptx", SaveFormat::Pptx);
} finally {
$presentation->dispose();
}
Проверить, защищена ли презентация от записи
Чтобы проверить файл без создания полного экземпляра Presentation, вызовите PresentationFactory::getPresentationInfo и проверьте PresentationInfo::isWriteProtected. Метод использует NullableBool и возвращает NullableBool::True, когда обнаружена защита от записи.
use aspose\slides\NullableBool;
use aspose\slides\PresentationFactory;
$presentationInfo = PresentationFactory::getInstance()->getPresentationInfo("write-protected-pres.pptx");
if ($presentationInfo->isWriteProtected() == NullableBool::True) {
echo("The presentation is write protected.\n");
} else {
echo("Write protection was not detected.\n");
}
Перегрузка метода, принимающая поток, PresentationFactory::getPresentationInfo, предоставляет ту же информацию для презентации, переданной в виде потока.
Проверить пароль защиты от записи
Используйте PresentationInfo::checkWriteProtection, чтобы проверить пароль изменения без загрузки полной презентации. Сначала проверьте PresentationInfo::isWriteProtected, чтобы приложение запрашивало или проверяло пароль только при наличии защиты от записи.
use aspose\slides\NullableBool;
use aspose\slides\PresentationFactory;
$presentationInfo = PresentationFactory::getInstance()->getPresentationInfo("write-protected-pres.pptx");
if ($presentationInfo->isWriteProtected() != NullableBool::True) {
echo("The presentation is not write protected.\n");
} elseif ($presentationInfo->checkWriteProtection("modify_password")) {
echo("The write-protection password is correct.\n");
} else {
echo("The write-protection password is incorrect.\n");
}
PresentationInfo::checkWriteProtection проверяет только пароль защиты от записи. Он не проверяет пароль открытия и не определяет, можно ли загрузить зашифрованное содержимое. Напротив, PresentationInfo::checkPassword проверяет только пароль открытия. Если полная презентация уже загружена, ProtectionManager::checkWriteProtection предоставляет эквивалентную проверку защиты от записи через свой менеджер защиты.
В производственных приложениях не регистрируйте пароли и не включайте их в диагностические сообщения. Избегайте ненужных повторных попыток проверки и храните пароли в памяти только столько, сколько требуется.
FAQ
Шифрует ли защита от записи презентацию?
Нет. Она ограничивает изменение, но оставляет содержимое презентации доступным для загрузки и просмотра.
Требуется ли пароль защиты от записи для открытия презентации?
Нет. Для загрузки зашифрованного содержимого презентации требуется только пароль открытия.
Может ли презентация иметь одновременно пароль открытия и пароль защиты от записи?
Да. Передайте пароль открытия через параметры загрузки, чтобы открыть зашифрованную презентацию, и проверяйте пароль защиты от записи отдельно, когда требуется разрешение на изменение.