Saltar al pie de página
USANDO IRONPDF

Guía de firmas PDF ASP .NET: Añadir firmas digitales a PDF en proyectos .NET Core

Enviar contratos o facturas sin verificar es un riesgo que la mayoría de las empresas no pueden permitirse. Usted necesita saber que sus documentos son legalmente válidos y no han sido manipulados. Eso es exactamente lo que hacen las firmas digitales, actúan como un sello de lacre digital para tus archivos.

Si está creando una aplicación ASP.NET Core, es posible que le preocupe que añadir cifrado sea complicado. No tiene por qué serlo. En esta guía, utilizaremos IronPDF para realizar el trabajo. Se trata de un módulo sencillo que simplifica todo el proceso de firma en su servidor.

Tanto si necesita una firma estrictamente criptográfica como una visible para los usuarios, esta biblioteca se encarga de todo. Puede instalar la biblioteca directamente en Visual Studio a través de la consola NuGet Package Manager o descargarla de sitio oficial. Pruebe IronPDF gratis hoy mismo y asegúrese de seguirnos mientras exploramos cómo gestionar la firma de archivos PDF con IronPDF

NuGet Instalar con NuGet

PM >  Install-Package IronPdf

Echa un vistazo a IronPDF en NuGet para una instalación rápida. Con más de 10 millones de descargas, está transformando el desarrollo de PDF con C#. También puede descargar el DLL o el instalador de Windows.

¿Qué es una firma digital PDF y por qué usarla en ASP.NET?

Una firma digital es una firma criptográfica que autentica la identidad del firmante y garantiza que el documento PDF no ha sido modificado. A diferencia de una simple firma electrónica (como un nombre escrito a máquina), una firma digital utiliza el cifrado basado en certificados para crear un sello a prueba de manipulaciones. De este modo se asegura eficazmente el contenido del mensaje del archivo.

En las aplicaciones ASP.NET Core, los PDF firmados digitalmente son esenciales para los flujos de trabajo de generación de PDF que implican contratos, facturas y documentos de cumplimiento. Los usuarios pueden validar estas firmas en Adobe Acrobat Reader o cualquier visor de PDF compatible para confirmar el estado actual del documento. El proceso de firma tiene lugar en el servidor, lo que permite a su aplicación web firmar documentos automáticamente durante el procesamiento sin necesidad de una versión específica del software cliente.

¿Cómo añadir una firma digital a un documento PDF utilizando un certificado?

El método más seguro para firmar un archivo PDF es utilizar un archivo de certificado .pfx o .p12. Para entornos de desarrollo y pruebas, puede generar un certificado autofirmado. Este enfoque aplica una firma criptográfica que puede ser verificada por cualquier visor de PDF que admita firmas digitales.

El siguiente código muestra cómo crear un nuevo PdfDocument y firmarlo. Tenga en cuenta que definimos la contraseña como una cadena y utilizamos el espacio de nombres System para los tipos básicos.

[HttpPost("sign-basic")]
public IActionResult SignWithCertificate()
{
    var renderer = new ChromePdfRenderer();
    var document = renderer.RenderHtmlAsPdf("<h1>Contract Agreement</h1><p>Terms...</p>");
    string certPath = Path.Combine(_environment.ContentRootPath, "Certificates/certificate.pfx");
    var signature = new PdfSignature(certPath, "yourPassword")
    {
        SigningContact = "legal@company.com",
        SigningLocation = "Chicago, USA",
        SigningReason = "Document Approval"
    };
    document.Sign(signature);
    string outputPath = Path.Combine(Path.GetTempPath(), "signed-contract.pdf");
    document.SaveAs(outputPath);
    return PhysicalFile(outputPath, "application/pdf", "signed-contract.pdf");
}
[HttpPost("sign-basic")]
public IActionResult SignWithCertificate()
{
    var renderer = new ChromePdfRenderer();
    var document = renderer.RenderHtmlAsPdf("<h1>Contract Agreement</h1><p>Terms...</p>");
    string certPath = Path.Combine(_environment.ContentRootPath, "Certificates/certificate.pfx");
    var signature = new PdfSignature(certPath, "yourPassword")
    {
        SigningContact = "legal@company.com",
        SigningLocation = "Chicago, USA",
        SigningReason = "Document Approval"
    };
    document.Sign(signature);
    string outputPath = Path.Combine(Path.GetTempPath(), "signed-contract.pdf");
    document.SaveAs(outputPath);
    return PhysicalFile(outputPath, "application/pdf", "signed-contract.pdf");
}
Imports Microsoft.AspNetCore.Mvc
Imports System.IO

