從Aspose PDF遷移到IronPDF
"簽名"在IronPDF中意味著三件不同的事情,它們不可互換:由證書支持的防篡改數位簽名、一幅手寫圖像的視覺印章,及供使用者稍後簽署的互動欄位。 他們的安全屬性不同,因此使用情境沿著該線劃分。加密核心是pdf.Sign(...)。 這樣一來就將身份與內容綁定在一起,所以任何後來的編輯都會破壞簽名。
防篡改合同與協議
這是大多數團隊首先需要的。證書簽名證明文件是可靠和未被修改的,讓您可以嵌入審計跟蹤(原因、位置、聯繫人、日期)和可信的時間戳:
using IronPdf;
using IronPdf.Signing;
using System;
var pdf = PdfDocument.FromFile("contract.pdf");
var signature = new PdfSignature("certificate.pfx", "password")
{
SigningReason = "Contractual Agreement",
SigningLocation = "Chicago, USA",
SignatureDate = DateTime.Now,
TimeStampUrl = new Uri("http://timestamp.digicert.com"),
TimestampHashAlgorithm = TimestampHashAlgorithms.SHA256
};
pdf.Sign(signature);
pdf.SaveAs("contract-signed.pdf");Imports IronPdf
Imports IronPdf.Signing
Imports System
Dim pdf = PdfDocument.FromFile("contract.pdf")
Dim signature = New PdfSignature("certificate.pfx", "password") With {
.SigningReason = "Contractual Agreement",
.SigningLocation = "Chicago, USA",
.SignatureDate = DateTime.Now,
.TimeStampUrl = New Uri("http://timestamp.digicert.com"),
.TimestampHashAlgorithm = TimestampHashAlgorithms.SHA256
}
pdf.Sign(signature)
pdf.SaveAs("contract-signed.pdf")來自可信賴機構的時間戳提供了文件簽署的何時的密碼學證明,獨立於本地時鐘——這對提交和受規範的呈交很重要。
簽署後鎖定文件
AnnotationsAndFormFillingAllowed還允許備註。 任何不允許的操作都會使簽名失效,這適合發行的證書、已批准的政策和已完成的聲明。
多方審批工作流程
由於PDF支援漸進式儲存,因此簽名適用於特定修訂。 每個審核人都簽署自己的文件,而歷史記錄顯示了誰簽署了什麼、什麼時候以及有什麼變更。 這涵蓋共簽和按順序的簽署。
驗證與審核關卡
如果任何文件未能通過驗證,管道可以拒絕該文件,然後回滾或去除簽名:
var pdf = PdfDocument.FromFile("signed-report.pdf");
bool valid = pdf.VerifySignatures();
if (!valid)
{
pdf.RemoveSignatures();
pdf.SaveAs("report-unsigned.pdf");
}Dim pdf = PdfDocument.FromFile("signed-report.pdf")
Dim valid As Boolean = pdf.VerifySignatures()
If Not valid Then
pdf.RemoveSignatures()
pdf.SaveAs("report-unsigned.pdf")
End If無需加密的可見審批
當您只需簽名的外觀而不需要法律上不可否認性時,可以使用蓋章或水印功能加蓋掃描的手寫圖像。 只要您清楚說明它是什麼,這對內部簽署是合適的。
蓋章或證書,和兩個注意事項
絕不要讓印章圖像代替憑證簽章。 印章是頁面上的像素:可複製、不可驗證,無法保證文件未被更改。 憑證簽章是防篡改的,並以密碼學方式將身份與內容連結。 使用印章作為外觀,使用憑證作為證明。
有兩件事情會讓人困惑。 使用X509KeyStorageFlags.Exportable載入證書,否則無法使用私鑰,簽署將失敗。 如果查看器顯示警告而不是綠色勾號,那麼憑證不在該查看器的信任庫中; 簽章仍然有效,但信任必須另外建立。

Curtis Chau擁有Carleton大學的電腦科學學士學位,專精於前端開發,擁有Node.js、TypeScript、JavaScript和React的專業知識。Curtis熱衷於建立直觀且美觀的使用者介面,喜愛使用現代框架並建立結構良好、視覺吸引力的手冊。