随着电子账单、回单、通知、合同的流行,电子文档的可信度变得非常重要。为防止非法篡改,确保文档的权威性,我们可以对PDF进行数字签名。
注意:在服务器上进行数字签名时,请将应用池配置中“加载用户配置文件”设置为true。

添加数字签名
Spire.PDF支持使用PFX数字证书生成数字签名,添加签名时,请务必保证PFX证书的有效性。
C#
//初始化一个PdfDocument实例
PdfDocument doc = new PdfDocument();
//加载PDF文档
doc.LoadFromFile(""sample.pdf"");
//根据PFX证书实例化一个PdfCertificate对象
PdfCertificate cert = new PdfCertificate(""gary.pfx"", ""e-iceblue"");
//在指定页面添加数字签名
PdfSignature signature = new PdfSignature(doc, doc.Pages[0], cert, ""Signature1"");
//设置签名的位置和大小
signature.Bounds = new RectangleF(new PointF(200, 600), new SizeF(180, 90));
//设置签名内容
signature.GraphicsMode = GraphicMode.SignImageAndSignDetail;
signature.NameLabel = ""Signer:"";
signature.Name = ""Gary"";
signature.LocationInfoLabel = ""Location:"";
signature.LocationInfo = ""CN"";
signature.ReasonLabel = ""Reason: "";
signature.Reason = ""Ensure authenticity"";
signature.DateLabel = ""Date: "";
signature.Date = DateTime.Now;
signature.ContactInfoLabel = ""Contact Number: "";
signature.ContactInfo = ""028-81705109"";
//设置被签名文档的编辑权限
signature.DocumentPermissions = PdfCertificationFlags.AllowFormFill | PdfCertificationFlags.ForbidChanges;
//保存文档
doc.SaveToFile(""数字签名.pdf"");
VB.NET
初始化一个PdfDocument实例
Dim doc As New PdfDocument()
'加载PDF文档 doc.LoadFromFile(""sample.pdf"") '根据PFX证书实例化一个PdfCertificate对象
Dim cert As New PdfCertificate(""gary.pfx"", ""e-iceblue"")
'在指定页面添加数字签名 Dim signature As New PdfSignature(doc,doc.Pages(0),cert,""Signature1"") '设置签名的位置和大小
signature.Bounds = New RectangleF(New PointF(200, 600), New SizeF(180, 90))
'设置签名内容 signature.GraphicsMode = GraphicMode.SignImageAndSignDetail signature.NameLabel = ""Signer:"" signature.Name = ""Gary"" signature.LocationInfoLabel = ""Location:"" signature.LocationInfo = ""CN"" signature.ReasonLabel = ""Reason:"" signature.Reason = ""Ensure authenticity"" signature.DateLabel = ""Date:"" signature.[Date] = DateTime.Now signature.ContactInfoLabel = ""Contact Number:"" signature.ContactInfo = ""028-81705109"" '设置被签名文档的编辑权限
signature.DocumentPermissions = PdfCertificationFlags.AllowFormFill Or PdfCertificationFlags.ForbidChanges
'保存文档 doc.SaveToFile(""数字签名.pdf"")
添加数字签名域
除了直接添加数字签名以外,我们也可以在PDF文档创建数字签名域。点击该签名域,用户就可以手动添加数字签名。
C#
//新建一个PDF文档并添加一页 PdfDocument doc = new PdfDocument();PdfPageBase page = doc.Pages.Add();//实例化一个PdfSignatureField对象,指定创建页面及名称 PdfSignatureField signaturefield = new PdfSignatureField(page,"Signature");//设置签名域的相关属性 signaturefield.BorderWidth = 1.0f;signaturefield.BorderStyle = PdfBorderStyle.Solid;signaturefield.BorderColor = new PdfRGBColor(System.Drawing.Color.Black);signaturefield.HighlightMode = PdfHighlightMode.Outline;signaturefield.Bounds = new RectangleF(100,100,100,100);//添加签名域到fields collection doc.Form.Fields.Add(signaturefield);//保存文档 doc.SaveToFile("AddSignField.pdf",FileFormat.PDF);VB.NET
'新建一个PDF文档并添加一页
Dim doc As New PdfDocument()
Dim page As PdfPageBase = doc.Pages.Add()
'实例化一个PdfSignatureField对象,指定创建页面及名称 Dim signaturefield As New PdfSignatureField(page,"Signature") '设置签名域的相关属性
signaturefield.BorderWidth = 1F
signaturefield.BorderStyle = PdfBorderStyle.Solid
signaturefield.BorderColor = New PdfRGBColor(System.Drawing.Color.Black)
signaturefield.HighlightMode = PdfHighlightMode.Outline
signaturefield.Bounds = New RectangleF(100, 100, 100, 100)
'添加签名域到fields collection doc.Form.Fields.Add(signaturefield) '保存文档
doc.SaveToFile("AddSignField.pdf", FileFormat.PDF)








