Конвертировать SVG в PNG и PDF командную строку - PullRequest
0 голосов
/ 30 мая 2018

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

Он хорошо отображается в моих браузерах (chrome, edge, firefox).Файл доступен здесь: https://gist.github.com/acourdavault/329b8670517e0716cd38eab202e2ca0e

Включает в себя градиенты enter image description here

Я попробовал magick, inkskape, librsvg2, чтобы преобразовать его в png и или pdf. самая большая проблема заключается в том, что stop-color и stop-color-opacity не поддерживаются enter image description here Обратите внимание, здесь только inkscape выдает это сообщение, другой конвертер - нетпредоставить любую информацию, даже в подробном виде, но результат ужасен1021 *** (inkscape: 648850): ПРЕДУПРЕЖДЕНИЕ **: невыполненное свойство стиля SP_PROP_STOP_OPACITY: значение: 0.59999999999999998

** (inkscape: 648850): ПРЕДУПРЕЖДЕНИЕ **: невыполненное свойство стиля SP_PROP_STOP_COLOR: значение: f #``

PDF (для сохранения векторного формата) был бы идеальным, я думаю, но мне нужно иметь возможность запустить его из командной строки.

У вас есть идея, почему это не работает и как это исправить?

Замечания Я использую класс SVG, но стиль в стиле § в самом SVG


решение

решение от ccprog

Я переместил defs вверху xml svg, я использовал fill = url (#gradientid), чтобы объявить градиент вместо классов. Я заменил определение stop-color и stop-Непрозрачность, где в классах, чтобы встроить их в теги остановки.

1 Ответ

0 голосов
/ 30 мая 2018

Проблема здесь в том, что таблицы стилей плохо поддерживаются различными средствами рендеринга, кроме браузеров.Чтобы все заработало, вам нужно встроить все стили

Персональное объявление: Я написал модуль узла для этой задачи: svg-icon-toolbox.Вы можете загрузить свой файл, выполнить задачу inline и записать его обратно с помощью write.Преобразование PDF может затем быть выполнено в порожденном процессе из обратного вызова.

Вторая проблема заключается в указании градиентов после их использования.Это совершенно верно в соответствии со спецификацией, но librsvg это не нравится.Inkscape будет хорошо.(При наличии Inkscape или librsvg в системе магия будет использовать один из них для рендеринга, так что это избыточно.)

...