Signer des documents PDF à partir d'une carte à puce en Java
Contents
[
Hide
]
Le référentiel Java actuel n’inclut pas d’exemple de signature de carte à puce dédié basé sur la source sous facades/pdffilesignature, mais le flux de travail suivant montre le modèle d’API typique pour signer un PDF avec un certificat sélectionné dans un magasin de certificats local.
Signer un document PDF à partir d’une carte à puce
- Ouvrez le PDF source Document.
- Créez une façade PdfFileSignature et liez le document PDF source.
- Récupérez le certificat local et créez la ExternalSignature requise.
- Configurez l’apparence de la signature visuelle et la cible Rectangle.
- Appliquez la signature au document PDF via PdfFileSignature.
- Enregistrez le document PDF mis à jour.
- Liez le document chargé à la façade PdfFileSignature avec
bindPdf(...). - Récupérez le certificat local qui représente les informations d’identification de la carte à puce en appelant
getLocalCertificate(). - Vérifiez si un certificat a été trouvé. Sinon, enregistrez le fichier de sortie inchangé et arrêtez le flux de travail.
- Créez une ExternalSignature à partir du certificat sélectionné.
- Définissez l’image d’apparence de la signature visuelle avec
setSignatureAppearance(...). - Appelez
sign(...)avec la page cible, le motif, le contact, l’emplacement, l’indicateur de visibilité, la signature Rectangle et l’objet de signature externe. - Enregistrez le PDF signé dans le chemin de sortie.
public static void signWithSmartCard(Path inputFile, Path outputFile, Path pngFile) {
try (Document document = new Document(inputFile.toString());
PdfFileSignature pdfSignature = new PdfFileSignature()) {
pdfSignature.bindPdf(document);
X509Certificate2 selectedCertificate = getLocalCertificate();
if (selectedCertificate == null) {
System.out.println("Local certificate was not found.");
document.save(outputFile.toString());
return;
}
ExternalSignature externalSignature = new ExternalSignature(selectedCertificate, null);
pdfSignature.setSignatureAppearance(pngFile.toString());
pdfSignature.sign(1, "Reason", "Contact", "Location", true,
new java.awt.Rectangle(100, 100, 200, 200), externalSignature);
pdfSignature.save(outputFile.toString());
}
}