跳至页脚内容
使用IRONPDF

ASP .NET PDF 签名指南:在 .NET Core 项目中为 PDF 添加数字签名

发送未经核实的合同或发票是大多数企业无法承受的风险。 您需要知道您的文件是合法有效的,没有被篡改过。 这正是数字签名的作用,它就像您文件的数字蜡封。

如果您正在构建 ASP.NET Core 应用程序,您可能会担心添加加密功能很复杂。 不一定要这样。 在本指南中,我们将使用 IronPdf 来完成这项工作。 这是一个简单明了的模块,可以简化服务器上的整个签名过程。

无论您需要的是严格的加密签名还是用户可以看到的可见签名,该库都能满足您的需求。 您可以在 Visual Studio 中通过 NuGet Package Manager 控制台直接安装该库,或者从 官方网站下载。 立即免费试用 IronPDF,请务必跟随我们探索如何使用 IronPDF 对 PDF 文件进行签名

NuGet 使用 NuGet 安装

PM >  Install-Package IronPdf

IronPDF 上查看 NuGet 快速安装。超过 1000 万次下载,它正以 C# 改变 PDF 开发。 您也可以下载 DLLWindows 安装程序

什么是 PDF 数字签名,为什么要在 ASP.NET 中使用它?

数字签名是一种加密签名,可验证签名者的身份并确保 PDF 文档未被修改。 与简单的电子签名(如键入姓名)不同,数字签名使用基于证书的加密技术来创建防篡改印章。 这样才能有效确保文件的信息内容。

在 ASP.NET Core 应用程序中,数字签名 PDF 对于涉及合同、发票和合规文档的 PDF 生成工作流至关重要。 用户可以在 Adobe Acrobat Reader 或任何兼容的 PDF 查看器中验证这些签名,以确认文档的当前状态。 签署过程发生在服务器端,允许您的网络应用程序在处理过程中自动签署文档,而不需要特定版本的客户端软件。

如何使用证书为 PDF 文档添加数字签名?

签署 PDF 文件最安全的方法是使用 .pfx.p12 证书文件。对于开发和测试环境,您可以生成自签名证书。 这种方法应用了加密签名,可由任何支持数字签名的 PDF 阅读器进行验证。

下面的代码演示了如何创建一个新的 PdfDocument 并对其进行签名。 请注意,我们将密码定义为字符串,并使用 System 命名空间来定义基本类型。

