我正在搜索一个允许我对SVG文件进行图形处理的库。通过“操纵”我的意思是:
...以及在Illustrator中可以做的其他事情。
我需要构建一个可以自动执行这些类型任务并在数百个SVG文件上执行它们的进程。我意识到我可以编写脚本来在Illustrator中自动执行此类操作,但我需要在远程计算机上运行它,并且不能依赖于运行Illustrator的实例。
答案 0 :(得分: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 Batik库,并使用Rhino编写脚本。看看这个例子如何做到这一点:
答案 1 :(得分:0)
其中一个Qt库具有类似的功能,您可以使用它完成大部分转换操作: