PDFBox - szyfrowanie dokumentu PDF

W poprzednim rozdziale widzieliśmy, jak wstawić obraz do dokumentu PDF. W tym rozdziale omówimy sposób szyfrowania dokumentu PDF.

Szyfrowanie dokumentu PDF

Dokument PDF można zaszyfrować za pomocą metod udostępnionych przez StandardProtectionPolicy i AccessPermission classes.

Plik AccessPermissionklasa służy do ochrony dokumentu PDF poprzez przypisanie do niego uprawnień dostępu. Korzystając z tej klasy, możesz ograniczyć użytkownikom możliwość wykonywania następujących operacji.

  • Wydrukuj dokument
  • Zmodyfikuj treść dokumentu
  • Skopiuj lub wyodrębnij zawartość dokumentu
  • Dodaj lub zmodyfikuj adnotacje
  • Wypełnij interaktywne pola formularzy
  • Wyodrębnij tekst i grafikę, aby były dostępne dla osób niedowidzących
  • Złóż dokument
  • Drukuj w gorszej jakości

Plik StandardProtectionPolicy class służy do dodawania ochrony hasłem do dokumentu.

Poniżej przedstawiono kroki szyfrowania istniejącego dokumentu PDF.

Krok 1: Ładowanie istniejącego dokumentu PDF

Załaduj istniejący dokument PDF metodą statyczną load() z PDDocumentklasa. Ta metoda akceptuje obiekt pliku jako parametr, ponieważ jest to metoda statyczna, którą można wywołać za pomocą nazwy klasy, jak pokazano poniżej.

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

Krok 2: Tworzenie obiektu uprawnień dostępu

Utwórz wystąpienie AccessPermission klasa, jak pokazano poniżej.

AccessPermission accessPermission = new AccessPermission();

Krok 3: Tworzenie obiektu StandardProtectionPolicy

Utwórz wystąpienie StandardProtectionPolicy class, przekazując hasło właściciela, hasło użytkownika i AccessPermission obiekt, jak pokazano poniżej.

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

Krok 4: Ustawianie długości klucza szyfrowania

Ustaw długość klucza szyfrowania za pomocą setEncryptionKeyLength() metoda, jak pokazano poniżej.

spp.setEncryptionKeyLength(128);

Krok 5: Ustawianie uprawnień

Ustaw uprawnienia za pomocą setPermissions()metoda klasy StandardProtectionPolicy. Ta metoda akceptuje plikAccessPermission obiekt jako parametr.

spp.setPermissions(accessPermission);

Krok 6: Ochrona dokumentu

Możesz zabezpieczyć swój dokument za pomocą rozszerzenia protect() metoda PDDocumentklasa, jak pokazano poniżej. PrzekażStandardProtectionPolicy obiekt jako parametr tej metody.

document.protect(spp);

Krok 7: Zapisywanie dokumentu

Po dodaniu wymaganej treści zapisz dokument PDF za pomocą rozszerzenia save() metoda PDDocument klasa, jak pokazano w poniższym bloku kodu.

document.save("Path");

Krok 8: Zamknięcie dokumentu

Na koniec zamknij dokument za pomocą close() metoda PDDocument klasa, jak pokazano poniżej.

document.close();

Przykład

Załóżmy, że mamy dokument PDF o nazwie sample.pdf, na ścieżce C:/PdfBox_Examples/ z pustymi stronami, jak pokazano poniżej.

Ten przykład pokazuje, jak zaszyfrować wyżej wymieniony dokument PDF. Tutaj załadujemy dokument PDF o nazwiesample.pdfi zaszyfruj. Zapisz ten kod w pliku o nazwieEncriptingPDF.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();

   }
}

Skompiluj i uruchom zapisany plik Java z wiersza poleceń, używając następujących poleceń.

javac EncriptingPDF.java
java EncriptingPDF

Po wykonaniu powyższy program szyfruje podany dokument PDF wyświetlając następujący komunikat.

Document encrypted

Jeśli spróbujesz otworzyć dokument sample.pdf, nie możesz, ponieważ jest zaszyfrowany. Zamiast tego prosi o wpisanie hasła, aby otworzyć dokument, jak pokazano poniżej.