[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");
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

经认证签名的 PDF 数字签名

ASP .NET PDF 签名指南:在 .NET Core 项目中为 PDF 添加数字签名:图片 1 - 输出带有认证签名的 PDF

此示例代码使用 ChromePdfRenderer 生成 PDF,然后初始化签名。 虽然在公共 API 中没有严格命名为 new PdfCertificate 的独立类(通常通过 PdfSignature 处理),但从概念上讲,您正在为签名创建一个新的证书对象。 Sign 方法应用数字签名,SaveAs 导出已签名的 PDF 文件。您还可以保存到 MemoryStream 中,以用于需要访问流以将文档直接返回给客户端的 Web 响应场景。

签名元数据属性嵌入了更多细节,用户验证签名时会显示这些细节。 有关更多选项,请参阅PdfSignature类文档

如何在 PDF 上创建可见签名?

虽然加密签名提供了安全性,但许多工作流程需要在 PDF 页面上直观地显示签名。 IronPdf 支持在加密签名的同时添加图像元素,如手写签名扫描或公司印章。 默认情况下,签名可能是不可见的,但您可以编辑这一行为。

[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");
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

使用可见签名签署 PDF.

ASP .NET PDF 签名指南:在 .NET Core 项目中为 PDF 添加数字签名:图片 2 - PDF 上的可见签名

LoadSignatureImageFromFile 方法可在 PDF 文档中添加可见的签名图像,从而提供加密安全性和熟悉的视觉元素。 这可以满足利益相关者希望在页面上看到签名的要求。

您还可以使用 LoadSignatureImageFromStream 从流中加载图像。 了解有关 使用可视化元素签署 PDF 的更多信息。

如何为用户签名添加签名表单字段?

对于需要外部用户签名的文档,您可以在 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");
    }
[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");
    }
IRON VB CONVERTER ERROR developers@ironsoftware.com
$vbLabelText   $csharpLabel

带有签名字段的 PDF 文件

ASP .NET PDF 签名指南:在 .NET Core 项目中为 PDF 添加数字签名:图片 3 - 带签名表单字段的 PDF

该代码将创建一个带有嵌入式签名字段的 PDF 文档。 表单字段定义了签名的准确页面位置和尺寸。 当用户在 Adobe Acrobat Reader 或其他 PDF 阅读器中打开文件时,他们可以点击字段并应用数字签名。

对于以编程方式处理表单的应用程序,IronPDF 支持加载带有签名字段的现有 PDF。 探索其他PDF 表单功能

结论

使用 IronPDF 实现 ASP .NET PDF 签名为 .NET 的安全文档签名提供了一个直接、集成的解决方案。 PDF 库支持多种签名方法--从基于证书的加密签名到可见签名图像和交互式表单字段--使您可以灵活地满足应用程序的要求。

IronPDF for .NET 可在您的 .NET Core 服务器上处理复杂的 PDF 处理,让您只需编写最少的代码即可生成、签署和导出安全文档。 已签名的 PDF 文件与标准软件(如用于验证的 Adobe Acrobat Reader)保持兼容,确保您的用户可以信任文件的真实性。

准备好在您的项目中实施 PDF 签名了吗? 购买 IronPDF 许可证用于生产使用,或 下载免费试用版,在您的开发环境中探索所有功能。 如需技术支持和反馈,Iron Software 团队随时为您答疑解惑,帮助您构建安全的文档工作流程。

常见问题解答

什么是 ASP.NET Core 中的数字签名?

ASP.NET Core 中的数字签名就像数字蜡封,用于验证 PDF 文档的真实性和完整性。它确保文档具有法律效力,未被篡改。

如何使用 IronPDF 为 PDF 文档添加数字签名?

您可以使用 IronPDF 为 PDF 文档添加数字签名,方法是加入证书并设置为签署文档,确保文档既安全又可验证。

为什么数字签名对我的商业文件很重要?

数字签名至关重要,因为它们可以验证合同或发票等文件的真实性和不变性,从而保护您的企业免受潜在的法律风险。

能否使用 IronPDF 在 PDF 中创建交互式表单字段?

是的,IronPDF 允许您在 PDF 中创建交互式表单字段,这可以增强 ASP.NET Core 应用程序中的用户交互并简化文档流程。

是否可以在 PDF 文档中添加可见签名?

是的,有了 IronPDF,您可以在 PDF 文档中添加可见签名,让收件人清楚地看到文档是经过安全签名和验证的。

哪些类型的证书可用于 PDF 中的数字签名?

您可以根据所需的安全和信任级别,在 PDF 中使用各种类型的证书进行数字签名,包括自签名证书和由受信任的证书颁发机构颁发的证书。

IronPDF 如何确保 PDF 文档未被篡改?

IronPDF 通过使用数字签名验证文档的完整性和真实性,确保 PDF 文档未被篡改,如果在签名后进行了更改,则会提醒收件人。

能否在 ASP.NET Core 应用程序中自动执行数字签名过程?

是的,您可以使用 IronPDF 在 ASP.NET Core 应用程序中自动执行数字签名流程,它允许批量处理并集成到现有工作流程中。

Curtis Chau
技术作家

Curtis Chau 拥有卡尔顿大学的计算机科学学士学位,专注于前端开发,精通 Node.js、TypeScript、JavaScript 和 React。他热衷于打造直观且美观的用户界面,喜欢使用现代框架并创建结构良好、视觉吸引力强的手册。

除了开发之外,Curtis 对物联网 (IoT) 有浓厚的兴趣,探索将硬件和软件集成的新方法。在空闲时间,他喜欢玩游戏和构建 Discord 机器人,将他对技术的热爱与创造力相结合。