在实际环境中测试
在生产中测试无水印。
随时随地为您服务。
数字签名是一种用于验证签署者身份和确保文档完整性的数学算法。 它会创建一个与文档相关联的唯一标识符,并使用只有签名者知道的私钥进行签名。 为了验证数字签名文档的真实性,接收方使用公钥解密签名并确认其有效性。
在本文中,我们将比较如何使用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 对象中。 然后,它从 .pfx 文件中加载证书(IronSoftware.pfx)通过提供密码(Passw0rd)并将标志 X509KeyStorageFlags.Exportable 设置为允许在必要时导出证书的私钥。
接下来,使用加载的证书创建一个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。
易用性:与QuestPDF相比,IronPDF提供了一个更简单的用于签署PDF的API。 QuestPDF 不提供对数字签名的原生支持,需要外部库(例如,BouncyCastle)用于此功能。 相比之下,IronPDF 具有内置的方法用于签名和验证 PDF,使实现数字签名更加简单。
证书管理: 两个库都可以使用证书,但IronPDF通过其内置方法直接处理证书。(例如,SignWithFile)简化流程。 它还允许您指定签名权限,这些功能是 QuestPDF 不提供的。 只需几行代码即可使用 IronPDF 签署 PDF 文档。
数字签名验证:IronPDF提供了一种易于使用的方法(验证Pdf签名)检查PDF中数字签名的有效性,而QuestPDF缺乏此功能,需要依赖外部库进行签名验证。
许可和费用:QuestPDF 是一个开源库,免费使用。 这确实伴随着缺乏高级功能的代价,例如数字签名支持。 IronPDF 对于开发是免费的,此外,它还提供了一系列定价层级。商业许可在购买之前试用。
总之,虽然QuestPDF在创建复杂布局的PDF方面表现出色,但它缺乏对数字签名的原生支持,需要使用像BouncyCastle这样的外部库来实现此功能。 相比之下,IronPDF 提供了一个用于签署和验证数字签名的一体化解决方案,提供了更简单和高效的流程。
对于需要内置完整PDF解决方案的开发人员数字签名功能,IronPDF 是更好的选择,具有广泛的范围功能, 大量文件,以及更多。 然而,QuestPDF 仍然是用于 PDF 生成的强大开源选项,但数字签名需要额外的复杂性。 最终决定取决于项目的需求和所需的简单性程度。