添加或删除 PDF 中的数字签名
Spire.PDF for .NET 是一款专门对 Word 文档进行操作的 .NET 类库。致力于在于帮助开发人员轻松快捷高效地创建、编辑、转换和打印 Microsoft Word 文档,而无需安装 Microsoft Word。
行号用于在每行文本旁边显示 Word 自动计算的行数。当我们需要参考合同或法律文件等文档中的特定行时,它非常有用。word中的行号功能允许我们设置起始值、编号间隔、与文本的距离以及行号的编号方式。使用 Spire.Doc,我们可以实现上述所有功能。本文将介绍如何将 HTML 转换为 PDF。
欢迎加入spire技术交流群:767755948
随着 PDF 文档在企业中越来越受欢迎,确保其真实性已成为一个关键问题。使用基于证书的签名来签署 PDF 可以保护内容,还能让其他人知道谁签署或批准了该文档。在本文中,您将了解如何使用不可见或可见签名对 PDF 进行数字签名,以及如何使用 Spire.PDF for .NET 从 PDF 中移除数字签名。
- 为 PDF 添加不可见数字签名
- 为 PDF 添加可见数字签名
- 删除 PDF 中的数字签名
安装 Spire.PDF for .NET
首先,您需要将 Spire.PDF for.NET 软件包中包含的 DLL 文件作为引用添加到您的 .NET 项目中。这些 DLL 文件既可以从这个链接下载,也可以通过 NuGet 安装。
1 PM> Install-Package Spire.PDF
为 PDF 添加隐形数字签名
以下是使用 Spire.PDF for .NET 为 PDF 添加隐形数字签名的步骤。
- 创建一个 PdfDocument 对象。
- 使用 PdfDocument.LoadFromFile() 方法加载示例 PDF 文件。
- 在初始化 PdfCertificate 对象时加载 pfx 证书文件。
- 根据证书创建 PdfSignature 对象。
- 通过 PdfSignature 对象设置文档权限。
- 使用 PdfDocument.SaveToFile() 方法将文档保存到另一个 PDF 文件中。
[C#]
01 using Spire.Pdf;
02 using Spire.Pdf.Security;
03
04 namespace AddInvisibleSignature
05 {
06 class Program
07 {
08 static void Main(string[] args)
09 {
10 //Create a PdfDocument object
11 PdfDocument doc = new PdfDocument();
12
13 //Load a sample PDF file
14 doc.LoadFromFile("C:\\Users\\Administrator\\Desktop\\sample.pdf");
15
16 //Load the certificate
17 PdfCertificate cert = new PdfCertificate("C:\\Users\\Administrator\\Desktop\\MyCertificate.pfx", "e-iceblue");
18
19 //Create a PdfSignature object
20 PdfSignature signature = new PdfSignature(doc, doc.Pages[doc.Pages.Count - 1], cert, "MySignature");
21
22 //Set the document permission to forbid changes but allow form fill
23 signature.DocumentPermissions = PdfCertificationFlags.ForbidChanges | PdfCertificationFlags.AllowFormFill;
24
25 //Save to another PDF file
26 doc.SaveToFile("InvisibleSignature.pdf");
27 doc.Close();
28 }
29 }
30 }
[VB.NET]
01 Imports Spire.Pdf
02 Imports Spire.Pdf.Security
03
04 Namespace AddInvisibleSignature
05 Class Program
06 Shared Sub Main(ByVal args() As String)
07 'Create a PdfDocument object
08 Dim doc As PdfDocument = New PdfDocument()
09
10 'Load a sample PDF file
11 doc.LoadFromFile("C:\\Users\\Administrator\\Desktop\\sample.pdf")
12
13 'Load the certificate
14 Dim cert As PdfCertificate = New PdfCertificate("C:\\Users\\Administrator\\Desktop\\MyCertificate.pfx","e-iceblue")
15
16 'Create a PdfSignature object
17 Dim signature As PdfSignature = New PdfSignature(doc,doc.Pages(doc.Pages.Count - 1),cert,"MySignature")
18
19 'Set the document permission to forbid changes but allow form fill
20 signature.DocumentPermissions = PdfCertificationFlags.ForbidChanges | PdfCertificationFlags.AllowFormFill
21
22 'Save to another PDF file
23 doc.SaveToFile("InvisibleSignature.pdf")
24 doc.Close()
25 End Sub
26 End Class
27 End Namespace
为 PDF 添加可见数字签名
以下是使用 Spire.PDF for .NET 为 PDF 添加可见数字签名的步骤。
- 创建一个 PdfDocument 对象。
- 使用 PdfDocument.LoadFromFile() 方法加载一个示例 PDF 文件。
- 在初始化 PdfCertificate 对象时加载 pfx 证书文件。
- 创建一个 PdfSignature 对象,并指定其在文档中的位置和大小。
- 设置签名细节,包括日期、姓名、位置、原因、手写签名图像和文档权限。
- 使用 PdfDocument.SaveToFile() 方法将文档保存到另一个 PDF 文件中。
01 using System;
02 using System.Drawing;
03 using Spire.Pdf;
04 using Spire.Pdf.Security;
05 using Spire.Pdf.Graphics;
06
07 namespace AddVisibleSignature
08 {
09 class Program
10 {
11 static void Main(string[] args)
12 {
13 //Create a PdfDocument object
14 PdfDocument doc = new PdfDocument();
15
16 //Load a sample PDF file
17 doc.LoadFromFile("C:\\Users\\Administrator\\Desktop\\sample.pdf");
18
19 //Load the certificate
20 PdfCertificate cert = new PdfCertificate("C:\\Users\\Administrator\\Desktop\\MyCertificate.pfx", "e-iceblue");
21
22 //Create a PdfSignature object and specify its position and size
23 PdfSignature signature = new PdfSignature(doc, doc.Pages[doc.Pages.Count - 1], cert, "MySignature");
24 RectangleF rectangleF = new RectangleF(doc.Pages[0].ActualSize.Width - 260 - 54 , 200, 260, 110);
25 signature.Bounds = rectangleF;
26 signature.Certificated = true;
27
28 //Set the graphics mode to ImageAndSignDetail
29 signature.GraphicsMode = GraphicMode.SignImageAndSignDetail;
30
31 //Set the signature content
32 signature.NameLabel = "Signer:";
33 signature.Name = "Gary";
34 signature.ContactInfoLabel = "Phone:";
35 signature.ContactInfo = "0123456";
36 signature.DateLabel = "Date:";
37 signature.Date = DateTime.Now;
38 signature.LocationInfoLabel = "Location:";
39 signature.LocationInfo = "USA";
40 signature.ReasonLabel = "Reason:";
41 signature.Reason = "I am the author";
42 signature.DistinguishedNameLabel = "DN:";
43 signature.DistinguishedName = signature.Certificate.IssuerName.Name;
44
45 //Set the signature image source
46 signature.SignImageSource = PdfImage.FromFile("C:\\Users\\Administrator\\Desktop\\handwrittingSignature.png");
47
48 //Set the signature font
49 signature.SignDetailsFont = new PdfTrueTypeFont(new Font("Arial Unicode MS", 12f, FontStyle.Regular));
50
51 //Set the document permission to forbid changes but allow form fill
52 signature.DocumentPermissions = PdfCertificationFlags.ForbidChanges | PdfCertificationFlags.AllowFormFill;
53
54 //Save to file
55 doc.SaveToFile("VisiableSignature.pdf");
56 doc.Close();
57 }
58 }
59 }
[VB.NET]
01 Imports System
02 Imports System.Drawing
03 Imports Spire.Pdf
04 Imports Spire.Pdf.Security
05 Imports Spire.Pdf.Graphics
06
07 Namespace AddVisibleSignature
08 Class Program
09 Shared Sub Main(ByVal args() As String)
10 'Create a PdfDocument object
11 Dim doc As PdfDocument = New PdfDocument()
12
13 'Load a sample PDF file
14 doc.LoadFromFile("C:\\Users\\Administrator\\Desktop\\sample.pdf")
15
16 'Load the certificate
17 Dim cert As PdfCertificate = New PdfCertificate("C:\\Users\\Administrator\\Desktop\\MyCertificate.pfx","e-iceblue")
18
19 'Create a PdfSignature object and specify its position and size
20 Dim signature As PdfSignature = New PdfSignature(doc,doc.Pages(doc.Pages.Count - 1),cert,"MySignature")
21 Dim rectangleF As RectangleF = New RectangleF(doc.Pages(0).ActualSize.Width - 260 - 54,200,260,110)
22 signature.Bounds = rectangleF
23 signature.Certificated = True
24
25 'Set the graphics mode to ImageAndSignDetail
26 signature.GraphicsMode = GraphicMode.SignImageAndSignDetail
27
28 'Set the signature content
29 signature.NameLabel = "Signer:"
30 signature.Name = "Gary"
31 signature.ContactInfoLabel = "Phone:"
32 signature.ContactInfo = "0123456"
33 signature.DateLabel = "Date:"
34 signature.Date = DateTime.Now
35 signature.LocationInfoLabel = "Location:"
36 signature.LocationInfo = "USA"
37 signature.ReasonLabel = "Reason:"
38 signature.Reason = "I am the author"
39 signature.DistinguishedNameLabel = "DN:"
40 signature.DistinguishedName = signature.Certificate.IssuerName.Name
41
42 'Set the signature image source
43 signature.SignImageSource = PdfImage.FromFile("C:\\Users\\Administrator\\Desktop\\handwrittingSignature.png")
44
45 'Set the signature font
46 signature.SignDetailsFont = New PdfTrueTypeFont(New Font("Arial Unicode MS", 12f, FontStyle.Regular))
47
48 'Set the document permission to forbid changes but allow form fill
49 signature.DocumentPermissions = PdfCertificationFlags.ForbidChanges | PdfCertificationFlags.AllowFormFill
50
51 'Save to file
52 doc.SaveToFile("VisiableSignature.pdf")
53 doc.Close()
54 End Sub
55 End Class
56 End Namespace
从 PDF 中移除数字签名
以下是使用 Spire.PDF for .NET 从 PDF 中移除数字签名的步骤。
- 创建一个 PdfDocument 对象。
- 通过 PdfDocument.Form 属性从文档中获取表单部件。
- 循环查看窗口部件,并确定特定窗口部件是否为 PdfSignatureFieldWidget。
- 使用PdfFieldCollection.RemoveAt()方法移除签名部件。
- 使用PdfDocument.SaveToFile()方法将文档保存到另一个PDF文件中。
01 using Spire.Pdf;
02 using Spire.Pdf.Widget;
03
04 namespace RemoveSignature
05 {
06 class Program
07 {
08 static void Main(string[] args)
09 {
10 //Create a PdfDocument object
11 PdfDocument doc = new PdfDocument("C:\\Users\\Administrator\\Desktop\\VisiableSignature.pdf");
12
13 //Get form widgets from the document
14 PdfFormWidget widgets = doc.Form as PdfFormWidget;
15
16 //Loop through the widgets
17 for (int i = 0; i < widgets.FieldsWidget.List.Count; i++)
18 {
19 //Get the specific widget
20 PdfFieldWidget widget = widgets.FieldsWidget.List[i] as PdfFieldWidget;
21
22 //Determine if the widget is a PdfSignatureFieldWidget
23 if (widget is PdfSignatureFieldWidget)
24 {
25 //Remove the widget
26 widgets.FieldsWidget.RemoveAt(i);
27 }
28 }
29
30 //Save the document to another PDF file
31 doc.SaveToFile("RemoveSignatures.pdf");
32 }
33 }
34 }
[VB.NET]
01Imports Spire.Pdf
02 Imports Spire.Pdf.Widget
03
04 Namespace RemoveSignature
05 Class Program
06 Shared Sub Main(ByVal args() As String)
07 'Create a PdfDocument object
08 Dim doc As PdfDocument = New PdfDocument("C:\\Users\\Administrator\\Desktop\\VisiableSignature.pdf")
09
10 'Get form widgets from the document
11 Dim widgets As PdfFormWidget = doc.Form as PdfFormWidget
12
13 'Loop through the widgets
14 Dim i As Integer
15 For i = 0 To widgets.FieldsWidget.List.Count- 1 Step i + 1
16 'Get the specific widget
17 Dim widget As PdfFieldWidget = widgets.FieldsWidget.List(i) as PdfFieldWidget
18
19 'Determine if the widget is a PdfSignatureFieldWidget
20 If TypeOf widget Is PdfSignatureFieldWidget Then
21 'Remove the widget
22 widgets.FieldsWidget.RemoveAt(i)
23 End If
24 Next
25
26 'Save the document to another PDF file
27 doc.SaveToFile("RemoveSignatures.pdf")
28 End Sub
29 End Class
30 End Namespace
申请临时许可证
若想从生成的文档中删除评估信息,或解除功能限制,申请 30 天试用许可证。

QQ交谈
在线咨询

渝公网安备
50010702500608号

客服热线