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 Batik, и сделать сценарии с Rhino. Посмотрите на это на примере, как это сделать:

Смежные вопросы