<HttpPost("sign-basic")>
Public Function SignWithCertificate() As IActionResult
    Dim renderer = New ChromePdfRenderer()
    Dim document = renderer.RenderHtmlAsPdf("<h1>Contract Agreement</h1><p>Terms...</p>")
    Dim certPath As String = Path.Combine(_environment.ContentRootPath, "Certificates/certificate.pfx")
    Dim signature = New PdfSignature(certPath, "yourPassword") With {
        .SigningContact = "legal@company.com",
        .SigningLocation = "Chicago, USA",
        .SigningReason = "Document Approval"
    }
    document.Sign(signature)
    Dim outputPath As String = Path.Combine(Path.GetTempPath(), "signed-contract.pdf")
    document.SaveAs(outputPath)
    Return PhysicalFile(outputPath, "application/pdf", "signed-contract.pdf")
End Function
$vbLabelText   $csharpLabel

PDF firmado digitalmente con firma certificada

Guía de firmas PDF de ASP .NET: Añadir Firmas Digitales a PDFs en Proyectos .NET Core: Imagen 1 - PDF de salida con firma certificada

Este código de ejemplo utiliza ChromePdfRenderer para generar un PDF y, a continuación, inicializa la firma. Aunque no existe una clase independiente estrictamente denominada new PdfCertificate en la API pública (normalmente se maneja a través de PdfSignature), conceptualmente se está creando un nuevo objeto certificado para la firma. El método Sign aplica la firma digital, y SaveAs exporta el archivo PDF firmado. También puede guardar en un MemoryStream para escenarios de respuesta web en los que necesite acceder al flujo para devolver el documento directamente al cliente.

Las propiedades de metadatos de la firma incluyen detalles adicionales que se muestran cuando los usuarios verifican la firma. Para obtener más opciones, consulte la documentación de la clase PdfSignature.

¿Cómo crear una firma visible en un PDF?

Aunque las firmas criptográficas proporcionan seguridad, muchos flujos de trabajo requieren una representación visual de la firma en la página PDF. IronPDF permite añadir un elemento de imagen, como una firma manuscrita escaneada o un sello de empresa, junto a la firma criptográfica. Por defecto, las firmas pueden ser invisibles, pero se puede editar este comportamiento.

[HttpPost("sign-visible")]
public IActionResult SignWithVisibleImage()
{
    // Load existing PDF
    string pdfPath = Path.Combine(_environment.ContentRootPath, "Documents", "invoice.pdf");
    var document = PdfDocument.FromFile(pdfPath);
    // Certificate + image
    string certPath = Path.Combine(_environment.ContentRootPath, "Certificates", "certificate.pfx");
    string imagePath = Path.Combine(_environment.ContentRootPath, "Images", "signature-image.png");
    var signature = new PdfSignature(certPath, "yourPassword");
    var rect = new IronSoftware.Drawing.Rectangle(50, 100, 200, 80);
    signature.LoadSignatureImageFromFile(imagePath, 0, rect);
    // Sign the PDF
    document.Sign(signature);
    string outFile = Path.Combine(Path.GetTempPath(), "signed-visible.pdf");
    document.SaveAs(outFile);
    return PhysicalFile(outFile, "application/pdf", "signed-visible.pdf");
}
[HttpPost("sign-visible")]
public IActionResult SignWithVisibleImage()
{
    // Load existing PDF
    string pdfPath = Path.Combine(_environment.ContentRootPath, "Documents", "invoice.pdf");
    var document = PdfDocument.FromFile(pdfPath);
    // Certificate + image
    string certPath = Path.Combine(_environment.ContentRootPath, "Certificates", "certificate.pfx");
    string imagePath = Path.Combine(_environment.ContentRootPath, "Images", "signature-image.png");
    var signature = new PdfSignature(certPath, "yourPassword");
    var rect = new IronSoftware.Drawing.Rectangle(50, 100, 200, 80);
    signature.LoadSignatureImageFromFile(imagePath, 0, rect);
    // Sign the PDF
    document.Sign(signature);
    string outFile = Path.Combine(Path.GetTempPath(), "signed-visible.pdf");
    document.SaveAs(outFile);
    return PhysicalFile(outFile, "application/pdf", "signed-visible.pdf");
}
Imports Microsoft.AspNetCore.Mvc
Imports System.IO

<HttpPost("sign-visible")>
Public Function SignWithVisibleImage() As IActionResult
    ' Load existing PDF
    Dim pdfPath As String = Path.Combine(_environment.ContentRootPath, "Documents", "invoice.pdf")
    Dim document = PdfDocument.FromFile(pdfPath)
    ' Certificate + image
    Dim certPath As String = Path.Combine(_environment.ContentRootPath, "Certificates", "certificate.pfx")
    Dim imagePath As String = Path.Combine(_environment.ContentRootPath, "Images", "signature-image.png")
    Dim signature = New PdfSignature(certPath, "yourPassword")
    Dim rect = New IronSoftware.Drawing.Rectangle(50, 100, 200, 80)
    signature.LoadSignatureImageFromFile(imagePath, 0, rect)
    ' Sign the PDF
    document.Sign(signature)
    Dim outFile As String = Path.Combine(Path.GetTempPath(), "signed-visible.pdf")
    document.SaveAs(outFile)
    Return PhysicalFile(outFile, "application/pdf", "signed-visible.pdf")
End Function
$vbLabelText   $csharpLabel

PDF firmado con firma visible

Guía de firmas PDF de ASP .NET: Añadir firmas digitales a PDFs en proyectos .NET Core: Imagen 2 - Firma visible en PDF

El método LoadSignatureImageFromFile añade una imagen de firma visible al documento PDF, proporcionando seguridad criptográfica y un elemento visual familiar. Esto satisface requisitos en los que las partes interesadas esperan ver una firma en la página.

También puede cargar imágenes desde un flujo utilizando LoadSignatureImageFromStream. Más información sobre firmar PDF con elementos visuales.

¿Cómo añadir campos de formulario de firma para la firma del usuario?

Para los documentos que requieren la firma de usuarios externos, puede crear campos de firma interactivos dentro del formulario PDF. Esto permite a los destinatarios firmar el documento utilizando su propio certificado o software de firma electrónica.

