Как объединить SVG-файлы по длине из командной строки Linux? - PullRequest
2 голосов
/ 08 марта 2012

У меня есть серия квадратных SVG-файлов, которые я хотел бы упорядочить по длине в один сверхдлинный SVG-файл.

Я попытался использовать imagemagick для их объединения.Основываясь на этой странице: http://linux.about.com/library/cmd/blcmdl1_ImageMagick.htm

и это

http://www.imagemagick.org/Usage/compose/

Я пробовал эту команду

composite 'file1.svg' 'file2.svg' +adjoin 'outputfile.svg'

Однако я получил следующее сообщение об ошибке: composite: unrecognized option '+adjoin' @ error/composite.c/CompositeImageCommand/565.

Я попробовал несколько других команд imagemagick (преобразование, отображение), но безуспешно.Как я могу объединить эти файлы в командной строке?Есть команда inkscape, которая делает это?

Ответы [ 2 ]

3 голосов
/ 16 апреля 2012

В настоящее время нет удобного способа сделать это только с помощью командной строки и без пользовательских сценариев.

Ближайшая заранее написанная вещь (4-16-2012), которую я могу найти в данный момент, - https://github.com/astraw/svg_stack,, которая позволяет вам писать команды вида:

svg_stack.py --direction=h --margin=100 red_ball.svg blue_triangle.svg > shapes.svg

для объединения.

1 голос
/ 09 марта 2012

Это должно быть довольно легко, если вы хотите использовать язык сценариев. Для каждого файла просто добавьте префикс ко всем тегам id; поэтому в файле 1 id="circle" становится id="file1_circle", а в файле 2 id="circle" становится id="file2_circle".

В большинстве случаев вам не помешает тривиальный поиск и замена (найдите id=" и замените его на id="fileX_), хотя возможны случаи, когда это не сработает (особенно если эта строка поиска появляется элемент текста, например).

Если вы хотите сделать это «правильным образом», вам понадобится анализатор XML (например, XMLReader в PHP).

...