使用数字证书文件签名

请先打开CaseStyudy目录下的文件"PDFCreator示例.Table"后再运行本节的示例代码。

有了数字证书文件,我们就可以对PDF文档进行签名。

用户无法直接修改有签名的PDF文档,如果要修改,只能创建副本,但是副本会丢失签名,恶意方即使伪造签名,我们也可以通过签名的证书指纹识别出这是伪造的签名。

我们可以使用文字进行数字签名:

Dim file As String = "c:\temp\test.pdf"
Dim
pdc As New PDFCreator()
pdc.PageSize =
New Size(400, 500)
Dim
rect As RectangleF = pdc.PageRectangle()
rect.Inflate( - 72, - 72)
pdc.DrawString(
"Hello Foxtable!", New Font("微软雅黑", 24, fontstyle.Bold), Brushes.Black, rect)
Dim
sign As New PDF.PdfSignature() '创建签名
sign.Certificate =
New X509Certificate2(ProjectPath & "myCertificate.pfx", "1234567") '加载证书文件
sign.Font = New Font("Rage Italic", 18)
sign.Text =
"Power By Foxtable"
pdc.AddField(sign,
New RectangleF(rect.Right - 130, rect.Bottom - 25, 130, 25)) '将签名添加到文档中
pdc.Save(file)

Process.Start(file)

我们也可以使用图片(例如领导的手写签名)进行数字签名,图片请下复制项目文件夹的Images子目录中,例如:

Dim file As String = "c:\temp\test.pdf"
Dim
pdc As New PDFCreator()
pdc.PageSize =
New Size(400, 500)
Dim
rect As RectangleF = pdc.PageRectangle()
rect.Inflate( - 72, - 72)
pdc.DrawString(
"Hello Foxtable!", New Font("微软雅黑", 24, fontstyle.Bold), Brushes.Black, rect)
Dim
sign As New PDF.PdfSignature() '创建签名
sign.Certificate =
New X509Certificate2(ProjectPath & "myCertificate.pfx", "1234567") '加载证书文件
sign.Font =
New Font("Rage Italic", 18)
sign.Image = GetImage(
"zhangziyi.png")
pdc.AddField(sign,
New RectangleF(rect.Right - 80, rect.Bottom - 25, 80, 25)) '将签名添加到文档中
pdc.Save(file)
'保存文件
Process.Start(file)
'打开文件

有的软件,能直接显示签名,例如上面生成的文档在WPS中会显示为:

用户单击签名,可以显示签名的数字证书信息。

有的软件,例如Adobe Acrobat Reader DC免费版,不会显示数字签名的文字或图片,所以我们看不到签名,但是会显示一个签名面板,我们可以在这里查看签名以及数字证书信息。


本页地址:http://www.foxtable.com/webhelp/topics/6096.htm