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

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

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


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

C# 如何移除PDF文档的数字签名_第1张图片

准备工作

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

代码实现

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

using Spire.Pdf;
using Spire.Pdf.Widget;
2.加载PDF文档。

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

PdfFormWidget widgets = pdf.Form as PdfFormWidget;
for (int i = 0; i 
4. 保存文档。

pdf.SaveToFile("移除签名.pdf");


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

C# 如何移除PDF文档的数字签名_第2张图片

完整代码

using Spire.Pdf;
using Spire.Pdf.Widget;
 
namespace 移除PDF数字签名
{
    class Program
    {
        static void Main(string[] args)
        {
            PdfDocument pdf = newPdfDocument();
           pdf.LoadFromFile("测试.pdf");
 
            PdfFormWidget widgets = pdf.Form as PdfFormWidget;
            for (int i = 0; i< widgets.FieldsWidget.List.Count; i++)
            {
               PdfFieldWidget widget =widgets.FieldsWidget.List[i] as PdfFieldWidget;
               if (widget isPdfSignatureFieldWidget)
               {
                   widgets.FieldsWidget.RemoveAt(i);
               }
            }
 
           pdf.SaveToFile("移除签名.pdf");
           System.Diagnostics.Process.Start("移除签名.pdf");
        }
    }
}

感谢阅读!

 

 

你可能感兴趣的:(.NET,PDF)