C# PDF添加可信时间戳数字签名
以PDF格式保存的电子交易文件或合同,即使具有数字签名,仍然不能完全保证该文件的法律效力,因为数字证书存在有效期和可随时吊销的问题。为了解决这一问题,出现了一种改进的基于时间戳的数字签名方案,即在数字签名的基础上打上一个可信赖的时间戳。
这篇将介绍如何使用.NET PDF组件Spire.PDF for .NET在C#应用程序中给PDF文档添加数字签名并打上时间戳(注意这里的时间戳必须符合RFC 3161标准)。
引用DLL
在使用以下代码前,需要引用Spire.PDF for .NET组件的DLL文件到工程中。官网可以下载最新版的DLL文件,下载地址。此外,也可以通过NuGet Package Manager搜索Spire.PDF for .NET然后点击安装。
示例代码
在进行签名前,需要准备以下资料:
1)数字证书和密码;
2)时间戳服务器的URL地址(本文使用的地址是http://timestamp.wosign.com/rfc3161);
using System.Drawing;
using Spire.Pdf;
using Spire.Pdf.Graphics;
using Spire.Pdf.Security;namespace Digitally_Sign_Pdf_with_Timestamp
{class Program{static void Main(string[] args){//加载PDF文档PdfDocument pdf = new PdfDocument();pdf.LoadFromFile("Additional.pdf");//获取第一页PdfPageBase page = pdf.Pages[0];//加载数字证书(.pfx文件)PdfCertificate cert = new PdfCertificate("test.pfx", "123");//加载一张图片Spire.Pdf.Graphics.PdfImage image = Spire.Pdf.Graphics.PdfImage.FromFile("Logo.jpg");//添加跟图片一样大小的签名到第一页,并设置图片为签名图片Spire.Pdf.Security.PdfSignature signature = new Spire.Pdf.Security.PdfSignature(page.Document, page, cert, "sign1");signature.Bounds = new RectangleF(new PointF(100, 300), new SizeF(image.Width, image.Height));signature.SignImageSource = image;signature.GraphicsMode = Spire.Pdf.Security.GraphicMode.SignImageAndSignDetail;signature.SignImageLayout = Spire.Pdf.Security.SignImageLayout.Stretch;signature.DocumentPermissions = Spire.Pdf.Security.PdfCertificationFlags.AllowFormFill | Spire.Pdf.Security.PdfCertificationFlags.AllowComments;//配置时间戳服务器string url = "http://timestamp.wosign.com/rfc3161";signature.ConfigureTimestamp(url);//保存文档pdf.SaveToFile("output.pdf");}}
}
效果:

本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
