您的位置:首页 > 编程语言 > C#

PDF添加数字签名

2017-03-29 00:00 441 查看
首先Nuget安装FreeSpire.PDF,添加引用。下面具体代码

这个签名不知道有用么,代码是官网Down下来的,签名上去了,但是我还是可编辑,不知道是本机问题还是,签名验证不搞好的问题,签名是自己用工具生成的.

PdfDocument doc = new PdfDocument();
doc.LoadFromFile("D:\\1.pdf");

//得到签名文件
string pfxPath = "D://123.pfx";
PdfCertificate digi = new PdfCertificate(pfxPath, "123");

//开始处理分页
for (int i = 0; i < doc.Pages.Count; i++)
{
//得到当前页
PdfPageBase page = doc.Pages[i];
Console.WriteLine(page.Size.Width + "===" + page.Size.Height);
//创建签名域
var signature = new PdfSignature(doc, page, digi, "demo");
RectangleF rec;
if (i == 0)
{
rec = new RectangleF(new PointF(380, 600), new SizeF(80, 80));
}
else if (i == doc.Pages.Count - 1)
{
//得到根据关键字得到的结果集
PdfTextFind result = page.FindText("合计").Finds[0];
rec = new RectangleF(result.Position, new SizeF(80, 80));
}
else
{
rec = new RectangleF(new PointF(670, 400), new SizeF(80, 80));
}

signature.Bounds = rec;
signature.IsTag = true;
//数字签名通用名称标签
signature.DigitalSignerLable = "Digitally signed by";
//数字签名通用名称
signature.DigitalSigner = "Harry Hu for Test";
signature.DistinguishedName = "DN:";
signature.LocationInfoLabel = "Location:";
signature.LocationInfo = "London";
signature.ReasonLabel = "Reason: ";
signature.Reason = "Le document est certifie";
signature.DateLabel = "Date: ";
signature.Date = DateTime.Now;
signature.ContactInfoLabel = "Contact: ";
signature.ContactInfo = "123456789";
signature.Certificated = false;
signature.ConfigGraphicType = ConfiguerGraphicType.Picture;
signature.ConfiguerGraphicPath = "D://1.jpg";
//权限等级
signature.DocumentPermissions = PdfCertificationFlags.ForbidChanges;
}
//保存文档
doc.SaveToFile("D://Fill.pdf");
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C# PDF数字签名