В этой статье представлено пошаговое руководство и примеры кода для программного шифрования и расшифровки PDF-файлов на языке Java.

В различных случаях документы PDF шифруются до того, как они будут переданы заинтересованным сторонам. Шифрование защищает документ от несанкционированного доступа, а также от подделки содержимого. Существует несколько популярных способов защиты PDF-документов: шифрование PDF с помощью пароля или ограничение прав доступа пользователя, таких как печать, редактирование, копирование и т. д. В этой статье показано, как зашифровать или расшифровать PDF-файл в Java. Кроме того, вы узнаете, как ограничить права пользователя в документе PDF.
- Java API для шифрования или расшифровки PDF
- Зашифровать файл PDF с помощью Java
- Расшифровать файл PDF с помощью Java
- Изменить разрешения безопасности в PDF с помощью Java
Java API для шифрования или расшифровки PDF — скачать бесплатно
Aspose.PDF for Java — это многофункциональный API для работы с PDF, который позволяет беспрепятственно работать с шифрованием и дешифрованием PDF. Кроме того, он позволяет программно изменять привилегии пользователя в документах PDF. Вы можете скачать API бесплатно или установить его, используя следующие конфигурации Maven.
<repository>
<id>AsposeJavaAPI</id>
<name>Aspose Java API</name>
<url>https://repository.aspose.com/repo/</url>
</repository>
<dependency>
<groupId>com.aspose</groupId>
<artifactId>aspose-pdf</artifactId>
<version>20.9</version>
<classifier>jdk17</classifier>
</dependency>
Зашифровать файл PDF в Java
Шифрование документа PDF требует, чтобы вы установили пароль, который будет использоваться для открытия и доступа к документу. Наряду с этим вы можете выбрать один из следующих криптографических алгоритмов, которые будут использоваться при шифровании.
Ниже приведены шаги для шифрования файла PDF в Java.
- Загрузите документ PDF, используя класс Document.
- Зашифруйте PDF с помощью метода Document.encrypt(“пользователь\пароль”, “владелец\пароль”, 0, CryptoAlgorithm).
- Сохраните зашифрованный PDF-файл с помощью метода Document.save(string).
В следующем примере кода показано, как зашифровать PDF-документ с помощью Java.
// Полные примеры и файлы данных см. на странице https://github.com/aspose-pdf/Aspose.Pdf-for-Java.
// открыть документ
Document document = new Document("input.pdf");
// зашифровать PDF
document.encrypt("user", "owner", 0, CryptoAlgorithm.AESx256);
// сохранить обновленный PDF
document.save("Encrypted_output.pdf");
При открытии зашифрованного PDF-файла появляется следующее диалоговое окно.

Расшифровать файл PDF в Java
Для расшифровки зашифрованного документа PDF требуется пароль пользователя или владельца. Ниже приведены шаги для расшифровки файла PDF в Java.
- Загрузите зашифрованный PDF-файл с помощью класса Document, указав пароль в конструкторе.
- Вызовите метод Document.decrypt() для расшифровки PDF.
- Сохраните расшифрованный документ PDF с помощью метода Document.save(string).
В следующем примере кода показано, как расшифровать зашифрованный PDF-файл с помощью Java.
// Полные примеры и файлы данных см. на странице https://github.com/aspose-pdf/Aspose.Pdf-for-Java.
// открыть документ
Document document = new Document("input.pdf", "password");
// расшифровать PDF
document.decrypt();
// сохранить обновленный PDF
document.save("output.pdf");
Изменить разрешения безопасности в PDF с помощью Java
Вы также можете ограничить доступ пользователя для выполнения различных операций при шифровании PDF-документов. Ниже приведены разрешения, которые вы можете установить.
- Печать документа – позволяет распечатать документ.
- Изменить содержимое — позволяет изменять содержимое.
- Извлечь содержимое — позволяет копировать содержимое из документа.
- Изменить текстовые аннотации — позволяет добавлять или обновлять текстовые аннотации.
- Заполнить форму — позволяет заполнять поля интерактивной формы.
- Извлечение содержимого с ограниченными возможностями — позволяет извлекать текст и графику (для пользователей с ограниченными возможностями).
- Собрать документ — позволяет вставлять, поворачивать или удалять страницы, а также создавать закладки или эскизы изображений.
- Качество печати — позволяет печатать документы с высоким разрешением.
Ниже приведены шаги для установки или изменения разрешений в документе PDF.
- Загрузите PDF-файл с помощью класса Document.
- Используйте класс DocumentPrivilege для установки разрешений.
- Зашифруйте PDF-файл и сохраните его, как в предыдущих примерах.
В следующем примере кода показано, как изменить разрешения в документе PDF с помощью Java.
// Полные примеры и файлы данных см. на странице https://github.com/aspose-pdf/Aspose.Pdf-for-Java.
Document document = new Document("inputFile.pdf");
try /* JAVA: was using */
{
DocumentPrivilege documentPrivilege = DocumentPrivilege.getForbidAll();
documentPrivilege.setAllowScreenReaders(true);
documentPrivilege.setAllowPrint(true);
document.encrypt("user", "owner", documentPrivilege, CryptoAlgorithm.AESx128, false);
document.save("outputFile.pdf");
} finally {
if (document != null)
document.dispose();
}
Ниже приведены разрешения в зашифрованном файле PDF.

Вывод
В этой статье вы узнали, как шифровать или расшифровывать файлы PDF в Java. Кроме того, вы увидели, как изменить привилегии пользователя в документе PDF программно на Java. Вы можете изучить и узнать больше о Java PDF API, используя документацию.