Создание SVG с использованием Python - PullRequest
5 голосов
/ 30 августа 2009

Я создаю набор файлов SVG, которые включают в себя неудачное количество жестко закодированных значений (они должны печататься с элементами размером в мм, тогда как другие должны масштабироваться в процентах, и большинство значений определяются относительно каждого Другой). Вместо того, чтобы управлять этими числами вручную (не дай бог, я хочу что-то изменить), я подумал, что мог бы использовать мой надежный молоток-питон для этой задачи.

SVG 1.1 изначально не поддерживает какие-либо схемы переменных, которые позволили бы мне делать то, что я хочу, и я не заинтересован в том, чтобы включать в микс javascript или нестабильные черновые спецификации w3c. Одним из очевидных решений является использование форматирования строк для чтения, анализа и замены переменных в моем SVG-файле. Это кажется плохой идеей для больших документов, но имеет преимущество в простоте и портативности.

Во-вторых, я должен был изучить доступные библиотеки python-> svg. К сожалению, кажется, что несколько опций имеют тенденцию быть либо слишком новыми ( pySVG все еще имеет нестабильный интерфейс), либо слишком старыми (не обновляющимися с 2005 года), либо заброшенными. Я не присматривался, но я чувствую, что графические приложения недостаточно гибки для создания моих документов.

Третий вариант, с которым я столкнулся, - это использование какого-либо другого инструмента рисования (например, cairo), который можно убедить выпустить svg. Это имеет (потенциальный) недостаток, заключающийся в том, что он изначально не поддерживает абсолютные размеры элементов, которые так важны для меня, но могут включать возможность вывода PDF, что было бы удобно.

Я уже выполнил поиск в Google, поэтому я ищу информацию от людей, которые использовали любой из упомянутых методов, или кто мог бы знать о каком-то другом подходе. Для меня важна долгосрочная стабильность любого решения, которое было выбрано (это было первоначальной причиной ручного кодирования, а не просто использования иллюстратора).

На данный момент я склоняюсь к первому решению, поэтому приветствуются рекомендации по передовым методам использования python для анализа и замены переменных в файлах XML.

Ответы [ 2 ]

4 голосов
/ 30 августа 2009

Шаблонный движок на основе разметки, такой как genshi , может быть полезен. Это позволит вам выполнять большую часть разработки с использованием инструмента SVG и выполнять настройку в шаблоне. Я определенно предпочел бы это XSLT.

0 голосов
/ 30 августа 2009

Поскольку SVG - это XML, возможно, вы могли бы использовать XSLT для преобразования исходного XML-файла, содержащего ваши переменные, в SVG. В вашей таблице стилей XSLT у вас будут шаблоны, соответствующие различным элементам вашей иллюстрации SVG, которые изменяют свой вывод в зависимости от значений, найденных в исходном XML-файле.

Или вы можете использовать шаблон SVG в качестве источника и преобразовать его в окончательный вариант со значениями, передаваемыми в качестве параметров процессору XSLT.

Вы либо используете XSLT напрямую, либо через Python, если вам нужна логика, которую проще выполнять на традиционном языке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...