La signature numérique en PDF vous permet de sécuriser le document avant qu’il ne soit partagé avec les parties prenantes. La falsification du contenu d’un document PDF signé numériquement peut être facilement détectée et vérifiée. Afin de signer numériquement les documents PDF par programmation, je vais vous montrer comment ajouter et vérifier des signatures numériques en PDF à l’aide de Java. Nous couvrirons les scénarios suivants liés aux signatures numériques dans les PDF.

Bibliothèque Java pour signer numériquement un PDF

Pour ajouter et vérifier des signatures numériques dans un PDF, nous utiliserons Aspose.PDF for Java. Outre d’autres fonctionnalités de manipulation de PDF, Aspose.PDF for Java vous permet d’ajouter et de vérifier des signatures numériques dans des PDF de manière transparente. Vous pouvez télécharger le JAR de l’API ou l’installer dans votre application basée sur Maven.

Repository:

<repository>
    <id>AsposeJavaAPI</id>
    <name>Aspose Java API</name>
    <url>https://repository.aspose.com/repo/</url>
</repository>

Dependency:

<dependency>
    <groupId>com.aspose</groupId>
    <artifactId>aspose-pdf</artifactId>
    <version>20.6</version>
</dependency>

Ajouter une signature numérique à un PDF à l’aide de Java

Voici les étapes pour ajouter une signature numérique à un document PDF en utilisant Aspose.PDF for Java.

  • Créez une instance de la classe Document et initialisez-la avec le chemin du document PDF.
  • Initialisez la classe PdfFileSignature et transmettez-lui l’objet Document.
  • Créez une instance de la classe PKCS7 et initialisez-la avec le chemin d’un certificat et le mot de passe.
  • Initialisez la classe DocMDPSignature pour le type de signature MDP.
  • Définissez un Rectangle pour placer la signature sur la page du document.
  • Signez numériquement le document PDF à l’aide de la méthode PdfFileSignature.Certify().
  • Enregistrez le PDF signé à l’aide de la méthode PdfFileSignature.Save().

L’exemple de code suivant montre comment signer numériquement un PDF à l’aide de Java.

// Créer un objet Document
Document doc = new Document("input.pdf");
PdfFileSignature signature = new PdfFileSignature(doc);
PKCS7 pkcs = new PKCS7("certificate.pfx", "1234567890"); // Use PKCS7/PKCS7Detached objects
DocMDPSignature docMdpSignature = new DocMDPSignature(pkcs, DocMDPAccessPermissions.FillingInForms);
Rectangle rect = new Rectangle(100, 600, 400, 100);
// Définir l'apparence de la signature
signature.setSignatureAppearance("aspose-logo.png"); 
// Créez l'un des trois types de signature
signature.certify(1, "Signature Reason", "Contact", "Location", true, rect, docMdpSignature);
// Enregistrer un fichier PDF signé numériquement
signature.save("Digitally Signed PDF.pdf");

Signer numériquement un PDF avec un serveur d’horodatage utilisant Java

Aspose.PDF for Java vous permet également d’ajouter des signatures numériques au PDF avec le serveur TimeStamp. La classe TimestampSettings est utilisée à cette fin. L’exemple de code suivant montre comment ajouter une signature numérique à un PDF avec un serveur TimeStamp utilisant Java.

// Créer un objet Document
Document doc = new Document("input.pdf");
PdfFileSignature signature = new PdfFileSignature(doc);
PKCS7 pkcs = new PKCS7("certificate.pfx", "1234567890"); // Use PKCS7/PKCS7Detached objects
TimestampSettings timestampSettings = new TimestampSettings("https:\\your_timestamp_settings", "user:password"); // User/Password can be omitted
pkcs.setTimestampSettings(timestampSettings); 
Rectangle rect = new Rectangle(100, 600, 400, 100);
// Définir l'apparence de la signature
signature.setSignatureAppearance("aspose-logo.png"); 
// Créez l'un des trois types de signature
signature.sign(1, "Signature Reason", "Contact", "Location", true, rect, pkcs);
// Enregistrer un fichier PDF signé numériquement
signature.save("Digitally Signed PDF.pdf");

Vérifier la signature numérique dans un PDF à l’aide de Java

Lorsque vous recevez un PDF signé numériquement, vous pouvez vérifier sa signature assez facilement. Voici les étapes pour vérifier un PDF signé numériquement.

L’exemple de code suivant montre comment vérifier un document PDF signé numériquement à l’aide de Java.

// Créer une signature de fichier PDF
PdfFileSignature pdfSign = new PdfFileSignature();
// Relier le PDF
pdfSign.bindPdf("Digitally Signed PDF.pdf");
// Vérifier la signature en utilisant le nom de la signature
if (pdfSign.verifySigned("Signature1"))
{
	if (pdfSign.isCertified()) // Certified?
	{
		if (pdfSign.getAccessPermissions() == DocMDPAccessPermissions.FillingInForms) // Get access permission
		{
			// Faire quelque chose
		}
	} 
}

Conclusion

Dans cet article, vous avez appris à ajouter une signature numérique à un PDF à l’aide de Java. De plus, nous avons vu comment vérifier un fichier PDF signé numériquement en quelques étapes. Vous pouvez en savoir plus sur l’API Java PDF en utilisant la documentation ainsi que les exemples de code source hébergés sur GitHub.

Voir également