PDF添加电子签名

问题描述 投票:0回答:1

我们有一个用于向PDF文档添加电子签名的API。由我们的API签署的PDF文档通常具有以下结构:

/Type/Annot/
/Type/Sig/
/Type/Font/BaseFont/Helvetica
/Type/Font/BaseFont/ZapfDingbats
/Type/XObject/Subtype/Form
/Type/Page/
/Type/Catalog/
xref
0 1
0000000000 65535 f 
57 1
0000088682 00000 n 
221 7
0000088804 00000 n 
0000088450 00000 n 
0000054970 00000 n 
0000088289 00000 n 
0000054837 00000 n 
0000088111 00000 n 
0000088211 00000 n 
trailer
<</Size 228/Root 221 0 R/Info 222 0 R/ID [<e8f997fdc4d9ee619c59add6882586d8><d13406b4c1e0cb3de6c1e8dd21d6be13>]/Prev 50291>>
startxref
89038
%%EOF

然而,当我们分析其他API输出时,我们还看到了如下结构:

/Type/Sig
/Type/XObject/Subtype/Form
/Type/Metadata/Subtype/XML
/Type/Catalog
/Type/ObjStm/N 4
34 0 obj
<</Length 52/Filter/FlateDecode/Size 35/Root 8 0 R/Info 6 0 R/ID [<4dc91a1875a6d707aec203bb021c93a0><b6fc5ae423a75860537207ff441de268>]/W[1 2 2]/Type/XRef/Index[0 2 6 1 8 2 28 7]/Prev 116>>stream
xœc``øÿŸq‘-ãB9 ±Şš‰A™QÈ]Pá%AXŒ ‚‰¤ =› ñ
endstream
endobj
startxref
45383
%%EOF

我们在PDF Standarts文档中找不到任何对此差异的引用,也未在PDF文档中添加电子签名指南。您能否提供何时使用哪种格式的信息。

提前致谢

pdf itext electronic-signature
1个回答
2
投票

您的问题与iText完全无关,甚至与数字签名无关。

让我们从像这样结束的PDF开始:

xref
0 1
0000000000 65535 f 
57 1
0000088682 00000 n 
221 7
0000088804 00000 n 
0000088450 00000 n 
0000054970 00000 n 
0000088289 00000 n 
0000054837 00000 n 
0000088111 00000 n 
0000088211 00000 n 
trailer
<</Size 228/Root 221 0 R/Info 222 0 R/ID [<e8f997fdc4d9ee619c59add6882586d8><d13406b4c1e0cb3de6c1e8dd21d6be13>]/Prev 50291>>
startxref
89038
%%EOF

您会看到文件结束标记(%%EOF)前面有交叉引用表的起始位置(startxref,在这种情况下,xref表从位置89038开始)。

交叉引用表定义PDF中每个对象的字节偏移量。在PDF 1.5之前的PDF版本中,交叉引用表以纯文本格式添加,每个字节偏移量使用十位数字定义。因此,文件的大小将限制为10到第十个字节(大约10千兆字节)。

版本低于PDF 1.5的PDF的最大大小约为10千兆字节。

从PDF 1.5开始,您还可以拥有:

34 0 obj
<</Length 52/Filter/FlateDecode/Size 35/Root 8 0 R/Info 6 0 R/ID [<4dc91a1875a6d707aec203bb021c93a0><b6fc5ae423a75860537207ff441de268>]/W[1 2 2]/Type/XRef/Index[0 2 6 1 8 2 28 7]/Prev 116>>stream
xœc``øÿŸq‘-ãB9 ±Şš‰A™QÈ]Pá%AXŒ ‚‰¤ =› ñ
endstream
endobj
startxref
45383
%%EOF

我们仍然有文件结束标记,我们仍然指向交叉引用表的起点,但交叉引用表的条目不再以明文形式显示。他们被压缩:xœc``øÿŸq‘-ãB9 ±Şš‰A™QÈ]Pá%AXŒ ‚‰¤ =› ñ

这允许您创建文件大小超过10千兆字节的文件。所有这些都在ISO 32000-1和ISO 32000-2中进行了解释。

这是PDF规范的屏幕截图:

enter image description here

如果你有软件对文档进行数字签名,但只支持PDF 1.5之前的格式,我会严肃质疑该软件是否支持符合当今标准的数字签名。我最近看到一个开发人员仍然使用SHA-1作为散列算法的项目。幸运的是,我能够通过将他介绍给blog about SHA-1来解释这是错误的,否则如果他的雇主发现他可能会被解雇(或者如果他的客户发现他正在为不再被视为签名的签名付款而被起诉)安全)。

© www.soinside.com 2019 - 2024. All rights reserved.