在實際環境中測試
在生產環境中測試無浮水印。
在任何需要的地方都能運作。
數位簽章是一種數學演算法,用於驗證簽署者的身份並確保文件的完整性。 它創建了一個與文檔相關的唯一標識符,使用只有簽署者知道的私鑰進行簽名。 要驗證數位簽章文件的真實性,接收者使用公鑰解密簽章並確認其有效性。
在本文中,我們將比較如何使用 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。
易用性: IronPDF 提供了比 QuestPDF 更簡單的 API 來簽署 PDF。 QuestPDF 不提供對數位簽章的原生支持,需要外部庫(例如,BouncyCastle)此功能。 相比之下,IronPDF 具有內建的方法,用於簽署和驗證 PDF,使得實作數位簽章更加簡單。
憑證管理: 兩個函式庫都可以處理憑證,但 IronPDF 通過其內建方法直接處理憑證。(例如,SignWithFile),簡化了流程。 它還允許您指定簽名權限,而這是 QuestPDF 所不提供的。 只需幾行代碼即可使用 IronPDF 簽署 PDF 文件。
數字簽名驗證:IronPDF 提供了一種易於使用的方法(驗證 Pdf 簽名)檢查 PDF 中數位簽章的有效性,而 QuestPDF 缺乏此功能,並依賴外部庫進行簽章驗證。
授權及費用: QuestPDF 是一個開源庫,可以免費使用。 這確實是以缺乏數位簽章支援等進階功能為代價的。 IronPDF 免費提供開發使用,除此之外,它還提供一系列的定價等級。商業授權在購買之前嘗試一下。
總而言之,雖然QuestPDF擅長創建具有複雜版面的PDF,但它缺乏對數位簽名的原生支持,需要使用像BouncyCastle這樣的外部庫來實現此功能。 相比之下,IronPDF 提供了一個一體化的解決方案,用於簽署和驗證數位簽名,從而提供更簡單且更有效的流程。
對於需要內建完整 PDF 解決方案的開發人員數位簽名功能,IronPDF 是更好的選擇,擁有廣泛的功能, 廣泛的文件,以及更多。 然而,QuestPDF 仍然是一個強大的開源 PDF 生成選擇,但數位簽名需要額外的複雜性。 最終的決定取決於專案的需求和所需的簡單程度。