бесплатный инструмент командной строки linux для конвертирования SVG в PDF и / или какой-нибудь широко используемый растровый формат?
17
Существует ли бесплатный инструмент командной строки linux для преобразования SVG в PDF и / или какой-нибудь широко используемый растровый формат (например, PNG)?
Imagemagick хорош, когда растеризованный (пиксельный) вывод - это то, что вы хотите (или, по крайней мере, приемлемо), но в противном случае это плохой выбор, поскольку он эффективно встраивает в pdf растеризованную версию того, что вы пытаетесь преобразовать. Весь смысл svg / pdf в том, что он может быть векторизован, тем самым уменьшен в размерах, оставаясь плавным при любом разрешении.
Поэтому я бы определенно рекомендовал использовать Inkscape или CarioSVG . Последний имеет несколько утилит командной строки именно для этой цели ( svg2pdf, svg2psи svg2png). Единственное неудобство в том, что это в основном просто яйцо питона, поэтому, если у вас нет настроенной среды питона и вы не достаточно сообразительны (или не заботитесь о том, чтобы ее настроить), тогда эта опция - нет идти. Я попробовал себя, но у меня были проблемы с настройкой необходимого libcairo(не то чтобы я слишком старался).
Inkscape - это круто, но клик немного неуклюж, если вы хотите, чтобы быстрая команда выполнила всю работу за вас. Я собрал пару маленьких сценариев, чтобы позаботиться обо всем этом для меня:
svg2pdf
#!/bin/bashfor i in $@;do
inkscape --without-gui --export-pdf="$(basename $i .svg).pdf" $i
done
svg2png
#!/bin/bashfor i in $@;do
inkscape --without-gui --export-png="$(basename $i .svg).png" $i
done
Поместите первый ~/bin/svg2pdfи последний ~/bin/svg2png, запустите chmod +xоба из них, чтобы сделать их исполняемыми, и бум! У вас есть быстрый и простой способ для этих часто используемых операций, который не требует, чтобы вы думали или помнили, как работает CLI Inkscape. (Очевидно, вам нужно установить Inkscape, прежде чем это сработает)
Я сделал всего один быстрый тест производительности с imagemagick и inkscape с генерацией десяти PDF-файлов и imagemagick в 5,77 раза быстрее. time for i in {1..10}; do time inkscape --without-gui -f "drawing.svg" --export-pdf="drawing$i.pdf"; done;реальный 0m2.192s time for i in {1..10}; do convert drawing.svg drawing$i$i$i.pdf; done;реальный 0m0.381s
6
Это может быть быстрее, но вы теряете векторную природу графики, поэтому она, вероятно, также в 10 раз больше (хотя я бы хотел, чтобы вы поправили меня, если я ошибаюсь). Причина, по которой это занимает больше времени, заключается в том, что он выполняет реальные векторные манипуляции, которые намного сложнее, чем растеризация (что в основном эквивалентно рендерингу).
convertвыигрывает, безусловно. Он даже способен конвертировать в и из эзотерических форматов, о которых вы даже не подозревали, и применять к ним больше эффектов, чем вам когда-либо понадобится.
new123456
3
Просто, чтобы уточнить для незнакомых читателей, convertэто инструмент командной строки для ImageMagick.
Эрика
2
и еще одно уточнение: если вы используете конвертирование, вы переключитесь с вектора на растр и потеряете способность масштабировать изображение. в моей книге победил Inkscape. это зависит только от того, что вам нужно.
как я знаю, есть способ управлять Inkscape через cmd - я уже использовал нечто подобное для пакетного экспорта миниатюр PNG из моей огромной коллекции SVG. Поскольку Inkscape также поддерживает экспорт PDF через Cairo, также должна быть возможность экспортировать PDF. Я бы спросил на каком-нибудь форуме Inkscape. :-)
mogrify -format pdf -- *.svg
Ответы:
Imagemagick хорош, когда растеризованный (пиксельный) вывод - это то, что вы хотите (или, по крайней мере, приемлемо), но в противном случае это плохой выбор, поскольку он эффективно встраивает в pdf растеризованную версию того, что вы пытаетесь преобразовать. Весь смысл svg / pdf в том, что он может быть векторизован, тем самым уменьшен в размерах, оставаясь плавным при любом разрешении.
Поэтому я бы определенно рекомендовал использовать Inkscape или CarioSVG . Последний имеет несколько утилит командной строки именно для этой цели (
svg2pdf
,svg2ps
иsvg2png
). Единственное неудобство в том, что это в основном просто яйцо питона, поэтому, если у вас нет настроенной среды питона и вы не достаточно сообразительны (или не заботитесь о том, чтобы ее настроить), тогда эта опция - нет идти. Я попробовал себя, но у меня были проблемы с настройкой необходимогоlibcairo
(не то чтобы я слишком старался).Inkscape - это круто, но клик немного неуклюж, если вы хотите, чтобы быстрая команда выполнила всю работу за вас. Я собрал пару маленьких сценариев, чтобы позаботиться обо всем этом для меня:
svg2pdf
svg2png
Поместите первый
~/bin/svg2pdf
и последний~/bin/svg2png
, запуститеchmod +x
оба из них, чтобы сделать их исполняемыми, и бум! У вас есть быстрый и простой способ для этих часто используемых операций, который не требует, чтобы вы думали или помнили, как работает CLI Inkscape. (Очевидно, вам нужно установить Inkscape, прежде чем это сработает)источник
time for i in {1..10}; do time inkscape --without-gui -f "drawing.svg" --export-pdf="drawing$i.pdf"; done;
реальный 0m2.192stime for i in {1..10}; do convert drawing.svg drawing$i$i$i.pdf; done;
реальный 0m0.381sЕсть Image Magick , и в Inkscape также есть инструменты командной строки.
источник
convert
выигрывает, безусловно. Он даже способен конвертировать в и из эзотерических форматов, о которых вы даже не подозревали, и применять к ним больше эффектов, чем вам когда-либо понадобится.convert
это инструмент командной строки для ImageMagick.Inkscape
В PDF:
в PNG:
Нашел в
man inkscape
и Как использовать Inkscape в режиме командной строкиисточник
как я знаю, есть способ управлять Inkscape через cmd - я уже использовал нечто подобное для пакетного экспорта миниатюр PNG из моей огромной коллекции SVG. Поскольку Inkscape также поддерживает экспорт PDF через Cairo, также должна быть возможность экспортировать PDF. Я бы спросил на каком-нибудь форуме Inkscape. :-)
источник