[HttpGet("generate-form")]
    public IActionResult GenerateSignableForm()
    {
        var renderer = new ChromePdfRenderer();
        var PDF = renderer.RenderHtmlAsPdf(@"
    <h1>Agreement Form</h1>
    <p>Please sign below to accept the terms.</p>
    <div style='border:1px solid black;width:300px;height:100px;'>Signature:</div>
");
        var field = new SignatureFormField(
            "ClientSignature",
            0,
            50,
            200,
            300,
            100
        );
        pdf.Form.Add(field);
        string outputPath = Path.Combine(Path.GetTempPath(), "agreement-form.pdf");
        pdf.SaveAs(outputPath);
        return PhysicalFile(outputPath, "application/pdf", "agreement-form.pdf");
    }
[HttpGet("generate-form")]
    public IActionResult GenerateSignableForm()
    {
        var renderer = new ChromePdfRenderer();
        var PDF = renderer.RenderHtmlAsPdf(@"
    <h1>Agreement Form</h1>
    <p>Please sign below to accept the terms.</p>
    <div style='border:1px solid black;width:300px;height:100px;'>Signature:</div>
");
        var field = new SignatureFormField(
            "ClientSignature",
            0,
            50,
            200,
            300,
            100
        );
        pdf.Form.Add(field);
        string outputPath = Path.Combine(Path.GetTempPath(), "agreement-form.pdf");
        pdf.SaveAs(outputPath);
        return PhysicalFile(outputPath, "application/pdf", "agreement-form.pdf");
    }
Imports Microsoft.AspNetCore.Mvc
Imports IronPdf

<HttpGet("generate-form")>
Public Function GenerateSignableForm() As IActionResult
    Dim renderer As New ChromePdfRenderer()
    Dim PDF = renderer.RenderHtmlAsPdf("
    <h1>Agreement Form</h1>
    <p>Please sign below to accept the terms.</p>
    <div style='border:1px solid black;width:300px;height:100px;'>Signature:</div>
")
    Dim field As New SignatureFormField("ClientSignature", 0, 50, 200, 300, 100)
    PDF.Form.Add(field)
    Dim outputPath As String = Path.Combine(Path.GetTempPath(), "agreement-form.pdf")
    PDF.SaveAs(outputPath)
    Return PhysicalFile(outputPath, "application/pdf", "agreement-form.pdf")
End Function
$vbLabelText   $csharpLabel

Archivo PDF con campo de firma

Guía de firmas PDF de ASP .NET: Añadir Firmas Digitales a PDFs en Proyectos .NET Core: Imagen 3 - PDF con campo de formulario de firma

Este código crea un documento PDF con un campo de firma incrustado. Los campos del formulario definen la ubicación exacta de la página y las dimensiones de la firma. Cuando los usuarios abran el archivo en Adobe Acrobat Reader u otro visor de PDF, podrán hacer clic en el campo y aplicar su firma digital.

Para las aplicaciones que procesan formularios mediante programación, IronPDF admite la carga de PDF existentes con campos de firma. Explore otras capacidades de los formularios PDF.

Conclusión

La implementación de firmas de PDF en ASP .NET con IronPDF proporciona una solución sencilla e integrada para la firma segura de documentos. La biblioteca PDF admite varios enfoques de firma, desde firmas criptográficas basadas en certificados hasta imágenes de firma visibles y campos de formulario interactivos, lo que le proporciona flexibilidad para adaptarse a los requisitos de su aplicación.

IronPDF se encarga de la complejidad del procesamiento de PDF en su servidor .NET Core, permitiéndole generar, firmar y exportar documentos seguros con un código mínimo. Los PDF firmados mantienen la compatibilidad con software estándar como Adobe Acrobat Reader para su verificación, lo que garantiza que sus usuarios puedan confiar en la autenticidad del documento.

¿Está listo para implementar la firma de PDF en su proyecto? Adquiera una licencia IronPDF para uso en producción, o descargue una versión de prueba gratuita para explorar todas las funciones en su entorno de desarrollo. Para obtener asistencia técnica y comentarios, el equipo de Iron Software está a su disposición para responder a sus preguntas y ayudarle a crear flujos de trabajo de documentos seguros.

Preguntas Frecuentes

¿Qué es una firma digital en ASP.NET Core?

Una firma digital en ASP.NET Core es como un sello de lacre digital que se utiliza para verificar la autenticidad y la integridad de los documentos PDF. Garantiza que los documentos son legalmente válidos y no han sido manipulados.

¿Cómo puedo añadir una firma digital a un documento PDF con IronPDF?

Puede añadir una firma digital a un documento PDF mediante IronPDF incluyendo un certificado y configurándolo para que firme el documento, garantizando que sea seguro y verificable.

¿Por qué son importantes las firmas digitales para mis documentos empresariales?

Las firmas digitales son cruciales porque verifican que documentos como contratos o facturas son auténticos y no han sido modificados, protegiendo así a su empresa de posibles riesgos legales.

¿Puedo crear campos de formulario interactivos en PDF con IronPDF?

Sí, IronPDF permite crear campos de formulario interactivos en PDF, lo que puede mejorar la interacción del usuario y agilizar los procesos de documentos en aplicaciones ASP.NET Core.

¿Es posible añadir firmas visibles a mis documentos PDF?

Sí, con IronPDF puede añadir firmas visibles a sus documentos PDF, dejando claro a los destinatarios que el documento está firmado y verificado de forma segura.

¿Qué tipos de certificados pueden utilizarse para las firmas digitales en PDF?

Puede utilizar varios tipos de certificados para las firmas digitales en PDF, incluidos los certificados autofirmados y los emitidos por una autoridad de certificación de confianza, en función del nivel de seguridad y confianza requerido.

¿Cómo garantiza IronPDF que un documento PDF no ha sido manipulado?

IronPDF garantiza que un documento PDF no ha sido manipulado mediante el uso de firmas digitales que validan la integridad y autenticidad del documento, alertando a los destinatarios si se han realizado cambios después de la firma.

¿Puedo automatizar el proceso de firma digital en aplicaciones ASP.NET Core?

Sí, puede automatizar el proceso de firma digital en aplicaciones ASP.NET Core mediante IronPDF, que permite el procesamiento por lotes y la integración en flujos de trabajo existentes.

Curtis Chau
Escritor Técnico

Curtis Chau tiene una licenciatura en Ciencias de la Computación (Carleton University) y se especializa en el desarrollo front-end con experiencia en Node.js, TypeScript, JavaScript y React. Apasionado por crear interfaces de usuario intuitivas y estéticamente agradables, disfruta trabajando con frameworks modernos y creando manuales bien ...

Leer más