Установить привилегии, зашифровать и расшифровать PDF

Следующий фрагмент кода также работает с библиотекой Aspose.PDF.Drawing.

Установить привилегии на существующий PDF файл

Чтобы установить привилегии на PDF файл, создайте объект класса DocumentPrivilege и укажите права, которые вы хотите применить к документу. После определения привилегий передайте этот объект в качестве аргумента методу Encrypt объекта Document. Следующий фрагмент кода показывает, как установить привилегии PDF файла.

// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void SetPrivilegesOnExistingPdfFile()
{
    // The path to the documents directory
    var dataDir = RunExamples.GetDataDir_AsposePdf_SecuritySignatures();
    
    // Open PDF document
    using (var document = new Aspose.Pdf.Document(dataDir + "input.pdf"))
    {
        // Instantiate Document Privileges object
        // Apply restrictions on all privileges
        var documentPrivilege = Aspose.Pdf.Facades.DocumentPrivilege.ForbidAll;
        // Only allow screen reading
        documentPrivilege.AllowScreenReaders = true;
        // Encrypt the file with User and Owner password
        // Need to set the password, so that once the user views the file with user password
        // Only screen reading option is enabled
        document.Encrypt("user", "owner", documentPrivilege, Aspose.Pdf.CryptoAlgorithm.AESx128, false);
        // Save PDF document
        document.Save(dataDir + "SetPrivileges_out.pdf");
    }
}

Зашифровать PDF файл с использованием различных типов и алгоритмов шифрования

Вы можете использовать метод Encrypt объекта Document для шифрования PDF файла. Вы можете передать пароль пользователя, пароль владельца и разрешения в метод Encrypt. Кроме того, вы можете передать любое значение перечисления CryptoAlgorithm. Это перечисление предоставляет различные комбинации алгоритмов шифрования и размеров ключей. Вы можете передать значение по вашему выбору. Наконец, сохраните зашифрованный PDF файл с помощью метода Save объекта Document.

Пожалуйста, укажите разные пароли пользователя и владельца при шифровании PDF файла.

  • Пароль пользователя, если установлен, это то, что вам нужно предоставить для открытия PDF. Acrobat/Reader предложит пользователю ввести пароль пользователя. Если он неверный, документ не откроется.
  • Пароль владельца, если установлен, контролирует разрешения, такие как печать, редактирование, извлечение, комментирование и т.д. Acrobat/Reader запретит эти действия в зависимости от настроек разрешений. Acrobat потребует этот пароль, если вы хотите установить/изменить разрешения.

Следующий фрагмент кода показывает, как зашифровать PDF файлы.

// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void EncryptPdfFile()
{
    // The path to the documents directory
    var dataDir = RunExamples.GetDataDir_AsposePdf_SecuritySignatures();
    
    // Open PDF document
    using (var document = new Aspose.Pdf.Document(dataDir + "Encrypt.pdf"))
    {
        // Encrypt PDF
        document.Encrypt("user", "owner", 0, Aspose.Pdf.CryptoAlgorithm.RC4x128);
        // Save PDF document
        document.Save(dataDir + "Encrypt_out.pdf");
    }
}

Расшифровать PDF файл с использованием пароля владельца

Все чаще пользователи обмениваются PDF файлами с шифрованием, чтобы предотвратить несанкционированный доступ к документам, таким как печать/копирование/обмен/извлечение информации о содержимом PDF файла. Сегодня это лучший выбор для шифрования PDF файла, поскольку он сохраняет конфиденциальность и целостность содержимого. В этом отношении существует необходимость доступа к зашифрованному PDF файлу, поскольку такой доступ может быть получен только авторизованным пользователем. Также люди ищут различные решения для расшифровки PDF файлов в Интернете.

Лучше решить эту проблему один раз, используя библиотеку Aspose.PDF.

Чтобы расшифровать PDF файл, вам сначала нужно создать объект Document и открыть PDF с использованием пароля владельца. После этого вам нужно вызвать метод Decrypt объекта Document. Наконец, сохраните обновленный PDF файл с помощью метода Save объекта Document. Следующий фрагмент кода показывает, как расшифровать PDF файл.

// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void DecryptPdfFile()
{
    // The path to the documents directory
    var dataDir = RunExamples.GetDataDir_AsposePdf_SecuritySignatures();
    
    // Open PDF document with password
    using (var document = new Aspose.Pdf.Document(dataDir + "Decrypt.pdf", "password"))
    {
        // Decrypt PDF
        document.Decrypt();
        // Save PDF document
        document.Save(dataDir + "Decrypt_out.pdf");
    }
}

Изменить пароль PDF файла

