Firmar documentos PDF
Aspose.PDF for Python via .NET proporciona la PdfFileSignature fachada para aplicar firmas digitales a documentos PDF existentes. Usando un archivo de certificado, puedes firmar un documento programáticamente, colocar la firma en una página, asignar metadatos de la firma y personalizar cómo se muestra la firma.
Este artículo demuestra varios flujos de trabajo de firma comunes:
- Crear y vincular un
PdfFileSignatureobjeto al PDF de entrada. - Configure el certificado de firma.
- Aplique una firma digital a la página objetivo.
- Opcionalmente asigne un nombre de firma y una apariencia visible.
- Guarde el PDF firmado.
Preparar auxiliares reutilizables de firma
Antes de aplicar una firma digital a un PDF, es útil configurar un pequeño conjunto de funciones auxiliares reutilizables. Estas ayudas inicializan el manejador de firmas, definen el área visible de la firma, configuran el certificado y crean objetos de firma PKCS#7 reutilizables, de modo que los ejemplos de firma a continuación sean autocontenidos y más fáciles de seguir.
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
Firmar un PDF con parámetros de certificado básicos
Este enfoque configura el certificado directamente en el PdfFileSignature objeto. Es útil cuando deseas un flujo de firma sencillo con metadatos de firma estándar y sin una gestión separada del objeto de firma.
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()
Firmar un PDF con un objeto PKCS7
Usa un PKCS7 objeto cuando necesita preparar la firma primero y luego pasarla a la llamada de firma. Este patrón le brinda más control sobre la configuración de la firma y es una buena base para flujos de trabajo más avanzados.
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()
Firmar un PDF con una firma nombrada
Si el flujo de trabajo de su documento depende de un nombre de campo de firma predefinido, pase ese nombre a sign(). Esto hace que sea más fácil referenciar la firma más tarde para validación, procesamiento o integración con un flujo de aprobación.
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()
Aplicar una firma visible
Puede hacer que la firma sea visible en la página PDF asignando una apariencia personalizada al PKCS7 objeto. Esto es útil cuando el documento de salida debe mostrar detalles de aprobación, como la razón, la ubicación y la información de contacto a los usuarios finales.
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()