使用capsens_universign gem时SignatureField坐标异常致签章不显示
排查Universign签名后PDF无签章显示的问题
看起来你已经成功发起交易并完成了签名操作,但生成的PDF里看不到可视化签章。结合你的代码和Universign的常见配置坑,我整理了几个关键排查方向:
1. 检查handwritten_signature_mode参数的取值
你当前设置的是0,根据Universign的API规范,这个值代表不生成手写风格的可视化签章——只会添加数字签名的元数据,不会在PDF页面上显示可见的签名图案。
要让签章显示出来,需要把这个参数改成1(强制使用手写签名外观)或者2(允许签署者自行选择是否使用手写):
options: { profile: 'default', final_doc_sent: false, handwritten_signature_mode: 1 # 修改为1或2即可 }
2. 确认签名字段的坐标、页码和尺寸是否正确
你的SignatureField只配置了coordinate和page,这里有两个潜在问题:
- 坐标系统逻辑:Universign的PDF坐标是以页面左下角为原点的,你设置的
[37,684]可能落在了页面不可见区域(比如边缘或空白处),导致签章生成了但看不到。建议先换成更显眼的位置测试,比如第1页的[100,200]。 - 缺少尺寸参数:部分场景下,不指定
width和height会导致签章无法正确渲染。尝试补充尺寸参数:
signature: Universign::SignatureField.new( coordinate: [100, 200], page: 1, width: 120, # 签章宽度 height: 60 # 签章高度 )
另外要确认你的PDF确实存在第5页,避免页码设置错误。
3. 验证profile配置是否允许显示签章
你使用的default profile理论上支持签章显示,但如果你的Universign账号有自定义的profile配置,可能禁用了可视化签章功能。可以尝试暂时移除profile参数,使用系统默认配置测试。
4. 检查PDF是否已有数字签名(即使无可视化外观)
有时候签章不显示,但数字签名已经生效。你可以用Adobe Acrobat或其他专业PDF阅读器打开生成的文件,查看「签名面板」:如果能看到有效的数字签名记录,说明问题仅在于可视化外观的配置;如果没有签名记录,可能是签名流程未完全完成(可以再确认下Universign后台的交易状态)。
修改后的测试代码
我把上面的调整整合到你的代码里,你可以先跑这个版本测试:
document_from_content = Universign::Document.new( name: 'another.pdf', content: File.open("tmp/test.pdf").read ) signer = Universign::TransactionSigner.new( first_name: "Signer's first name", last_name: "Signer's last name", email: 'test@gmail.com', phone_number: 'SOME_PHONE_NUMBER', success_url: 'https://my_app.com', signature: Universign::SignatureField.new( coordinate: [100, 200], page: 1, width: 120, height: 60 ) ) transaction = Universign::Transaction.create( documents: [document_from_content], signers: [signer], options: { profile: 'default', final_doc_sent: false, handwritten_signature_mode: 1 } )
优先从修改handwritten_signature_mode和调整签名字段位置入手,这两个是最常见的解决方向。
内容的提问来源于stack exchange,提问作者Dante
相关产品推荐
相关产品推荐

