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

来源:互联网 发布:鸡啄米 mfc编程入门 编辑:程序博客网 时间:2024/05/01 08:40

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

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


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


准备工作

安装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 <widgets.FieldsWidget.List.Count; i++){   PdfFieldWidget widget = widgets.FieldsWidget.List[i] as PdfFieldWidget;    if (widget is PdfSignatureFieldWidget)    {        widgets.FieldsWidget.RemoveAt(i);    }}
4. 保存文档。

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


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


完整代码

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");        }    }}

感谢阅读!

 

 

0 0
原创粉丝点击