PDFBox - Crypter un document PDF

Dans le chapitre précédent, nous avons vu comment insérer une image dans un document PDF. Dans ce chapitre, nous verrons comment crypter un document PDF.

Crypter un document PDF

Vous pouvez crypter un document PDF en utilisant les méthodes fournies par StandardProtectionPolicy et AccessPermission classes.

le AccessPermissionLa classe est utilisée pour protéger le document PDF en lui attribuant des autorisations d'accès. En utilisant cette classe, vous pouvez empêcher les utilisateurs d'effectuer les opérations suivantes.

  • Imprimez le document
  • Modifier le contenu du document
  • Copier ou extraire le contenu du document
  • Ajouter ou modifier des annotations
  • Remplissez les champs de formulaire interactifs
  • Extraire du texte et des graphiques pour l'accessibilité aux personnes malvoyantes
  • Assemblez le document
  • Impression en qualité dégradée

le StandardProtectionPolicy La classe est utilisée pour ajouter une protection basée sur un mot de passe à un document.

Voici les étapes pour crypter un document PDF existant.

Étape 1: chargement d'un document PDF existant

Charger un document PDF existant en utilisant la méthode statique load() du PDDocumentclasse. Cette méthode accepte un objet fichier en tant que paramètre, puisqu'il s'agit d'une méthode statique, vous pouvez l'appeler en utilisant le nom de classe comme indiqué ci-dessous.

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

Étape 2: création d'un objet d'autorisation d'accès

Instancier le AccessPermission classe comme indiqué ci-dessous.

AccessPermission accessPermission = new AccessPermission();

Étape 3: Création d'un objet StandardProtectionPolicy

Instancier le StandardProtectionPolicy classe en passant le mot de passe du propriétaire, le mot de passe de l'utilisateur et le AccessPermission objet comme indiqué ci-dessous.

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

Étape 4: Définition de la longueur de la clé de chiffrement

Définissez la longueur de la clé de chiffrement à l'aide du setEncryptionKeyLength() méthode comme indiqué ci-dessous.

spp.setEncryptionKeyLength(128);

Étape 5: Définition des autorisations

Définissez les autorisations à l'aide du setPermissions()méthode de la classe StandardProtectionPolicy. Cette méthode accepte unAccessPermission objet comme paramètre.

spp.setPermissions(accessPermission);

Étape 6: protection du document

Vous pouvez protéger votre document en utilisant le protect() méthode de la PDDocumentclasse comme indiqué ci-dessous. Passe leStandardProtectionPolicy objet comme paramètre de cette méthode.

document.protect(spp);

Étape 7: enregistrement du document

Après avoir ajouté le contenu requis, enregistrez le document PDF à l'aide du save() méthode de la PDDocument class comme indiqué dans le bloc de code suivant.

document.save("Path");

Étape 8: fermeture du document

Enfin, fermez le document en utilisant close() méthode de PDDocument classe comme indiqué ci-dessous.

document.close();

Exemple

Supposons que nous ayons un document PDF nommé sample.pdf, Sur le chemin C:/PdfBox_Examples/ avec des pages vides comme indiqué ci-dessous.

Cet exemple montre comment crypter le document PDF mentionné ci-dessus. Ici, nous allons charger le document PDF nommésample.pdfet cryptez-le. Enregistrez ce code dans un fichier avec un nomEncriptingPDF.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();

   }
}

Compilez et exécutez le fichier Java enregistré à partir de l'invite de commande à l'aide des commandes suivantes.

javac EncriptingPDF.java
java EncriptingPDF

Lors de l'exécution, le programme ci-dessus crypte le document PDF donné affichant le message suivant.

Document encrypted

Si vous essayez d'ouvrir le document sample.pdf, vous ne pouvez pas, car il est crypté. Au lieu de cela, il vous invite à taper le mot de passe pour ouvrir le document comme indiqué ci-dessous.