Définir des Privilèges, Chiffrer et Déchiffrer un Fichier PDF
Définir des Privilèges sur un Fichier PDF Existant
Pour définir des privilèges sur un fichier PDF, créez un objet de la classe DocumentPrivilege et spécifiez les droits que vous souhaitez appliquer au document. Une fois que les privilèges ont été définis, passez cet objet en argument à la méthode Encrypt de l’objet Document. Le snippet de code suivant vous montre comment définir les privilèges d’un fichier PDF.
public static void SetPrivilegesOnExistingPDF()
{
// Charger un fichier PDF source
Document document = new Document(_dataDir + "input.pdf");
// Instancier un objet Document Privileges
// Appliquer des restrictions sur tous les privilèges
DocumentPrivilege documentPrivilege = DocumentPrivilege.getForbidAll();
// Autoriser uniquement la lecture à l'écran
documentPrivilege.setAllowScreenReaders(true);
// Chiffrer le fichier avec un mot de passe utilisateur et propriétaire.
// Besoin de définir le mot de passe, afin que lorsque l'utilisateur consulte le fichier avec le mot de passe utilisateur,
// Seule l'option de lecture à l'écran est activée
document.encrypt("user", "owner", documentPrivilege, CryptoAlgorithm.AESx128, false);
// Enregistrer le document mis à jour
document.save(_dataDir + "SetPrivileges_out.pdf");
}
Chiffrer un fichier PDF en utilisant différents types et algorithmes de chiffrement
Vous pouvez utiliser la méthode Encrypt de l’objet Document pour chiffrer un fichier PDF. Vous pouvez passer le mot de passe utilisateur, le mot de passe propriétaire et les permissions à la méthode Encrypt. En plus de cela, vous pouvez passer n’importe quelle valeur de l’énumération CryptoAlgorithm. Cette énumération fournit différentes combinaisons d’algorithmes de chiffrement et de tailles de clés. Vous pouvez passer la valeur de votre choix. Enfin, enregistrez le fichier PDF chiffré en utilisant la méthode save(..) de l’objet Document.
Veuillez spécifier des mots de passe utilisateur et propriétaire différents lors du chiffrement du fichier PDF.
The following code snippet shows you how to encrypt PDF files.
public static void EncryptPDFFile() {
// Charger un fichier PDF source
Document document = new Document(_dataDir + "input.pdf");
// Instancier un objet Document Privileges
// Appliquer des restrictions sur tous les privilèges
DocumentPrivilege documentPrivilege = DocumentPrivilege.getForbidAll();
// Permettre uniquement la lecture à l'écran
documentPrivilege.setAllowScreenReaders(true);
// Chiffrer le fichier avec un mot de passe utilisateur et propriétaire.
// Besoin de définir le mot de passe, afin qu'une fois que l'utilisateur
// visualise le fichier avec le mot de passe utilisateur,
// Seule l'option de lecture à l'écran est activée
document.encrypt("user", "owner", documentPrivilege, CryptoAlgorithm.AESx128, false);
// Enregistrer le document mis à jour
document.save(_dataDir + "SetPrivileges_out.pdf");
}
Décrypter un fichier PDF en utilisant le mot de passe propriétaire
Pour décrypter le fichier PDF, vous devez d’abord créer un objet Document et ouvrir le PDF en utilisant le mot de passe propriétaire. Après cela, vous devez appeler la méthode Decrypt de l’objet Document. Enfin, enregistrez le fichier PDF mis à jour en utilisant la méthode Save de l’objet Document. L’extrait de code suivant vous montre comment décrypter le fichier PDF.
public static void DecryptPDFFile() {
// Ouvrir le document
Document document = new Document(_dataDir + "Decrypt.pdf", "password");
// Décrypter PDF
document.decrypt();
// Enregistrer le PDF mis à jour
document.save(_dataDir + "Decrypt_out.pdf");
}
Changer le mot de passe d’un fichier PDF
Si vous souhaitez changer le mot de passe d’un fichier PDF, vous devez d’abord ouvrir le fichier PDF en utilisant le mot de passe propriétaire avec l’objet Document. Après cela, vous devez appeler la méthode ChangePasswords de l’objet Document. Vous devez passer le mot de passe propriétaire actuel ainsi que le nouveau mot de passe utilisateur et le nouveau mot de passe propriétaire à cette méthode. Enfin, enregistrez le fichier PDF mis à jour en utilisant la méthode Save de l’objet Document.
Le code suivant vous montre comment changer le mot de passe d’un fichier PDF.
public static void ChangePassword_PDF_File() {
// Ouvrir le document
Document document = new Document(_dataDir+ "ChangePassword.pdf", "owner");
// Changer le mot de passe
document.changePasswords("owner", "newuser", "newowner");
// Enregistrer le PDF mis à jour
document.save(_dataDir + "ChangePassword_out.pdf");
}
Comment - déterminer si le PDF source est protégé par un mot de passe
Aspose.PDF pour Java offre de grandes capacités de gestion des documents PDF. Lorsque vous utilisez la classe Document du package com.aspose.pdf pour ouvrir un document PDF protégé par mot de passe, nous devons fournir les informations de mot de passe comme argument au constructeur Document et dans le cas où ces informations ne sont pas fournies, un message d’erreur est généré. En fait, lorsque vous essayez d’ouvrir un fichier PDF avec un objet Document, le constructeur essaie de lire le contenu du fichier PDF et dans le cas où le mot de passe correct n’est pas fourni, un message d’erreur est généré (cela se produit pour empêcher l’accès non autorisé au document).
Lorsque vous traitez des fichiers PDF cryptés, vous pouvez rencontrer le scénario où vous seriez intéressé à détecter si un PDF a un mot de passe d’ouverture et/ou un mot de passe de modification. Parfois, il existe des documents qui ne nécessitent pas d’informations de mot de passe lors de leur ouverture, mais ils nécessitent des informations pour modifier le contenu du fichier. Donc, afin de répondre aux exigences ci-dessus, la classe PdfFileInfo présente dans le package com.aspose.pdf.facades fournit des méthodes qui peuvent aider à déterminer les informations requises.
Obtenir des informations sur la sécurité du document PDF
PdfFileInfo contient trois méthodes pour obtenir des informations sur la sécurité du document PDF.
- La méthode getPasswordType() renvoie une valeur d’énumération PasswordType :
- PasswordType.None - le document n’est pas protégé par mot de passe
- PasswordType.User - le document a été ouvert avec le mot de passe utilisateur (ou ouverture du document)
- PasswordType.Owner - le document a été ouvert avec le mot de passe propriétaire (ou permissions, édition)
- PasswordType.Inaccessible - le document est protégé par mot de passe mais un mot de passe est nécessaire pour l’ouvrir alors qu’un mot de passe invalide (ou aucun mot de passe) a été fourni.
- La méthode hasOpenPassword() est utilisée pour déterminer si le fichier d’entrée nécessite un mot de passe lors de son ouverture.
- La méthode hasEditPassword() est utilisée pour déterminer si le fichier d’entrée nécessite un mot de passe pour modifier son contenu.
Déterminer le mot de passe correct à partir d’un tableau
Parfois, il est nécessaire de déterminer le mot de passe correct à partir d’un tableau de mots de passe et d’ouvrir le document avec le mot de passe correct. Le code suivant illustre les étapes pour parcourir le tableau de mots de passe et essayer d’ouvrir le document avec le mot de passe correct.
public static void DetermineCorrectPasswordFromArray() {
// Charger le fichier PDF source
PdfFileInfo info = new PdfFileInfo();
info.bindPdf(_dataDir + "IsPasswordProtected.pdf");
// Déterminer si le PDF source est chiffré
System.out.println("Le fichier est protégé par mot de passe " + info.isEncrypted());
String[] passwords = { "test", "test1", "test2", "test3", "sample" };
for (int passwordcount = 0; passwordcount < passwords.length; passwordcount++)
{
try
{
Document doc = new Document(_dataDir + "IsPasswordProtected.pdf", passwords[passwordcount]);
if (doc.getPages().size() > 0)
System.out.println("Le nombre de pages dans le document est = " + doc.getPages().size());
}
catch (InvalidPasswordException ex)
{
System.out.println("Le mot de passe = " + passwords[passwordcount] + " n'est pas correct");
}
}