我有一个识别用户的数字证书。我需要用它来数字签署pdf文件。
有没有人有一个不使用第三方组件的示例?我需要完成这项工作,但要完全理解事情是如何完成的将是很好的。
C#示例请:)
答案 0 :(得分:39)
开源iTextSharp库将允许您执行此操作。这是一个post,解释了如何对pdf文件进行数字签名。如果您不想使用第三方库,那么您可以自己实施,但这可能是一项艰巨的任务 - >你可以先阅读pdf specification(8.6MB)
答案 1 :(得分:11)
正确的PDF签名是非常复杂的任务。存在许多不符合PDF规范的文件(破损的外部参照等),您的代码必须处理所有这些文件。然后各种Acrobat版本以不同方式处理签名字段中的某些内容。因此,如果您需要执行任务(而不是研究它的工作原理),您应该依赖第三方解决方案,例如我们的PDFBlackbox组件。
答案 2 :(得分:6)
在不使用第三方组件的情况下对PDF文档进行数字签名需要大量工作,并且通常最好避免使用。
组件为您完成所有艰苦的工作,因此您不必这样做。您应该会发现有一些优秀的免费PDF组件可以满足您的需求。
以下用C#编写的示例显示了使用ABCpdf对PDF文档进行数字签名是多么简单:
Doc theDoc = new Doc();
theDoc.Read(Server.MapPath("../Rez/Authorization.pdf"));
Signature theSig = (Signature)theDoc.Form["Signature"];
theSig.Location = "Washington";
theSig.Reason = "Schedule Agreed";
theSig.Sign(Server.MapPath("../Rez/JohnSmith.pfx"), "111111");
theDoc.Save(Server.MapPath("Signed.pdf"));
答案 3 :(得分:1)
失去了我的第一个答案。可能想让DocQ尝试link text他们有自己的证书,可以免费/廉价地为您封装和加密PDF。他们还有一个可以使用的API。