我正在使用增量更新在 PDF 文档中实现可见的数字签名。我使用 PKCS#7 分离签名生成签名,并添加小部件注释来表示视觉签名。签名验证工作正常,但注释(当前是用于测试目的的简单彩色矩形)不会显示在任何 PDF 查看器中。
增量更新如下:
6 0 obj
<<
/Type /Sig
/Filter /Adobe.PPKLite
/SubFilter /adbe.pkcs7.detached
/Prop_Build <<
/App << /Name /Digitorus#20PDFSign >>
>>
/ByteRange [0 938 3808 918] /Contents<308...000>
/TransformMethod /FieldMDP
/TransformParams <<
/Type /TransformParams
/Action /All
/V /1.2
/DigestMethod /SHA512
>>
/Name (John Doe)
/Location (Somewhere)
/Reason (Test with visible signature)
/ContactInfo (None)
>>
endobj
7 0 obj
<<
/Type /XObject
/Subtype /Form
/BBox [0 0 190 190]
/Matrix [1 0 0 1 0 0]
/Resources <<
>>
/FormType 1
/Length 35
>>
stream
q
255 112 52 rg
0 0 190 190 re
f
Q
endstream
endobj
8 0 obj
<<
/Type /Annot
/Subtype /Widget
/Rect [10 10 200 200]
/AP << /N 7 0 R >>
/Border [1 1 1]
/P 3 0 R
/F 132
/FT /Sig
/T (Signature 1)
/V 6 0 R
>>
endobj
9 0 obj
<<
/Type /Catalog
/Pages 2 0 R
/AcroForm <<
/Fields [8 0 R]
/SigFlags 3
>>
>>
endobj
xref
6 4
0000000740 00000 n
0000004062 00000 n
0000004264 00000 n
0000004444 00000 n
trailer
<< /Root 9 0 R
/Prev 565
/Size 10
>>
startxref
4554
%%EOF
我不确定这是否能解决您的问题,而且我不熟悉 PDF 格式或 PKCS#7,但似乎您没有渲染矩形(7 0 obj),只有“Hello World”文本(4 0 对象)。通过将行 /Contents 4 0 R 更改为 /Contents 7 0 R,并标准化颜色(255 112 52 -> 1.0 0.439 0.204 rg),它确实渲染了微红色矩形。