Signer des documents PDF à partir d'une carte à puce en Python
Aspose.PDF fournit des capacités robustes pour l’intégration des composants de signature visuelle et cryptographique, garantissant à la fois l’authenticité et une présentation professionnelle dans les documents PDF signés numériquement.
Utilisez ce flux de travail lorsque votre processus de signature dépend de certificats stockés sur des appareils matériels tels que les cartes à puce, les jetons USB ou les magasins de certificats gérés.
Signer avec une carte à puce en utilisant le champ de signature
Cet exemple montre comment signer numériquement un document PDF à l’aide d’un certificat externe avec Aspose.PDF for Python et appliquer une image d’apparence de signature personnalisée :
- Ouverture du document PDF.
- Création d’un objet PdfFileSignature et liaison de celui-ci au document.
- Récupération d’un certificat numérique local à l’aide d’une méthode personnalisée
get_local_certificate(). - Configuration d’une ExternalSignature basée sur le certificat sélectionné.
- Appliquer une image personnalisée d’apparence de signature (par ex., un logo d’entreprise ou une signature manuscrite).
- Signer numériquement la première page du document avec les métadonnées spécifiées (raison, contact, emplacement).
- Enregistrer le document signé dans un nouveau fichier de sortie.
Cette méthode est idéale pour les cas où les signatures doivent être appliquées de manière programmatique à l’aide de certificats externes—tels que des jetons matériels, des magasins de certificats ou des fournisseurs de confiance—et présentées avec une mise en page visuelle personnalisée.
Voici les extraits de code pour signer un document PDF à partir d’une carte à puce :
import sys
from os import path
import aspose.pdf as ap
import aspose.pydrawing as drawing
def sign_with_smart_card(infile: str, outfile: str, pngfile: str) -> None:
"""Sign a PDF document using a smart-card certificate."""
with ap.Document(infile) as document:
with ap.facades.PdfFileSignature() as pdf_signature:
pdf_signature.bind_pdf(document)
external_signature = ap.forms.ExternalSignature(get_local_certificate())
pdf_signature.signature_appearance = pngfile
pdf_signature.sign(
1,
"Reason",
"Contact",
"Location",
True,
drawing.Rectangle(100, 100, 200, 200),
external_signature,
)
pdf_signature.save(outfile)
Vérifier les signatures numériques
Cet extrait de code montre comment vérifier les signatures numériques dans un document PDF en utilisant Aspose.PDF for Python:
- Ouverture du fichier PDF.
- Création d’un ‘PdfFileSignature object’ et liaison au document.
- Récupération de la liste de tous les noms de champs de signature en utilisant ‘get_signature_names()’.
- Itération à travers chaque signature et vérification de sa validité avec ‘verify_signature()’.
- Lever une exception si une signature échoue la vérification.
import sys
from os import path
import aspose.pdf as ap
import aspose.pydrawing as drawing
def verify_external_signature(infile: str) -> None:
"""Verify an external signature in a PDF document."""
with ap.Document(infile) as document:
with ap.facades.PdfFileSignature(document) as pdf_signature:
for signature_name in pdf_signature.get_signature_names(True):
if not pdf_signature.verify_signature(signature_name):
raise Exception("Not verified")
Signer avec un certificat externe
Cet extrait de code montre comment ajouter et signer un champ de signature numérique dans un document PDF en utilisant Aspose.PDF for Python avec un certificat externe :
- Ouverture du fichier PDF en tant que flux binaire.
- Création d’un SignatureField et placement sur la première page du document à une position spécifiée.
- Récupération d’un certificat numérique local à l’aide d’une méthode personnalisée
get_local_certificate(). - Configuration d’un ExternalSignature avec des métadonnées telles que l’autorité, le motif et les coordonnées.
- Attribuer un nom de champ unique au champ de signature (partial_name = “sig1”).
- Ajouter le champ de signature aux champs de formulaire du PDF.
- Signer le champ avec le certificat externe.
- Enregistrer le document signé dans un fichier de sortie.
import sys
from os import path
import aspose.pdf as ap
import aspose.pydrawing as drawing
def get_signature_info_using_signature_field(infile: str, outfile: str) -> None:
"""Create a signature field and sign it with an external certificate."""
with open(infile, "rb+") as file_stream:
document = ap.Document(file_stream)
signature_field = ap.forms.SignatureField(
document.pages[1],
ap.Rectangle(100, 400, 10, 10, True),
)
selected_certificate = get_local_certificate()
external_signature = ap.forms.ExternalSignature(selected_certificate)
external_signature.authority = "Me"
external_signature.reason = "Reason"
external_signature.contact_info = "Contact"
signature_field.partial_name = "sig1"
document.form.add(signature_field, 1)
signature_field.sign(external_signature)
document.save(outfile)