Signer des documents PDF
Aspose.PDF for Python via .NET fournit le PdfFileSignature façade pour appliquer des signatures numériques à des documents PDF existants. En utilisant un fichier de certificat, vous pouvez signer un document par programmation, placer la signature sur une page, attribuer des métadonnées de signature et personnaliser la façon dont la signature est affichée.
Cet article présente plusieurs flux de travail de signature courants :
- Créer et lier un
PdfFileSignatureobjet au PDF d’entrée. - Configurez le certificat de signature.
- Appliquez une signature numérique à la page cible.
- Attribuez éventuellement un nom de signature et une apparence visible.
- Enregistrez le PDF signé.
Préparer des aides de signature réutilisables
Avant d’appliquer une signature numérique à un PDF, il est utile de mettre en place un petit groupe de fonctions d’aide réutilisables. Ces aides initialisent le gestionnaire de signature, définissent la zone de signature visible, configurent le certificat et créent des objets de signature PKCS#7 réutilisables afin que les exemples de signature ci-dessous restent autonomes et plus faciles à suivre.
import aspose.pdf as ap
import aspose.pdf.facades as pdf_facades
import aspose.pydrawing as apd
DEFAULT_CERTIFICATE_PASSWORD = "Aspose2021"
DEFAULT_SIGNATURE_NAME = "Signature1"
def create_pdf_file_signature(infile):
pdf_signature = pdf_facades.PdfFileSignature()
pdf_signature.bind_pdf(infile)
return pdf_signature
def create_signature_rectangle():
return apd.Rectangle(10, 10, 200, 60)
def configure_signature_certificate(
pdf_signature, certificate_path, certificate_password=DEFAULT_CERTIFICATE_PASSWORD
):
pdf_signature.set_certificate(certificate_path, certificate_password)
def create_pkcs7_signature(
certificate_path, certificate_password=DEFAULT_CERTIFICATE_PASSWORD
):
signature = ap.forms.PKCS7(certificate_path, certificate_password)
signature.reason = "Document approval"
signature.contact_info = "qa@example.com"
signature.location = "New York, USA"
signature.authority = "Aspose.PDF Example"
return signature
def create_custom_signature_appearance():
appearance = ap.forms.SignatureCustomAppearance()
appearance.font_family_name = "Arial"
appearance.font_size = 10
appearance.show_contact_info = True
appearance.show_location = True
appearance.show_reason = True
return appearance
Signer un PDF avec des paramètres de certificat de base
Cette approche configure le certificat directement sur le PdfFileSignature objet. Il est utile lorsque vous souhaitez un flux de signature simple avec des métadonnées de signature standard et aucune gestion séparée des objets de signature.
import aspose.pdf.facades as pdf_facades
import sys
from os import path
def sign_pdf_with_basic_parameters(infile, outfile, certificate_path):
pdf_signature = create_pdf_file_signature(infile)
try:
configure_signature_certificate(pdf_signature, certificate_path)
pdf_signature.sign(
1,
"Document approval",
"qa@example.com",
"New York, USA",
False,
create_signature_rectangle(),
)
pdf_signature.save(outfile)
finally:
pdf_signature.close()
Signer un PDF avec un objet PKCS7
Utilisez un PKCS7 objet lorsque vous devez préparer la signature d’abord, puis la transmettre à l’appel de signature. Ce modèle vous donne plus de contrôle sur les paramètres de signature et constitue une bonne base pour des flux de travail plus avancés.
import aspose.pdf.facades as pdf_facades
import sys
from os import path
def sign_pdf_with_certificate_object(infile, outfile, certificate_path):
pdf_signature = create_pdf_file_signature(infile)
try:
signature = create_pkcs7_signature(certificate_path)
pdf_signature.sign(1, False, create_signature_rectangle(), signature)
pdf_signature.save(outfile)
finally:
pdf_signature.close()
Signer un PDF avec une signature nommée
Si votre flux de travail de document dépend d’un nom de champ de signature prédéfini, transmettez ce nom à sign(). Cela facilite la référence à la signature ultérieurement pour la validation, le traitement ou l’intégration à un flux de travail d’approbation.
import aspose.pdf.facades as pdf_facades
import sys
from os import path
def sign_pdf_with_named_signature(infile, outfile, certificate_path):
pdf_signature = create_pdf_file_signature(infile)
try:
signature = create_pkcs7_signature(certificate_path)
signature.reason = "Approved by signing workflow"
pdf_signature.sign(
1,
DEFAULT_SIGNATURE_NAME,
"Approved by signing workflow",
"qa@example.com",
"New York, USA",
True,
create_signature_rectangle(),
signature,
)
pdf_signature.save(outfile)
finally:
pdf_signature.close()
Appliquer une signature visible
Vous pouvez rendre la signature visible sur la page PDF en assignant une apparence personnalisée à la PKCS7 objet. Ceci est utile lorsque le document de sortie doit afficher les détails d’approbation tels que la raison, le lieu et les coordonnées aux utilisateurs finaux.
import aspose.pdf.facades as pdf_facades
import sys
from os import path
def apply_visible_signature(infile, outfile, certificate_path):
pdf_signature = create_pdf_file_signature(infile)
try:
signature = create_pkcs7_signature(certificate_path)
signature.reason = "Visible approval signature"
signature.custom_appearance = create_custom_signature_appearance()
pdf_signature.sign(
1,
"Visible approval signature",
"qa@example.com",
"New York, USA",
True,
create_signature_rectangle(),
signature,
)
pdf_signature.save(outfile)
finally:
pdf_signature.close()