бесплатный инструмент командной строки linux для конвертирования SVG в PDF и / или какой-нибудь широко используемый растровый формат?

17

Существует ли бесплатный инструмент командной строки linux для преобразования SVG в PDF и / или какой-нибудь широко используемый растровый формат (например, PNG)?


источник
2
mogrify -format pdf -- *.svg
Yrogirg

Ответы:

25

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, прежде чем это сработает)

metasoarous
источник
Я сделал всего один быстрый тест производительности с 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 раз больше (хотя я бы хотел, чтобы вы поправили меня, если я ошибаюсь). Причина, по которой это занимает больше времени, заключается в том, что он выполняет реальные векторные манипуляции, которые намного сложнее, чем растеризация (что в основном эквивалентно рендерингу).
metasoarous
7

Есть Image Magick , и в Inkscape также есть инструменты командной строки.

Erika
источник
3
convertвыигрывает, безусловно. Он даже способен конвертировать в и из эзотерических форматов, о которых вы даже не подозревали, и применять к ним больше эффектов, чем вам когда-либо понадобится.
new123456
3
Просто, чтобы уточнить для незнакомых читателей, convertэто инструмент командной строки для ImageMagick.
Эрика
2
и еще одно уточнение: если вы используете конвертирование, вы переключитесь с вектора на растр и потеряете способность масштабировать изображение. в моей книге победил Inkscape. это зависит только от того, что вам нужно.
Ншефф
0

как я знаю, есть способ управлять Inkscape через cmd - я уже использовал нечто подобное для пакетного экспорта миниатюр PNG из моей огромной коллекции SVG. Поскольку Inkscape также поддерживает экспорт PDF через Cairo, также должна быть возможность экспортировать PDF. Я бы спросил на каком-нибудь форуме Inkscape. :-)

Juhele
источник