C# 如何移除PDF文档的数字签名

墨蓝 2023-10-17 09:03 264阅读 0赞

C# 如何移除PDF文档的数字签名

和密码保护一样,数字签名也是保护PDF文档的一种方式,通常添加了数字签名的PDF文档只能浏览而不能打印和编辑,那如果我们要打印或编辑的话,首先需要做的就是移除文档内的数字签名。本篇文章的目的在于分享如何使用C#以编程的方式移除PDF的数字签名,在该项目中使用了一个免费版本的PDF组件-Free Spire.PDF,如果需要可以从E-iceblue官网或Nuget下载并安装。

以下是原PDF文件截图,可以看到该PDF文件中含有一个数字签名:

Center

准备工作

安装Free Spire.PDF后,在visual studio中创建一个新的C#项目,从安装文件夹下添加Spire.Pdf.dll作为项目引用。

代码实现

1.添加完引用后,使用如下命名空间。

  1. using Spire.Pdf;
  2. using Spire.Pdf.Widget;

2.加载PDF文档。

  1. PdfDocument pdf = new PdfDocument();
  2. pdf.LoadFromFile("测试.pdf");
  1. 遍历PDF文档的所有表格域,找到签名域并将其移除。

    PdfFormWidget widgets = pdf.Form as PdfFormWidget;
    for (int i = 0; i <widgets.FieldsWidget.List.Count; i++)
    {

    1. PdfFieldWidget widget = widgets.FieldsWidget.List[i] as PdfFieldWidget;
    2. if (widget is PdfSignatureFieldWidget)
    3. {
    4. widgets.FieldsWidget.RemoveAt(i);
    5. }

    }

  2. 保存文档。

pdf.SaveToFile(“移除签名.pdf”);

运行代码得到的pdf文档已经没有签名了:

Center 1

完整代码

  1. using Spire.Pdf;
  2. using Spire.Pdf.Widget;
  3. namespace 移除PDF数字签名
  4. {
  5. class Program
  6. {
  7. static void Main(string[] args)
  8. {
  9. PdfDocument pdf = newPdfDocument();
  10. pdf.LoadFromFile("测试.pdf");
  11. PdfFormWidget widgets = pdf.Form as PdfFormWidget;
  12. for (int i = 0; i< widgets.FieldsWidget.List.Count; i++)
  13. {
  14. PdfFieldWidget widget =widgets.FieldsWidget.List[i] as PdfFieldWidget;
  15. if (widget isPdfSignatureFieldWidget)
  16. {
  17. widgets.FieldsWidget.RemoveAt(i);
  18. }
  19. }
  20. pdf.SaveToFile("移除签名.pdf");
  21. System.Diagnostics.Process.Start("移除签名.pdf");
  22. }
  23. }
  24. }

感谢阅读!

发表评论

表情:
评论列表 (有 0 条评论,264人围观)

还没有评论,来说两句吧...

相关阅读

    相关 C# PDF添加可信时间戳数字签名

    以PDF格式保存的电子交易文件或合同,即使具有数字签名,仍然不能完全保证该文件的法律效力,因为数字证书存在有效期和可随时吊销的问题。为了解决这一问题,出现了一种改进的基于时间戳

    相关 C# 如何PDF文档数字签名

    C\ 如何移除PDF文档的数字签名 和密码保护一样,数字签名也是保护PDF文档的一种方式,通常添加了数字签名的PDF文档只能浏览而不能打印和编辑,那如果我们要打印或编辑的话,