一篇文章解密如何轻松实现移动应用的电子和手绘PDF签名功能!

发布时间 2023-10-19 09:31:25作者: AABBbaby

对PDF文件签名是移动设备上越来越普遍的使用需求,本文将描述自动生成/“手绘”签名与如何使用DevExpress Office File API组件来实现在.NET MAUI应用程序中快速合并签名/签名支持之间的区别。

DevExpress Office File API使用教程

DevExpress Office File API是一个专为C#, VB.NET 和 ASP.NET等开发人员提供的非可视化.NET库。有了这个库,不用安装Microsoft Office,就可以完全自动处理Excel、Word等文档。开发人员使用一个非常易于操作的API就可以生成XLS, XLSx, DOC, DOCx, RTF, CSV 和 Snap Report等企业级文件。

获取DevExpress Office File API v23.1正式版下载

DevExpress技术交流群9:909157416      欢迎一起进群讨论

电子 VS 手绘PDF签名区别

虽然这两种类型的签名都很相似,但它们在功能/实践上存在差异。

电子签名(e-sign)使用加密方法来确认文件是从特定的源发送的,并且在发送后没有被更改。下面的列表描述了使用电子签名签名文件时执行的简化操作顺序:

1. 发送方计算他们想要发送的PDF文件的哈希码。

2. 发送方创建一个公钥/私钥对,并用私钥加密哈希码。

3. 发送方发送PDF文件、加密的哈希码(签名)、公钥和证书,证书包含发件人的信息,接收方可以用它来确认公钥的真实性。

4. 接收方用公钥解密加密的哈希码(签名),计算文档的哈希码,并比较这些哈希。

5. 如果它们相等,则该文件是真实的。如果文件被修改,则文档哈希码将与使用签名中的公钥解密的哈希码不匹配。

为了获得额外的保护,您可以使用认证服务。这些服务有助于确保公钥属于发送文档的用户。

手绘签名很像纸上的“湿”签名,在PDF的情况下,它只是一个图像插入到文档的特定区域。您可以将这两种签名类型结合起来,以确认手绘签名的真实性。

添加PDF签名

DevExpress Office File API包含设计用于处理不同文档类型(PDF, Word, Excel, HTML)的类,在本文中,我们将使用Office File API对PDF文件进行签名,其中包含了刚才提到的两种签名类型。

PdfDocumentProcessor类是PDF文件修改的入口点,在这个项目中,我们使用了这个类的以下成员:

Android和iOS应用都是沙盒式的,他们对设备文件系统的访问权限有限。要处理应用程序包文件,需要将它们复制到Cache或AppDataDirectory(在本例中使用)文件夹中。在我们的例子中,这些文件是PDF和PFX证书文件。下面的代码示例定义了将指定的PDF文件从应用程序包复制到AppDataDirectory文件夹的方法:

public async Task<string> CopyWorkingFilesToAppData(string fileName) {
using Stream fileStream = await FileSystem.Current.OpenAppPackageFileAsync(fileName);
string targetFile = Path.Combine(FileSystem.Current.AppDataDirectory, fileName);
using FileStream outputStream = File.OpenWrite(targetFile);
fileStream.CopyTo(outputStream);
return targetFile;
}

一旦实现,您就可以使用PdfDocumentProcessor.LoadDocument 方法打开PDF文件。

DevExpress Office File API允许您检测PDF AcroForm字段并根据需要填充它们,我们使用以下成员来定位第一个可用的签名字段:

在这个特殊的使用场景中,PdfSignatureBuilder是另一个重要的类。它存储了签名本身的以下信息:

用户可以“绘制”一个签名,并将其嵌入到PDF文件中,这是通过使用DrawingView控件实现的。顾名思义,该控件可以将用户的绘图保存为图像——稍后我们将图像传递给PdfSignatureBuilder。

一旦文档被签名, PdfDocumentProcessor.SaveDocument方法保存签名的PDF文件。


更多DevExpress线上公开课、中文教程资讯请上中文网获取