Aspose.PDF 是一款高级PDF处理API,可以在跨平台应用程序中轻松生成,修改,转换,呈现,保护和打印文档。无需使用Adobe Acrobat。此外,API提供压缩选项,表创建和处理,图形和图像功能,广泛的超链接功能,图章和水印任务,扩展的安全控件和自定义字体处理。。本文将为你介绍如何在 C++ 中将PDF转换为Doc 、Docx 。
Aspose API支持流行文件格式处理,并允许将各类文档导出或转换为固定布局文件格式和最常用的图像/多媒体格式。
数字签名用于保护PDF文档,然后再与第三方共享。对PDF文档进行数字签名可以通过使用数字签名验证文档来检测篡改。
Aspose.PDF for .NET是一种PDF处理和解析API,用于在跨平台应用程序中执行文档管理和操作任务,可以轻松用于生成,修改,转换,渲染,保护和打印PDF文档,而无需使用Adobe Acrobat。
为了使用数字签名以编程方式保护PDF文档,本文将展示如何在C#中对PDF文档进行数字签名和验证。最终,将学习如何:
- 使用C#对PDF文档进行数字签名。
- 使用C#中的时间戳服务器对PDF文档进行数字签名。
- 使用C#验证PDF中的数字签名。
近日,.NET版Aspose.PDF升级到v20.2版,解决VerticalAlignment对TextBoxField不起作用的问题,修复PDF到HTML之间转换等多项Bug,感兴趣的朋友可点击下方按钮下载最新版。
用C#对PDF文档进行数字签名
以下是使用Aspose.PDF for .NET签署PDF文档的步骤。
- 创建Document类的对象,并使用PDF文档的路径对其进行初始化。
- 创建一个PdfFileSignature类的对象,并使用Document类的对象对其进行初始化。
- 创建PKCS7类的对象,并使用证书路径和密码对其进行初始化。
- 为MDP签名类型创建并初始化DocMDPSignature类的对象。
- 创建一个矩形用于签名放置。
- 使用PdfFileSignature.Certify()方法对PDF文档进行数字签名。
- 使用PdfFileSignature.Save()方法保存文档。
以下代码示例显示了如何在C#中向PDF文档添加数字签名。
// Load PDF document using (Document pdfDocument = new Document("Document.pdf")) { using (PdfFileSignature signature = new PdfFileSignature(pdfDocument)) { PKCS7 pkcs = new PKCS7("certificate.pfx", "1234567890"); // Use PKCS7/PKCS7Detached objects DocMDPSignature docMdpSignature = new DocMDPSignature(pkcs, DocMDPAccessPermissions.FillingInForms); System.Drawing.Rectangle rect = new System.Drawing.Rectangle(100, 100, 200, 100); // Set signature appearance signature.SignatureAppearance = @"aspose-logo.png"; // Create any of the three signature types signature.Certify(1, "Signature Reason", "Contact", "Location", true, rect, docMdpSignature); // Save digitally signed PDF file signature.Save("Digitally Signed PDF.pdf"); } }
使用C#中的时间戳服务器对PDF文档进行数字签名
使用TimestampSettings类提供详细信息,从而使用TimeStamp服务器对PDF文档进行签名。以下代码示例演示如何使用C#中的TimeStamp服务器对PDF文档进行数字签名。
// Load PDF document using (Document pdfDocument = new Document("Document.pdf")) { using (PdfFileSignature signature = new PdfFileSignature(pdfDocument)) { PKCS7 pkcs = new PKCS7("certificate.pfx", "WebSales"); // Use PKCS7/PKCS7Detached objects TimestampSettings timestampSettings = new TimestampSettings("https:\\your_timestamp_settings", "user:password"); // User/Password can be omitted pkcs.TimestampSettings = timestampSettings; System.Drawing.Rectangle rect = new System.Drawing.Rectangle(100, 100, 200, 100); // Create any of the three signature types signature.Sign(1, "Signature Reason", "Contact", "Location", true, rect, pkcs); // Save output PDF file signature.Save("Output.pdf"); } }
使用C#验证PDF中的数字签名
使用以下步骤验证经过数字签名的PDF文档:
- 创建Document类的对象,并使用PDF文档的路径对其进行初始化。
- 创建一个PdfFileSignature类的对象,并使用Document类的对象对其进行初始化。
- 访问PDF文档的所有签名。
- 使用PdfFileSignature.VerifySigned()方法验证签名的有效性。
下面的代码示例演示如何使用C#验证PDF中的数字签名。
// Load PDF document using (Document pdfDocument = new Document("Document.pdf")) { using (PdfFileSignature signature = new PdfFileSignature(pdfDocument)) { IListsigNames = signature.GetSignNames(); if (sigNames.Count > 0) // Any signatures? { if (signature.VerifySigned(sigNames[0] as string)) // Verify first one { if (signature.IsCertified) // Certified? { if (signature.GetAccessPermissions() == DocMDPAccessPermissions.FillingInForms) // Get access permission { // Do something } } } } } }