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.