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


17

Чи є безкоштовний інструмент командного рядка Linux для перетворення SVG в PDF та / або якийсь широко використовуваний растровий формат (наприклад, PNG)?

linux  svg 

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, перш ніж це буде працювати)


Я зробив лише один швидкий тест на продуктивність з imagemagick та inkscape з генерацією десяти pdfs, а 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 разів більша (хоча я б хотіла, щоб ви мене виправили, якщо я помиляюся). Причина, що займає більше часу, полягає в тому, що вона робить фактичні векторні маніпуляції, що набагато складніше, ніж растерізація (що в основному еквівалентно візуалізації).
метасоарій

7

Там є Image Magick , а в Inkscape також є інструменти командного рядка.


3
convertперемагає далеко. Він навіть здатний конвертувати в езотеричні формати і з яких ви навіть не знали, і застосувати до них більше ефектів, то вам коли-небудь знадобиться.
new123456

3
Просто для уточнення для незнайомих читачів, convertце інструмент командного рядка для ImageMagick.
Еріка

2
і ще одне уточнення: якщо ви використовуєте конвертувати, ви перейдете з векторного в растровий і втратите можливість масштабування зображення. в моїй книзі виграє Inkscape. це просто залежить від того, що вам потрібно.
nsheff


0

як я знаю, є спосіб керувати Inkscape через cmd - я вже використовував щось подібне для експортування ескізів PNG з моєї величезної колекції SVG. Оскільки Inkscape також підтримує експорт PDF через Каїр, експорт PDF також повинен бути можливим. Я б запитав на якомусь форумі Inkscape. :-)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.