Учебники

PDFBox — Шифрование PDF документа

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

Шифрование PDF документа

Вы можете зашифровать документ PDF, используя методы, предоставляемые классами StandardProtectionPolicy и AccessPermission .

Класс AccessPermission используется для защиты документа PDF путем назначения ему прав доступа. Используя этот класс, вы можете запретить пользователям выполнять следующие операции.

  • Распечатать документ
  • Изменить содержание документа
  • Копировать или извлечь содержимое документа
  • Добавить или изменить аннотации
  • Заполните поля интерактивной формы
  • Извлечение текста и графики для доступности для людей с нарушениями зрения
  • Собрать документ
  • Печать в ухудшенном качестве

Класс StandardProtectionPolicy используется для добавления защиты документа на основе пароля.

Ниже приведены шаги для шифрования существующего документа PDF.

Шаг 1. Загрузка существующего PDF-документа

Загрузите существующий документ PDF, используя статический метод load () класса PDDocument . Этот метод принимает объект файла в качестве параметра, поскольку это статический метод, который можно вызвать, используя имя класса, как показано ниже.

File file = new File("path of the document") 
PDDocument document = PDDocument.load(file);

Шаг 2: Создание объекта прав доступа

Создайте класс AccessPermission, как показано ниже.

AccessPermission accessPermission = new AccessPermission();

Шаг 3. Создание объекта StandardProtectionPolicy

Создайте экземпляр класса StandardProtectionPolicy , передав пароль владельца, пароль пользователя и объект AccessPermission, как показано ниже.

StandardProtectionPolicy spp = new StandardProtectionPolicy("1234","1234",accessPermission);

Шаг 4: Установка длины ключа шифрования

Установите длину ключа шифрования, используя метод setEncryptionKeyLength (), как показано ниже.

spp.setEncryptionKeyLength(128);

Шаг 5: Установка разрешений

Установите разрешения с помощью метода setPermissions () класса StandardProtectionPolicy. Этот метод принимает объект AccessPermission в качестве параметра.

spp.setPermissions(accessPermission);

Шаг 6: Защита документа

Вы можете защитить свой документ с помощью метода protect () класса PDDocument, как показано ниже. Передайте объект StandardProtectionPolicy в качестве параметра этому методу.

document.protect(spp);

Шаг 7: Сохранение документа

После добавления необходимого содержимого сохраните документ PDF с помощью метода save () класса PDDocument, как показано в следующем блоке кода.

document.save("Path");

Шаг 8: Закрытие документа

Наконец, закройте документ, используя метод close () класса PDDocument, как показано ниже.

document.close();

пример

Предположим, у нас есть документ PDF с именем sample.pdf по пути C: / PdfBox_Examples / с пустыми страницами, как показано ниже.

Образец документа

Этот пример демонстрирует, как зашифровать вышеупомянутый документ PDF. Здесь мы загрузим документ PDF с именем sample.pdf и зашифруем его. Сохраните этот код в файле с именем EncriptingPDF.java.

import java.io.File;
 
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.encryption.AccessPermission;
import org.apache.pdfbox.pdmodel.encryption.StandardProtectionPolicy;
public class EncriptingPDF {
  
   public static void main(String args[]) throws Exception {
      //Loading an existing document
      File file = new File("C:/PdfBox_Examples/sample.pdf");
      PDDocument document = PDDocument.load(file);
   
      //Creating access permission object
      AccessPermission ap = new AccessPermission();         

      //Creating StandardProtectionPolicy object
      StandardProtectionPolicy spp = new StandardProtectionPolicy("1234", "1234", ap);

      //Setting the length of the encryption key
      spp.setEncryptionKeyLength(128);

      //Setting the access permissions
      spp.setPermissions(ap);

      //Protecting the document
      document.protect(spp);

      System.out.println("Document encrypted");

      //Saving the document
      document.save("C:/PdfBox_Examples/sample.pdf");
      //Closing the document
      document.close();

   }
}

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

javac EncriptingPDF.java
java EncriptingPDF

После выполнения вышеуказанная программа шифрует данный PDF-документ, отображая следующее сообщение.

Document encrypted

Если вы попытаетесь открыть документ sample.pdf , вы не сможете, поскольку он зашифрован. Вместо этого он предлагает ввести пароль, чтобы открыть документ, как показано ниже.