PDFBox - Verschlüsseln eines PDF-Dokuments

Im vorherigen Kapitel haben wir gesehen, wie Sie ein Bild in ein PDF-Dokument einfügen. In diesem Kapitel wird erläutert, wie Sie ein PDF-Dokument verschlüsseln.

PDF-Dokument verschlüsseln

Sie können ein PDF-Dokument mit den von bereitgestellten Methoden verschlüsseln StandardProtectionPolicy und AccessPermission classes.

Das AccessPermissionDie Klasse dient zum Schutz des PDF-Dokuments durch Zuweisen von Zugriffsberechtigungen. Mit dieser Klasse können Sie Benutzer daran hindern, die folgenden Vorgänge auszuführen.

  • Drucken Sie das Dokument
  • Ändern Sie den Inhalt des Dokuments
  • Kopieren oder extrahieren Sie den Inhalt des Dokuments
  • Anmerkungen hinzufügen oder ändern
  • Füllen Sie interaktive Formularfelder aus
  • Extrahieren Sie Text und Grafiken für die Zugänglichkeit für sehbehinderte Personen
  • Bauen Sie das Dokument zusammen
  • Drucken Sie in schlechter Qualität

Das StandardProtectionPolicy Klasse wird verwendet, um einem Dokument einen kennwortbasierten Schutz hinzuzufügen.

Im Folgenden finden Sie die Schritte zum Verschlüsseln eines vorhandenen PDF-Dokuments.

Schritt 1: Laden eines vorhandenen PDF-Dokuments

Laden Sie ein vorhandenes PDF-Dokument mit der statischen Methode load() des PDDocumentKlasse. Diese Methode akzeptiert ein Dateiobjekt als Parameter, da dies eine statische Methode ist, die Sie unter Verwendung des Klassennamens wie unten gezeigt aufrufen können.

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

Schritt 2: Erstellen eines Zugriffsberechtigungsobjekts

Instanziieren Sie die AccessPermission Klasse wie unten gezeigt.

AccessPermission accessPermission = new AccessPermission();

Schritt 3: Erstellen eines StandardProtectionPolicy-Objekts

Instanziieren Sie die StandardProtectionPolicy Klasse durch Übergabe des Besitzerkennworts, des Benutzerkennworts und des AccessPermission Objekt wie unten gezeigt.

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

Schritt 4: Einstellen der Länge des Verschlüsselungsschlüssels

Stellen Sie die Länge des Verschlüsselungsschlüssels mit ein setEncryptionKeyLength() Methode wie unten gezeigt.

spp.setEncryptionKeyLength(128);

Schritt 5: Festlegen der Berechtigungen

Stellen Sie die Berechtigungen mit ein setPermissions()Methode der StandardProtectionPolicy-Klasse. Diese Methode akzeptiert eineAccessPermission Objekt als Parameter.

spp.setPermissions(accessPermission);

Schritt 6: Schützen des Dokuments

Sie können Ihr Dokument mit dem schützen protect() Methode der PDDocumentKlasse wie unten gezeigt. Übergeben Sie dieStandardProtectionPolicy Objekt als Parameter für diese Methode.

document.protect(spp);

Schritt 7: Speichern des Dokuments

Speichern Sie nach dem Hinzufügen des erforderlichen Inhalts das PDF-Dokument mit dem save() Methode der PDDocument Klasse wie im folgenden Codeblock gezeigt.

document.save("Path");

Schritt 8: Schließen des Dokuments

Schließen Sie zum Schluss das Dokument mit close() Methode von PDDocument Klasse wie unten gezeigt.

document.close();

Beispiel

Angenommen, wir haben ein PDF-Dokument mit dem Namen sample.pdf, in dem Weg C:/PdfBox_Examples/ mit leeren Seiten wie unten gezeigt.

Dieses Beispiel zeigt, wie das oben genannte PDF-Dokument verschlüsselt wird. Hier laden wir das genannte PDF-Dokumentsample.pdfund verschlüsseln. Speichern Sie diesen Code in einer Datei mit NamenEncriptingPDF.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();

   }
}

Kompilieren Sie die gespeicherte Java-Datei und führen Sie sie mit den folgenden Befehlen an der Eingabeaufforderung aus.

javac EncriptingPDF.java
java EncriptingPDF

Bei der Ausführung verschlüsselt das obige Programm das angegebene PDF-Dokument mit der folgenden Meldung.

Document encrypted

Wenn Sie versuchen, das Dokument zu öffnen sample.pdfkönnen Sie nicht, da es verschlüsselt ist. Stattdessen werden Sie aufgefordert, das Kennwort einzugeben, um das Dokument wie unten gezeigt zu öffnen.