svg - 是否可以将 SVG 转换为字符串 p: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 签名使用字符串
示例
{"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
更新
我在评论中尝试了建议的转换
但结果不够准确,无法使用。
解决方案
你不会(轻易)成功。我尝试了许多(几乎两打)基于 svg 的“签名”,我在互联网上搜索并得出以下结论:
- 大多数签名不是具有(可变)粗细/宽度的线条,而是轮廓
- 其中许多由 SVG 中以不同方式构造的多条线组成
- 前写,有时返回
使用引用的代码将这些路径转换为多边形在某些情况下会(非常)接近,但在大多数情况下不会。您可能会尝试改进代码,但很可能您甚至无法达到 25% 的准确度,我的意思是 75% 的转换不会足够接近。
这让我想到了真正的问题。这可能是http://xyproblem.info,我个人只是展示 SVG,如果是因为一些遗留问题,我会选择性地通过 PrimeFaces 签名组件展示新签名,通过 SVG 展示旧签名或显示全部通过 SVG 轻松将 PrimeFaces 签名转换为 SVG
推荐阅读
- python - `pydot` 调用 GraphViz 失败。请安装 GraphViz 并确保其可执行文件在 $PATH 中
- html - 为什么两个边距为0的DIV之间存在差距
- python - 如何访问 azureml FileDataSet 中的文件(图像)?
- authentication - 微服务的用户管理问题
- sql - 用于聚合 jsonb 子项、SQL/HQL 的嵌套选择
- ios - 使用 ForEach 时获取索引值 - SwiftUI
- android - android,如何在使用 Theme.AppCompat.Light.DarkActionBar 时使用 MaterialCardView
- android - 如何在 xml 数据绑定中使用 Singleton 类方法?
- c# - 报告查看器无法呈现 SQL SERVER 2016 ssrs 报告
- orocrm - 不支持 filter[website1] 中的运算符 ['~','!~']