Установка привилегий, шифрование и расшифровка PDF
Следующий фрагмент кода также работает с библиотекой Aspose.PDF.Drawing.
Установка привилегий на существующий PDF файл
Для установки привилегий на PDF файл, создайте объект класса DocumentPrivilege и укажите права, которые вы хотите применить к документу. После определения привилегий передайте этот объект в качестве аргумента методу Encrypt объекта Document. Следующий фрагмент кода показывает, как установить привилегии для PDF файла.
// Для полных примеров и файлов данных, пожалуйста, перейдите на https://github.com/aspose-pdf/Aspose.PDF-for-.NET
// Путь к директории документов.
string dataDir = RunExamples.GetDataDir_AsposePdf_SecuritySignatures();
// Загрузка исходного PDF файла
using (Document document = new Document(dataDir + "input.pdf"))
{
// Создание объекта привилегий документа
// Применение ограничений ко всем привилегиям
DocumentPrivilege documentPrivilege = DocumentPrivilege.ForbidAll;
// Разрешить только чтение на экране
documentPrivilege.AllowScreenReaders = true;
// Шифрование файла с паролями пользователя и владельца.
// Необходимо установить пароль, чтобы после просмотра файла с пользовательским паролем,
// Была включена только опция чтения экрана
document.Encrypt("user", "owner", documentPrivilege, CryptoAlgorithm.AESx128, false);
// Сохранение обновленного документа
document.Save(dataDir + "SetPrivileges_out.pdf");
}
Шифрование PDF-файла с использованием различных типов и алгоритмов шифрования
Вы можете использовать метод Encrypt объекта Document для шифрования PDF-файла. Вы можете передать пользовательский пароль, пароль владельца и разрешения методу Encrypt. Кроме того, вы можете передать любое значение перечисления CryptoAlgorithm. Это перечисление предоставляет различные комбинации алгоритмов шифрования и размеров ключей. Вы можете передать выбранное вами значение. Наконец, сохраните зашифрованный PDF-файл с помощью метода Save объекта Document.
Пожалуйста, укажите разные пользовательские и владельческие пароли при шифровании PDF-файла.
- Пользовательский пароль, если установлен, это то, что вам необходимо предоставить для открытия PDF.
- Пользовательский пароль, если установлен, необходимо предоставить для открытия PDF.
- Пароль владельца, если установлен, контролирует разрешения, такие как печать, редактирование, извлечение, комментирование и т.д. Acrobat/Reader будет запрещать эти действия в соответствии с настройками разрешений. Acrobat потребует этот пароль, если вы хотите установить/изменить разрешения.
Следующий фрагмент кода показывает, как зашифровать PDF файлы.
// Для полных примеров и файлов данных, пожалуйста, перейдите на https://github.com/aspose-pdf/Aspose.PDF-for-.NET
// Путь к директории документов.
string dataDir = RunExamples.GetDataDir_AsposePdf_SecuritySignatures();
// Открыть документ
Document document = new Document(dataDir+ "Encrypt.pdf");
// Зашифровать PDF
document.Encrypt("user", "owner", 0, CryptoAlgorithm.RC4x128);
dataDir = dataDir + "Encrypt_out.pdf";
// Сохранить обновленный PDF
document.Save(dataDir);
Расшифровать PDF файл с использованием пароля владельца
Все чаще пользователи обмениваются PDF файлами с шифрованием, чтобы предотвратить несанкционированный доступ к документам, таким как печать/копирование/поделиться / извлечение информации о содержимом PDF файла. Все чаще пользователи обмениваются зашифрованными PDF-файлами, чтобы предотвратить несанкционированный доступ к документам, таким как печать/копирование/распространение/извлечение информации о содержимом PDF-файла. В связи с этим возникает необходимость доступа к зашифрованному PDF-файлу, так как такой доступ может быть получен только авторизованным пользователем. Также люди ищут различные решения для расшифровки PDF-файлов в Интернете.
Лучше всего решить эту проблему один раз, используя библиотеку Aspose.PDF.
Для расшифровки PDF-файла сначала необходимо создать объект Document и открыть PDF, используя пароль владельца. Чтобы расшифровать PDF-файл, сначала необходимо создать объект Document и открыть PDF, используя пароль владельца.
// Для полных примеров и файлов данных, пожалуйста, перейдите на https://github.com/aspose-pdf/Aspose.PDF-for-.NET
// Путь к каталогу документов.
string dataDir = RunExamples.GetDataDir_AsposePdf_SecuritySignatures();
// Открыть документ
Document document = new Document(dataDir + "Decrypt.pdf", "password");
// Расшифровать PDF
document.Decrypt();
dataDir = dataDir + "Decrypt_out.pdf";
// Сохранить обновленный PDF
document.Save(dataDir);
Изменение пароля PDF-файла
Если вы хотите изменить пароль PDF-файла, сначала нужно открыть PDF-файл, используя пароль владельца с объектом Document. Если вы хотите изменить пароль PDF-файла, сначала вам нужно открыть PDF-файл, используя пароль владельца с помощью объекта Document.
- Пользовательский пароль, если установлен, необходимо предоставить для открытия PDF. Acrobat/Reader запросит у пользователя ввод пользовательского пароля. Если он не верен, документ не откроется.
- Пароль владельца, если установлен, контролирует разрешения, такие как печать, редактирование, извлечение, комментирование и т.д. Acrobat/Reader будет запрещать эти действия на основе настроек разрешений. Acrobat потребует этот пароль, если вы хотите установить/изменить разрешения.
Следующий пример кода показывает, как изменить пароль PDF-файла.
// Для полных примеров и файлов данных, пожалуйста, перейдите по ссылке https://github.com/aspose-pdf/Aspose.PDF-for-.NET
// Путь к директории документов.
string dataDir = RunExamples.GetDataDir_AsposePdf_SecuritySignatures();
// Открыть документ
Document document = new Document(dataDir+ "ChangePassword.pdf", "owner");
// Изменить пароль
document.ChangePasswords("owner", "newuser", "newowner");
dataDir = dataDir + "ChangePassword_out.pdf";
// Сохранить обновленный PDF
document.Save(dataDir);
Как определить, защищен ли исходный PDF паролем
Aspose.PDF для .NET предоставляет отличные возможности для работы с PDF документами. При использовании класса Document из пространства имен Aspose.PDF для открытия защищенного паролем PDF документа, необходимо предоставить информацию о пароле в качестве аргумента конструктору Document, и в случае, если эта информация не предоставлена, генерируется сообщение об ошибке. Фактически, при попытке открыть PDF файл с помощью объекта Document, конструктор пытается прочитать содержимое PDF файла, и в случае, если не предоставлен правильный пароль, генерируется сообщение об ошибке (это делается для предотвращения несанкционированного доступа к документу).
При работе с зашифрованными PDF файлами, вы можете столкнуться с ситуацией, когда вам будет интересно узнать, имеет ли PDF открытый пароль и/или пароль для редактирования.
Получение информации о защите документа PDF
PdfFileInfo содержит три свойства для получения информации о защите документа PDF.
- свойство PasswordType возвращает значение перечисления PasswordType:
- PasswordType.None - документ не защищен паролем
- PasswordType.User - документ был открыт с паролем пользователя (или паролем для открытия документа)
- PasswordType.Owner - документ был открыт с паролем владельца (или паролем для прав, редактирования)
- PasswordType.Inaccessible - документ защищен паролем, но для его открытия требуется пароль, при этом был введен неверный пароль (или пароль не был введен).
- булево свойство HasOpenPassword - используется для определения, требуется ли пароль для открытия входного файла.
- булево свойство HasEditPassword - используется для определения, требуется ли пароль для редактирования содержимого входного файла.
Определение правильного пароля из массива
Определение правильного пароля из массива
Иногда возникает необходимость определить правильный пароль из массива паролей и открыть документ с правильным паролем. Следующий фрагмент кода демонстрирует шаги по перебору массива паролей и попытке открыть документ с правильным паролем.
// Для полных примеров и файлов данных, пожалуйста, перейдите на https://github.com/aspose-pdf/Aspose.PDF-for-.NET
// Путь к директории документов.
string dataDir = RunExamples.GetDataDir_AsposePdf_SecuritySignatures();
// Загрузка исходного PDF файла
PdfFileInfo info = new PdfFileInfo();
info.BindPdf(dataDir + "IsPasswordProtected.pdf");
// Определение, зашифрован ли исходный PDF
Console.WriteLine("Файл защищен паролем " + info.IsEncrypted);
String[] passwords = new String[5] { "test", "test1", "test2", "test3", "sample" };
for (int passwordcount = 0; passwordcount < passwords.Length; passwordcount++)
{
try
{
Document doc = new Document(dataDir + "IsPasswordProtected.pdf", passwords[passwordcount]);
if (doc.Pages.Count > 0)
Console.WriteLine("Количество страниц в документе = " + doc.Pages.Count);
}
catch (InvalidPasswordException)
{
Console.WriteLine("Пароль = " + passwords[passwordcount] + " не верен");
}
}