Если вы хотите изменить пароль PDF файла, вам сначала нужно открыть PDF файл с использованием пароля владельца с помощью объекта Document. После этого вам нужно вызвать метод ChangePasswords объекта Document. Вам нужно передать текущий пароль владельца вместе с новым паролем пользователя и новым паролем владельца в этот метод. Наконец, сохраните обновленный PDF файл с помощью метода Save объекта Document.

  • Пароль пользователя, если установлен, это то, что вам нужно предоставить для открытия PDF. Acrobat/Reader предложит пользователю ввести пароль пользователя. Если он неверный, документ не откроется.
  • Пароль владельца, если установлен, контролирует разрешения, такие как печать, редактирование, извлечение, комментирование и т.д. Acrobat/Reader запретит эти действия в зависимости от настроек разрешений. Acrobat потребует этот пароль, если вы хотите установить/изменить разрешения.

Следующий фрагмент кода показывает, как изменить пароль PDF файла.

// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void ChangePassword()
{
    // The path to the documents directory
    var dataDir = RunExamples.GetDataDir_AsposePdf_SecuritySignatures();

    // Open PDF document with password
    using (var document = new Aspose.Pdf.Document(dataDir + "ChangePassword.pdf", "owner"))
    {
        // Change password
        document.ChangePasswords("owner", "newuser", "newowner");
        // Save PDF document
        document.Save(dataDir + "ChangePassword_out.pdf");
    }
}

Как - определить, защищен ли исходный PDF паролем

Aspose.PDF for .NET предоставляет отличные возможности работы с PDF документами. При использовании класса Document пространства имен Aspose.PDF для открытия PDF документа, который защищен паролем, нам нужно предоставить информацию о пароле в качестве аргумента конструктору Document, и в случае, если эта информация не предоставлена, генерируется сообщение об ошибке. На самом деле, при попытке открыть PDF файл с помощью объекта Document, конструктор пытается прочитать содержимое PDF файла, и в случае, если правильный пароль не предоставлен, генерируется сообщение об ошибке (это происходит для предотвращения несанкционированного доступа к документу).

При работе с зашифрованными PDF файлами вы можете столкнуться со сценарием, когда вам будет интересно определить, есть ли у PDF открытый пароль и/или пароль для редактирования. Иногда есть документы, которые не требуют информации о пароле при их открытии, но требуют информации для редактирования содержимого файла. Поэтому, чтобы удовлетворить вышеуказанные требования, класс PdfFileInfo, представленный в Aspose.PDF.Facades, предоставляет свойства, которые могут помочь в определении необходимой информации.

Получить информацию о безопасности PDF документа

PdfFileInfo содержит три свойства для получения информации о безопасности PDF документа.

  1. свойство PasswordType возвращает значение перечисления PasswordType:
    • PasswordType.None - документ не защищен паролем.
    • PasswordType.User - документ был открыт с паролем пользователя (или паролем открытия документа).
    • PasswordType.Owner - документ был открыт с паролем владельца (или паролем разрешений, редактирования).
    • PasswordType.Inaccessible - документ защищен паролем, но для его открытия требуется пароль, в то время как был предоставлен неверный пароль (или не был предоставлен пароль).
  2. логическое свойство HasOpenPassword - используется для определения, требует ли входной файл пароль при его открытии.
  3. логическое свойство HasEditPassword - используется для определения, требует ли входной файл пароль для редактирования его содержимого.

Определить правильный пароль из массива

Иногда возникает необходимость определить правильный пароль из массива паролей и открыть документ с правильным паролем. Следующий фрагмент кода демонстрирует шаги для перебора массива паролей и попытки открыть документ с правильным паролем.

// For complete examples and data files, visit https://github.com/aspose-pdf/Aspose.PDF-for-.NET
private static void DetermineCorrectPasswordFromArray()
{
    // The path to the documents directory
    var dataDir = RunExamples.GetDataDir_AsposePdf_SecuritySignatures();
    
    using (var info = new  Aspose.Pdf.Facades.PdfFileInfo())
    {
        // Bind PDF document
        info.BindPdf(dataDir + "IsPasswordProtected.pdf");
        // Determine if the source PDF is encrypted
        Console.WriteLine("File is password protected " + info.IsEncrypted);
    
        String[] passwords = new String[5] { "test", "test1", "test2", "test3", "sample" };
    
        for (int passwordcount = 0; passwordcount < passwords.Length; passwordcount++)
        {
            try
            {
                using (var document = new Aspose.Pdf.Document(dataDir + "IsPasswordProtected.pdf", passwords[passwordcount]))
                {
                    if (document.Pages.Count > 0)
                    {
                        Console.WriteLine("Number of Page in document are = " + document.Pages.Count);
                    }
                }
            }
            catch (Aspose.Pdf.InvalidPasswordException)
            {
                Console.WriteLine("Password = " + passwords[passwordcount] + "  is not correct");
            }
        }
    }
}