是否可以将SVG转换为p:signature使用的字符串?

时间:2018-06-20 10:11:39

标签: svg primefaces digital-signature

我正在从另一个应用程序获取SVG签名,并希望将其保存为字符串值,以便我们可以在当前应用程序上使用PrimeFaces签名。

这可能吗?

当前SVG

<svg xmlns="http://www.w3.org/2000/svg" version="1.2" baseProfile="tiny" viewBox="0, 0, 1320, 800" height="800" width="1320">
  <g stroke-linejoin="round" stroke-linecap="round" fill="none" stroke="black">
    <path stroke-width="24" d="M1068,420c0,0 0,0 0,0 "/>
    <path stroke-width="27" d="M1068,420c-1,-1 -1,-1 -1,-1 "/>
    <path stroke-width="25" d="M1067,419c1,-1 1,0 3,-1 1,0 1,0 1,0 "/>
  </g>
</svg>

Primefaces Signature使用一个字符串
例子

{"lines":[[211.91,90.72],[209.91,90.72]]}

从svg中提取的路径。

 M154,223c0,0 0,0 0,0
 M154,223c0,1 0,1 0,3
 M154,226c1,1 1,2 3,3
 M157,229c14,4 14,5 28,8
 M185,237c52,11 52,12 104,20
 M289,257c62,9 62,9 124,13 62,3 62,-1 123,0 65,1 65,2 130,3 43,0 43,0 87,-2 25,-1 26,-2 51,-6
 M804,265c10,-2 10,-3 19,-6

更新
我已经尝试过Suggested Conversion in comment

但是结果不够准确,无法使用。

OriginalConverted

1 个答案:

答案 0 :(得分:1)

您不会(轻松)成功。我尝试搜索了很多(近两打)基于svg的“签名”,结果发现他们在互联网上搜索并得出以下结论:

  • 大多数签名不是具有(可变)思想/宽度的线条,而是轮廓
  • 其中许多由SVG中以不同方式构造的多行组成
  • 向前写,有时回去

在某些情况下,使用引用的代码将这些路径转换为多边形会(非常)紧密,但在大多数情况下不会如此。您可能会尝试改进代码,但很可能您甚至无法达到25%的准确度,这意味着75%的转化率将不够接近。

这使我想到了真正的问题。这可能是http://xyproblem.info,我个人只是显示SVG,如果是由于某些遗留问题,我将选择性地通过PrimeFaces签名组件显示新的签名,而通过SVG显示旧的签名,或者通过SVG轻松transforming the PrimeFaces signatures to SVG