1

我正在寻找一个允许我对 SVG 文件执行图形操作的库。我所说的“操纵”是指:

  • 将两个重叠的形状合并为一个形状
  • 找到形状的几何中心
  • 绘制一个形状的副本,其大小为原始形状的 25%

...以及其他可以在 Illustrator 中完成的事情。

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

4

2 回答 2

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 编写脚本。看一下这个例子如何做到这一点:

于 2010-08-24T12:35:30.063 回答
0

其中一个 Qt 库具有类似的功能,您可能可以使用它进行大部分转换操作:

Qt SVG

于 2010-08-24T12:05:28.877 回答