1

我正在寻找一个能让我对SVG文件执行图形操作的库。通过“操作”我的意思的东西,如:我可以使用什么库来操纵SVG文件?

  • 合并两个重叠的形状成单个形状
  • 查找形状
  • 的几何中心绘制形状是原始形状的25%的副本大小

...以及在Illustrator中可以做的其他类型的事情。

我需要构建一个可以自动执行这些类型的任务并在数百个SVG文件上执行这些任务的进程。我意识到我可以编写脚本来在Illustrator中自动化这类事情,但我需要在远程计算机上运行此脚本,并且不能依赖于运行Illustrator的实例。

回答

0

一个Qt库有类似的功能,你可能可以完成大部分的转换操作的吧:

Qt SVG

2

我不知道这直接满足您所要求的图书馆列出,但我认为这些东西不会简单地使用SVG DOM编写脚本。

对于第一个任务,听起来最简单的事情就是将这两个形状分组。


var shape1 = document.getElementById("shape1"); 
var shape2 = document.getElementById("shape2"); 
var newG = document.createElementNS(svgNs,"g"); 
shape1.parentNode.removeChild(shape1); 
shape2.parentNode.removeChild(shape2); 
newG.appendChild(shape1); 
newG.appendChild(shape2); 

对于第二个任务,你可以得到一个形状的边界框,并找到它的中心点。


var bbox = shape1.getBBox(); 
var centrePoint = {x:bbox.x + bbox.width/2, y:bbox.y + bbox.height/2}; 

对于第三个任务,您可以复制一个形状,然后对其应用一个比例转换。


var shape1Clone = shape1.cloneNode(true); 
shape1Clone.setAttributeNS(null,"transform","scale(.75)") 

为了自动执行此,这样就可以在远程计算机上运行它,你可以使用Apache蜡染库,并与犀牛做脚本。看看这一个例子,如何做到这一点: