如何在 Android 中签署 PDF

Posted

技术标签:

【中文标题】如何在 Android 中签署 PDF【英文标题】:How to sign a PDF in Android 【发布时间】:2017-03-20 14:24:54 【问题描述】:

我必须在 android 应用程序中实现一个允许我签署 PDF 的功能,当我说“签名”时,我指的是用户在文档末尾附加的数字签名(名字和名字)。

我可以使用三星 Note 4(带手写笔),那么它不会有问题,在显示屏上“写”。

问题是:是否有可能使用 itext 之类的库对文档进行签名,或者我必须编写自定义函数?

【问题讨论】:

您所描述的似乎不是“数字签名”,而只是附加到文档的图像。这非常容易伪造,并不能真正算作签名。 我只需要在文件末尾的一个符号(名字和姓氏),你最好的方式是什么? 您的问题文本和标签表明 digital-signature 使用加密技术,通常由 PKI 支持并由 CA 证书支持。然后你说你“只需要一个符号(名字和姓氏)”。您的意思是包括显示类似于墨水签名的图形吗?该图形是否旨在作为加密签名的可视化,或者您实际上根本不是数字签名? @mkl 我需要一个电子签名,我不知道该怎么做,但我需要用户可以签署文件 “电子签名”是一个相当模糊的术语。只需考虑 UETA Sec 2 的定义:“电子签名”是指附加到记录或在逻辑上与记录相关联并由有意签署记录的人执行或采用的电子声音、符号或过程 - 当你说你需要电子签名时,你的意思是你需要一些这样的声音吗? (这只是众多法律和科学定义中的一个,营销部门添加了自己的变体。)所以请首先确定您需要哪种“电子签名”,然后将其作为第二步实施。 【参考方案1】:

我猜您想使用用户的笔迹用笔在文档上应用电子签名。正如@mkl 所说,“数字签名”概念通常在使用数字证书和密码学时应用。

手写电子签名要求

人们倾向于认为手写签名包含嵌入图像,但这样您的系统在诉讼时需要具有最低法律价值:

R1 - 确保签名者的身份

R2 - 唯一地附加签名和文档

R3 - 保护文档和签名的完整性

这些或多或少是数字签名的特征。

Android 上的手写签名

android上的流程应该是这样的:

R2) 使用 Canvas 捕获用户图,包括生物特征(x、y、时间、压力)。使用 PDFBox 或 itext(客户端或服务器端)将图像和生物特征数据嵌入到文档中

R1) 在上一步中包含生物特征数据,允许专家对签名进行潜在分析

R3) 我建议对文档和签名证据应用时间戳,以保护完整性并确保签名时间。 itext 和 PDFBox 都支持

如果您不需要合法值,则仅应用绘图部分。您的签名质量将由设备特性决定。例如,特定的签名板也可以提供笔的方向

Android 链接

Drawing on Canvas and save image(看例子,你可以从事件中获取压力和时间)

PDFBox, inserting image in pdf

PDFBox attach files to pdf

PDFBox digital-signature example with timestamp

您将找到 itext 的类似链接。选择最适合您的用例以及您是要在 Android 上还是在服务器端执行

【讨论】:

以上是关于如何在 Android 中签署 PDF的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Serum Anchor 中签署代币交易

在 Android Studio 中签署 Android apk 文件的最简单方法是啥? [复制]

如何在 Xcode 中签署归档应用程序

如何在单个.JAR中签署和部署JavaFX应用程序?

在移动应用程序中签署 jwt 是不是安全?

在Visual Studio和InstallShield中签署所有需要的文件