darmowe narzędzie wiersza poleceń Linux do konwersji SVG na PDF i / lub jakiś powszechnie używany format bitmap?
17
Czy jest dostępne bezpłatne narzędzie wiersza polecenia Linux do konwersji SVG na PDF i / lub jakiś powszechnie używany format bitmapowy (na przykład PNG)?
Imagemagick jest świetny, gdy zrasteryzowane (pikselowane) wyjście jest tym, czego chcesz (lub przynajmniej jest akceptowalne), ale jest złym wyborem, ponieważ skutecznie osadza w pdf zrasteryzowaną wersję tego, co próbujesz przekonwertować. Istotą svg / pdf jest to, że można go wektoryzować, dzięki czemu ma mniejszy rozmiar, zachowując płynność w dowolnej rozdzielczości.
Zdecydowanie poleciłbym użycie Inkscape lub CarioSVG . Ten ostatni ma kilka narzędzi linii polecenia dokładnie w tym celu ( svg2pdf, svg2psi svg2png). Jedyną przeszkodą jest to, że jest to po prostu jajo pytona, więc jeśli nie masz skonfigurowanego środowiska python i nie jesteś wystarczająco bystry (lub nie dbasz wystarczająco), aby go skonfigurować, wtedy ta opcja jest nie udać się. Próbowałem sam, ale miałem problemy z ustawieniem wymaganych libcairo(nie dlatego, że próbowałem zbyt mocno).
Inkscape jest niesamowity, ale cli jest trochę niezręczny, jeśli chcesz tylko szybkie polecenie, aby wykonać całą pracę za Ciebie. Złożyłem kilka małych skryptów, aby zająć się tym wszystkim za mnie:
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
Włóż pierwszą ~/bin/svg2pdfi drugą ~/bin/svg2png, uruchom chmod +xna nich obie, aby były one wykonywalne i bum! Masz szybki i łatwy skrót do tych często poszukiwanych operacji, które nie wymagają myślenia ani zapamiętywania działania interfejsu CLI Inkscape. (Oczywiście potrzebujesz Inkscape zainstalowanego zanim to zadziała)
Zrobiłem tylko jeden szybki test wydajności z imagemagick i inkscape z generacją dziesięciu plików pdf, a imagemagick jest 5,77 razy szybszy. time for i in {1..10}; do time inkscape --without-gui -f "drawing.svg" --export-pdf="drawing$i.pdf"; done;prawdziwe 0m2.192s time for i in {1..10}; do convert drawing.svg drawing$i$i$i.pdf; done;prawdziwe 0m0.381s
6
To może być szybsze, ale tracisz wektorową naturę grafiki, więc prawdopodobnie jest ona także 10 razy większa (chociaż chciałbym, żebyś mnie poprawił, jeśli się mylę). Powodem, dla którego zajmuje to więcej czasu, jest faktyczne manipulowanie wektorem, które jest o wiele bardziej złożone niż rasteryzacja (co w zasadzie jest równoznaczne z renderowaniem).
convertzdecydowanie wygrywa. Jest nawet w stanie konwertować do iz ezoterycznych formatów, o których istnieniu nawet nie wiedziałeś, i stosować do nich więcej efektów, niż kiedykolwiek będziesz potrzebować.
new123456
3
Wyjaśnienie dla nieznanych czytelników convertjest narzędziem wiersza polecenia dla ImageMagick.
Erika
2
i jeszcze jedno wyjaśnienie: jeśli użyjesz konwersji, przełączysz wektor z rastra i stracisz możliwość skalowania obrazu. w mojej książce wygrywa inkscape. to zależy tylko od tego, czego potrzebujesz.
jak wiem, istnieje sposób obsługi Inkscape za pomocą cmd - już użyłem czegoś podobnego do wsadowego eksportu PNG z mojej ogromnej kolekcji SVG. Ponieważ Inkscape obsługuje także eksport plików PDF za pośrednictwem Kairu, eksport plików PDF również powinien być możliwy. Chciałbym zapytać na jakimś forum Inkscape. :-)
mogrify -format pdf -- *.svg
Odpowiedzi:
Imagemagick jest świetny, gdy zrasteryzowane (pikselowane) wyjście jest tym, czego chcesz (lub przynajmniej jest akceptowalne), ale jest złym wyborem, ponieważ skutecznie osadza w pdf zrasteryzowaną wersję tego, co próbujesz przekonwertować. Istotą svg / pdf jest to, że można go wektoryzować, dzięki czemu ma mniejszy rozmiar, zachowując płynność w dowolnej rozdzielczości.
Zdecydowanie poleciłbym użycie Inkscape lub CarioSVG . Ten ostatni ma kilka narzędzi linii polecenia dokładnie w tym celu (
svg2pdf
,svg2ps
isvg2png
). Jedyną przeszkodą jest to, że jest to po prostu jajo pytona, więc jeśli nie masz skonfigurowanego środowiska python i nie jesteś wystarczająco bystry (lub nie dbasz wystarczająco), aby go skonfigurować, wtedy ta opcja jest nie udać się. Próbowałem sam, ale miałem problemy z ustawieniem wymaganychlibcairo
(nie dlatego, że próbowałem zbyt mocno).Inkscape jest niesamowity, ale cli jest trochę niezręczny, jeśli chcesz tylko szybkie polecenie, aby wykonać całą pracę za Ciebie. Złożyłem kilka małych skryptów, aby zająć się tym wszystkim za mnie:
svg2pdf
svg2png
Włóż pierwszą
~/bin/svg2pdf
i drugą~/bin/svg2png
, uruchomchmod +x
na nich obie, aby były one wykonywalne i bum! Masz szybki i łatwy skrót do tych często poszukiwanych operacji, które nie wymagają myślenia ani zapamiętywania działania interfejsu CLI Inkscape. (Oczywiście potrzebujesz Inkscape zainstalowanego zanim to zadziała)źródło
time for i in {1..10}; do time inkscape --without-gui -f "drawing.svg" --export-pdf="drawing$i.pdf"; done;
prawdziwe 0m2.192stime for i in {1..10}; do convert drawing.svg drawing$i$i$i.pdf; done;
prawdziwe 0m0.381sIstnieje Magia obrazu , a Inkscape ma również narzędzia wiersza poleceń.
źródło
convert
zdecydowanie wygrywa. Jest nawet w stanie konwertować do iz ezoterycznych formatów, o których istnieniu nawet nie wiedziałeś, i stosować do nich więcej efektów, niż kiedykolwiek będziesz potrzebować.convert
jest narzędziem wiersza polecenia dla ImageMagick.Inkscape
Do pliku PDF:
do PNG:
Znalezione w
man inkscape
i Jak używać Inkscape w trybie wiersza poleceńźródło
jak wiem, istnieje sposób obsługi Inkscape za pomocą cmd - już użyłem czegoś podobnego do wsadowego eksportu PNG z mojej ogromnej kolekcji SVG. Ponieważ Inkscape obsługuje także eksport plików PDF za pośrednictwem Kairu, eksport plików PDF również powinien być możliwy. Chciałbym zapytać na jakimś forum Inkscape. :-)
źródło