Существует ли бесплатный инструмент командной строки linux для преобразования SVG в PDF и / или какой-нибудь широко используемый растровый формат (например, PNG)?
Существует ли бесплатный инструмент командной строки linux для преобразования SVG в PDF и / или какой-нибудь широко используемый растровый формат (например, PNG)?
Ответы:
Imagemagick хорош, когда растеризованный (пиксельный) вывод - это то, что вы хотите (или, по крайней мере, приемлемо), но в противном случае это плохой выбор, поскольку он эффективно встраивает в pdf растеризованную версию того, что вы пытаетесь преобразовать. Весь смысл svg / pdf в том, что он может быть векторизован, тем самым уменьшен в размерах, оставаясь плавным при любом разрешении.
Поэтому я бы определенно рекомендовал использовать Inkscape или CarioSVG . Последний имеет несколько утилит командной строки именно для этой цели ( svg2pdf
, svg2ps
и svg2png
). Единственное неудобство в том, что это в основном просто яйцо питона, поэтому, если у вас нет настроенной среды питона и вы не достаточно сообразительны (или не заботитесь о том, чтобы ее настроить), тогда эта опция - нет идти. Я попробовал себя, но у меня были проблемы с настройкой необходимого libcairo
(не то чтобы я слишком старался).
Inkscape - это круто, но клик немного неуклюж, если вы хотите, чтобы быстрая команда выполнила всю работу за вас. Я собрал пару маленьких сценариев, чтобы позаботиться обо всем этом для меня:
svg2pdf
#!/bin/bash
for i in $@; do
inkscape --without-gui --export-pdf="$(basename $i .svg).pdf" $i
done
svg2png
#!/bin/bash
for i in $@; do
inkscape --without-gui --export-png="$(basename $i .svg).png" $i
done
Поместите первый ~/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.192s time 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:
inkscape -A a.pdf a.svg
в PNG:
inkscape -e a.png a.svg
Нашел в man inkscape
и Как использовать Inkscape в режиме командной строки
как я знаю, есть способ управлять Inkscape через cmd - я уже использовал нечто подобное для пакетного экспорта миниатюр PNG из моей огромной коллекции SVG. Поскольку Inkscape также поддерживает экспорт PDF через Cairo, также должна быть возможность экспортировать PDF. Я бы спросил на каком-нибудь форуме Inkscape. :-)
mogrify -format pdf -- *.svg