产品比较

QuestPDF 签署 PDF 文档与 IronPDF(代码示例)

发布 2025年二月13日
分享:

简介

数字签名是一种用于验证签署者身份和确保文档完整性的数学算法。 它会创建一个与文档相关联的唯一标识符,并使用只有签名者知道的私钥进行签名。 为了验证数字签名文档的真实性,接收方使用公钥解密签名并确认其有效性。

在本文中,我们将比较如何使用QuestPDF和IronPDF库在C#中将数字签名添加到PDF文档中。 这两个库都提供了强大的PDF操作功能,包括数字签名功能。

数字签名为何重要?

数字签名确保文档内容未被篡改,并证明签署者的身份。 这比传统签名提供了更高的安全性。 数字签名在许多国家具有法律约束力,通常用于合同、协议和其他法律文件。

先决条件

在开始之前,请确保您对 C# 和 .NET Framework 有基本的了解。 您需要安装两个QuestPDFIronPDF. QuestPDF 可以通过 NuGet 安装,而 IronPDF 可以从 IronPDF 网站下载或通过 NuGet 包管理器下载。

您还需要准备好数字签名,如果没有,网络上有很多资源可以帮助您创建一个新的数字签名。

QuestPDF 签署 PDF 文档与 IronPDF(代码示例):图 1

在C#中使用QuestPDF与IronPDF为PDF文档添加数字签名的比较

现在,让我们仔细看看这两个库以及它们如何处理将数字签名应用于PDF文档的任务。

QuestPDF 是一个开源库,专注于使用流畅的API生成PDF文档,能够利用其全面的布局引擎创建复杂的布局。虽然它不太注重PDF的操作,但可以与其他工具结合使用,以便对PDF进行签名。 它还附带一个配套应用程序,使用户可以轻松浏览其PDF的文档结构,并利用热重载功能为您提供实时文档预览,而无需进行代码重新编译。

IronPDF 是一个强大的 .NET 库,提供用于生成和操作 PDF 文档的强大功能。签署PDF文件. 它是为寻求全面且易于使用的解决方案的.NET开发人员设计的。 使用IronPDF,您可以轻松加密 PDF 文档添加标注, 将 HTML 转换为 PDF、提取内容,以及更多!

QuestPDF

QuestPDF 签署 PDF 文档与 IronPDF(代码示例):图 2

QuestPDF原生不支持数字签名。 然而,您可以将其与其他库结合使用(比如 BouncyCastlePdfSharp)用于此功能。 在使用QuestPDF生成文档后,您可以使用提供PDF签名工具的库来对其进行签名,例如iTextSharp,但QuestPDF库本身不处理PDF签名。

它提供其他基本形式的PDF安全性,如PDF加密,以及高级PDF创建和设计PDF文档的能力,因此对于那些寻找能够处理基本PDF任务而无需过多复杂功能的PDF库的人来说,它仍然是一个可行的选择。

IronPDF

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
VB   C#

QuestPDF 与 IronPDF 的 PDF 文档签名(代码示例):图 4

此代码演示了如何使用IronPDF和X.509证书对PDF文档进行数字签名。 首先,它加载一个现有的PDF(invoice.pdf)到 PdfDocument 对象中。 然后,它从 .pfx 文件中加载证书(IronSoftware.pfx)通过提供密码(Passw0rd)并将标志 X509KeyStorageFlags.Exportable 设置为允许在必要时导出证书的私钥。

接下来,使用加载的证书创建一个PdfSignature对象。 然后将此签名应用于 PDF 文档,实现有效签署。 最后,已签名的PDF被保存为一个名为signed.pdf的新文件。 此过程确保 PDF 已被安全签署,以验证其真实性和完整性。

如何使用IronPDF验证签名

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
VB   C#

如果文档中的所有签名都有效,则此方法返回true;如果任何签名无效或缺失,则返回false。

QuestPDF 和 IronPDF 之间差异的总结

易用性:与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 生成的强大开源选项,但数字签名需要额外的复杂性。 最终决定取决于项目的需求和所需的简单性程度。

< 前一页
QuestPDF PDF 转换为图像 vs IronPDF
下一步 >
QuestPDF 从 PDF 中提取文本在 C#中的替代方案与 IronPDF