Установка привилегий, шифрование и расшифровка 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.

  1. свойство PasswordType возвращает значение перечисления PasswordType:
    • PasswordType.None - документ не защищен паролем
    • PasswordType.User - документ был открыт с паролем пользователя (или паролем для открытия документа)
    • PasswordType.Owner - документ был открыт с паролем владельца (или паролем для прав, редактирования)
    • PasswordType.Inaccessible - документ защищен паролем, но для его открытия требуется пароль, при этом был введен неверный пароль (или пароль не был введен).
  2. булево свойство HasOpenPassword - используется для определения, требуется ли пароль для открытия входного файла.
  3. булево свойство 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] + " не верен");
    }
}