在生产环境中测试,无水印。
随时随地满足您的需求。
获得30天的全功能产品。
几分钟内就能启动并运行。
在您的产品试用期间,全面访问我们的支持工程团队。
数字签名是一种用于验证签署者身份和确保文档完整性的数学算法。 它会创建一个与文档相关联的唯一标识符,并使用只有签名者知道的私钥进行签名。 为了验证数字签名文档的真实性,接收方使用公钥解密签名并确认其有效性。
在本文中,我们将比较如何使用QuestPDF和IronPDF库在C#中将数字签名添加到PDF文档中。 这两个库都提供了强大的PDF操作功能,包括数字签名功能。
数字签名确保文档内容未被篡改,并证明签署者的身份。 这比传统签名提供了更高的安全性。 数字签名在许多国家具有法律约束力,通常用于合同、协议和其他法律文件。
在开始之前,请确保您对 C# 和 .NET Framework 有基本的了解。 您需要安装QuestPDF和IronPDF。 QuestPDF 可以通过 NuGet 安装,而 IronPDF 可以从 IronPDF 网站下载或通过 NuGet 包管理器下载。
您还需要准备好数字签名,如果没有,网络上有很多资源可以帮助您创建一个新的数字签名。
现在,让我们仔细看看这两个库以及它们如何处理将数字签名应用于PDF文档的任务。
QuestPDF 是一个开源库,专注于使用流畅的 API 生成 PDF 文档,以便通过其综合布局引擎创建复杂的布局。它不太侧重于 PDF 操作,但可以与其他工具结合使用来签署 PDF。 它还附带一个配套应用程序,使用户可以轻松浏览其PDF的文档结构,并利用热重载功能为您提供实时文档预览,而无需进行代码重新编译。
IronPDF 是一个强大的 .NET 库,提供了用于 PDF 文档生成、操作和签署 PDF 文档的强大功能。 它是为寻求全面且易于使用的解决方案的.NET开发人员设计的。 使用 IronPDF,您可以轻松加密 PDF 文档,添加注释,将 HTML 转换为 PDF,提取内容等等!
QuestPDF原生不支持数字签名。 但是,您可以将其与其他库(如BouncyCastle或PdfSharp)结合使用,以实现此功能。 使用QuestPDF生成文档后,您可以使用提供PDF签名工具的库(如iTextSharp)对其进行签名,但QuestPDF库本身不处理PDF签名。
它提供其他基本形式的PDF安全性,如PDF加密,以及高级PDF创建和设计PDF文档的能力,因此对于那些寻找能够处理基本PDF任务而无需过多复杂功能的PDF库的人来说,它仍然是一个可行的选择。
IronPDF 提供了一个简单的 API 用于使用数字证书签署 PDF。 以下代码演示了如何使用IronPDF为PDF文件应用数字签名。
using IronPdf;
using IronPdf.Signing;
using System.Security.Cryptography.X509Certificates;
public class Program
{
static void Main(string[] args)
{
PdfDocument pdf = PdfDocument.FromFile("invoice.pdf");
X509Certificate2 cert = new X509Certificate2("IronSoftware.pfx", "your-password", X509KeyStorageFlags.Exportable);
var sig = new PdfSignature(cert);
pdf.Sign(sig);
pdf.SaveAs("signed.pdf");
}
}
using IronPdf;
using IronPdf.Signing;
using System.Security.Cryptography.X509Certificates;
public class Program
{
static void Main(string[] args)
{
PdfDocument pdf = PdfDocument.FromFile("invoice.pdf");
X509Certificate2 cert = new X509Certificate2("IronSoftware.pfx", "your-password", X509KeyStorageFlags.Exportable);
var sig = new PdfSignature(cert);
pdf.Sign(sig);
pdf.SaveAs("signed.pdf");
}
}
Imports IronPdf
Imports IronPdf.Signing
Imports System.Security.Cryptography.X509Certificates
Public Class Program
Shared Sub Main(ByVal args() As String)
Dim pdf As PdfDocument = PdfDocument.FromFile("invoice.pdf")
Dim cert As New X509Certificate2("IronSoftware.pfx", "your-password", X509KeyStorageFlags.Exportable)
Dim sig = New PdfSignature(cert)
pdf.Sign(sig)
pdf.SaveAs("signed.pdf")
End Sub
End Class
此代码演示了如何使用IronPDF和X.509证书对PDF文档进行数字签名。 首先,它将现有的 PDF(invoice.pdf)加载到 PdfDocument 对象中。 然后,通过提供密码(Passw0rd)并设置标志 X509KeyStorageFlags.Exportable 以便在必要时导出证书的私钥,它从 .pfx 文件(IronSoftware.pfx)加载证书。
接下来,使用加载的证书创建一个PdfSignature对象。 然后将此签名应用于 PDF 文档,实现有效签署。 最后,已签名的PDF被保存为一个名为signed.pdf的新文件。 此过程确保 PDF 已被安全签署,以验证其真实性和完整性。
IronPDF还提供了一种简单的方法来验证数字签名。 您可以调用 VerifyPdfSignatures 方法来检查文档中签名的有效性
using IronPdf;
PdfDocument pdf = PdfDocument.FromFile("signed_test_document.pdf");
bool isValid = pdf.VerifyPdfSignatures();
if (isValid)
{
Console.WriteLine("The digital signature is valid.");
}
else
{
Console.WriteLine("The digital signature is invalid or missing.");
}
using IronPdf;
PdfDocument pdf = PdfDocument.FromFile("signed_test_document.pdf");
bool isValid = pdf.VerifyPdfSignatures();
if (isValid)
{
Console.WriteLine("The digital signature is valid.");
}
else
{
Console.WriteLine("The digital signature is invalid or missing.");
}
Imports IronPdf
Private pdf As PdfDocument = PdfDocument.FromFile("signed_test_document.pdf")
Private isValid As Boolean = pdf.VerifyPdfSignatures()
If isValid Then
Console.WriteLine("The digital signature is valid.")
Else
Console.WriteLine("The digital signature is invalid or missing.")
End If
如果文档中的所有签名都有效,则此方法返回true;如果任何签名无效或缺失,则返回false。
易用性:IronPDF 提供了比 QuestPDF 简单得多的 API 用于签署 PDF。 QuestPDF 不提供对数字签名的本机支持,需要外部库(例如,BouncyCastle)来实现此功能。 相比之下,IronPDF 具有内置的方法用于签名和验证 PDF,使实现数字签名更加简单。
证书管理:这两个库都可以处理证书,但IronPDF通过其内置方法(例如,SignWithFile)直接处理它们,从而简化了流程。 它还允许您指定签名权限,这些功能是 QuestPDF 不提供的。 只需几行代码即可使用 IronPDF 签署 PDF 文档。
数字签名验证:IronPDF 提供了一种易于使用的方法(VerifyPdfSignatures)来检查 PDF 中数字签名的有效性,而 QuestPDF 缺乏此功能,并依赖于外部库进行签名验证。
许可证和成本:QuestPDF 是一个开源库,免费使用。 这确实伴随着缺乏高级功能的代价,例如数字签名支持。 IronPDF在开发过程中是免费的,除此之外,它还提供一系列商业授权的定价等级,可以在购买前试用。
总之,虽然QuestPDF在创建复杂布局的PDF方面表现出色,但它缺乏对数字签名的原生支持,需要使用像BouncyCastle这样的外部库来实现此功能。 相比之下,IronPDF 提供了一个用于签署和验证数字签名的一体化解决方案,提供了更简单和高效的流程。
对于需要内置数字签名功能的完整PDF解决方案的开发人员,IronPDF是更好的选择,具备广泛的功能、详尽的文档等。 然而,QuestPDF 仍然是用于 PDF 生成的强大开源选项,但数字签名需要额外的复杂性。 最终决定取决于项目的需求和所需的简单性程度。