带itext签名字段(数字签名与电子签名图像)-阅读

hmmo2u0o  于 2021-07-03  发布在  Java
关注(0)|答案(2)|浏览(634)

我试图从一个文档中读取签名,我从itext(和adobereader)中看到了不同的签名类型。我可以用证书等读取数字签名。请参阅下面的代码。但我也看到签名类型在一个可填充的pdf出来…似乎是一个图像,我认为这只是一个电子签名。如何读取签名(或者可能是图像)来提取签名数据?它会以图像的形式出现吗?是否有与该签名类型相关联的元数据?
这是我试过但结果是空的代码,

AcroFields fields = reader.getAcroFields();
    ArrayList<String> names = fields.getSignatureNames();
6yjfywim

6yjfywim1#

总的来说

pdf规范iso 32000-2中规定的唯一签名类型是认证签名、批准签名、文档时间戳和使用权签名。使用权签名仅仅是一种与adobe reader通信的方式,它应该启用某些通常不活动的特性;它们并不意味着由用户创建或验证为用户签名。因此,让我们忽略它们。
认证签名、批准签名和文档时间戳存储在acroform签名字段中,您可以使用代码检索用可互操作签名填充(签名)的签名字段。
因此,您在查看pdf时识别的其他“签名”是
或者不可互操作,但至少签名符合规范,
或者它们甚至不是一开始就符合规范的签名,
或者您的pdf文件已损坏,使itext无法识别签名。
在这两种情况下,都没有通用的方法来找到它们的签名相关信息并对其进行解释。您必须分析pdf中低级数据的确切性质,甚至可能必须要求签名的创建者提供足够的信息(规范、解密材料等),以便能够进行分析。

在示例文件中

对于您共享的示例文件,有一种混合(正如我写这篇文章时lonzak已经解释的那样):
它有6个空(未签名)签名字段。
它有两个带有涂鸦的位图,大约位于两个签名表单字段的区域中。

因此,这些位图图像不会填充任何acroform字段。实际上它们根本不代表任何动态内容,它们是静态页面内容的一部分。
尽管如此,这些位图可能被视为具有法律约束力(尽管很容易否认)的签名,具体取决于您的当地立法。因此,可能确实需要提取这些涂鸦,即使它们没有填充官方的acroform字段。
为此,您必须将图像提取(带坐标)应用于pdf。要确定哪个位图用于哪个原因,可以将这些坐标与6个空签名字段的坐标进行比较。
此外,用于添加这些涂鸦的adobe软件甚至在添加的内容上特别标记了一个自定义标记:

/ADBE_FillSign BMC
q
0 Tc
0 Tw
0 g
0 G
1 w
/GS2 gs
/T1_0 1 Tf
/Fm0 Do
Q
EMC

因此,在自定义代码中,要查找像这样的签名图像,只需查找标记为adbe\u fillsign的内容中引用的图像。很明显,虽然,这限制了你的代码涂鸦签名添加了adobe软件。。。

进一步的问题

你在评论中提出了后续问题。
建议的方法是什么,比如说我们的“客户”签署要使用的文件。他们通常会使用mac preview或adobe reader…进行签名。例如,他们应该使用“文本”签名吗?
这首先是一个法律问题;您应该询问您的法律部门或外部律师哪些电子签名在您的用例中是可以的,哪些不是。然后,您可以从可接受的签名类型中选择您愿意在软件中支持的签名,并要求您的客户使用其中任何一种。
因为我没有mac,所以我没有mac预览版的实际操作经验。不过,过去几年,它在许多问题上扮演的角色表明,它并不是一个非常忠实的观众。因此,我不建议在这里使用。但也许同时它也变得有用了。
当前的adobe阅读器版本应该足够可靠,值得推荐。但别忘了清楚地描述如何用它正确地签名。
另外,多人可以数字签名吗?
pdf可互操作地支持串行数字签名。i、 e.第一个签名者签名pdf并将其签名转发给下一个签名者,下一个签名者签名pdf并将其转发,以此类推,直到最后一个签名者签名并且您拥有一个包含所有签名者签名的pdf。
多个签名者并行数字签名是不可能互操作的。i、 e.他们不能都对原始的、未签名的pdf文件签名,并期望他们的签名可以以某种方式合并成一个pdf文件,并填写所有签名。
验证的签名是什么样子的?我可以有多个吗?
(只能验证数字签名,不能验证任意签名。因此,我假设您在这里指的是数字签名。)
文档中数字签名的可视化外观完全由签名者自定义。
adobe reader在左侧的“签名”面板上显示有关数字签名的信息,例如如下所示(此屏幕截图以意大利语本地化;你很可能会在英语中看到)

绿色复选标记和文本说明了签名的验证状态。
有几种方法可以构造数字签名字段,以便adobe reader在文档中的签名中显示验证复选标记,例如:

不过,你不应该这么做。自从十几年前adobeacrobat6以来,这种方法就被弃用了,现在的pdf标准iso32000-2也禁止了这种方法。

mwg9r5ms

mwg9r5ms2#

文件内没有“官方”签名。不过,其中有(未签名的)签名表单字段。您可以在下面的屏幕截图中看到它们。你可以通过左上角的红色小箭头认出他们。其他的是文本字段。

你所看到的所谓的签名只是画在田野上的普通图像。所以你不能分析它们。如果你真的要签署的签名字段,你将能够分析,然后再,但不是那些绘制的签名图像。我把其中一张照片往上移了一点,向你展示它只是一幅画。。。

相关问题