60

我有一个识别用户的数字证书。我需要用它来对 pdf 文件进行数字签名。

有没有人有一个不使用第三方组件的例子?我需要完成这项工作,但最好能完全了解事情是如何完成的。

请提供 C# 示例:)

4

4 回答 4

44

开源iTextSharp库将允许您执行此操作。这是一篇解释如何对 pdf 文件进行数字签名的帖子。如果您不想使用第三方库,那么您可以自己实现它,但这可能是一项艰巨的任务 -> 您可以从阅读pdf 规范(8.6MB)开始

于 2008-12-18T19:58:24.823 回答
11

正确的 PDF 签名是一项非常复杂的任务。存在许多不符合 PDF 规范的文件(损坏的外部参照等),您的代码必须处理所有这些文件。然后各种 Acrobat 版本以不同的方式处理签名字段中的某些内容。因此,如果您需要完成任务(而不是研究其工作原理),您应该依赖第三方解决方案,例如我们的PDFBlackbox组件。

于 2008-12-20T10:37:01.580 回答
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"));

来源:ABCpdf 文档 - 签名方法

于 2010-05-06T05:33:37.967 回答
1

失去了我的第一个答案。可能想让 DocQ 尝试链接文本 他们有自己的证书,可以免费/便宜地为您执行此操作,以密封和加密 PDF。他们还有一个你可以使用的 API。

于 2010-05-10T20:37:31.670 回答