Jak przekonwertować i SVG (zawierający kilka słów tekstu łacińskiego i kilka prostych grafik wektorowych) na plik PDF w systemie Linux?
Próbowałem Inkscape 0.47 na Ubuntu Lucid, ale losowo przesuwa niektóre grafiki podrzędne i powoduje, że niektóre wiersze w wyjściowym pliku PDF są krótsze. Tak więc wyjście jest bezużyteczne, ponieważ grafika wygląda zupełnie inaczej.
Próbowałem otworzyć plik SVG w Google Chrome 16 i wydrukować go do formatu PDF, ale zniekształca wszystkie kolory, a także usuwa niektóre elementy. (Plik SVG pojawia się dobrze na ekranie, ale jest już zły w podglądzie wydruku, a wygenerowany plik PDF jest również zły).
Nie chcę rasteryzować ani renderować SVG. Rozwiązanie, które konwertuje SVG na obraz bitmapowy, a następnie tworzy plik PDF z osadzonym obrazem, nie jest odpowiedzią na moje pytanie. (FYI Inscape 0.47 renderuje tekst w bardzo brzydki sposób, bez antyaliasingu, podczas renderowania do PNG.)
Jakie inne opcje mam?
źródło
Odpowiedzi:
rsvg-convert zrobił lewę dla SVG, który chciałem przekonwertować:
rsvg-convert -f pdf
nie rasteryzuje SVG, osadza i rozdziela czcionki (przynajmniej osadza używane znaki czcionki Arial). Czasami osadzanie czcionek kończy się niepowodzeniem (np. Dla czcionki LMRoman17) i cały plik czcionki jest kopiowany do wygenerowanego pliku PDF.Zależności od Ubuntu Lucid:
Domyślnie libcairo potrzebuje libX11, więc rsvg-convert może być trudny do zainstalowania w systemie bezgłowym.
Uwaga: Strona
rsvg-convert
podręcznika informuje, że narzędzie zawsze rasteryzuje, ale to nieprawda. Podręcznik jest po prostu przestarzały. Czasami twoje narzędzie do generowania svg może częściowo zrasteryzować obraz svg, co również może cię wprowadzić w błąd.źródło
rsvg-convert
jest nazywanyrsvg-view
.Działa to na Ubuntu Lucid:
Wywołanie Inkscape z wiersza poleceń działa nawet w trybie bezgłowym, bez GUI (
DISPLAY=
). Jednak instalacja Inscape instaluje wiele zależności, w tym X11.Pamiętaj, że status wyjścia Inskscape wynosi zawsze 0, nawet jeśli wystąpi błąd - uważaj na jego stderr.
Jest także
inkscape --shell
odpowiedni do konwertowania wielu dokumentów w partii. Pozwala to uniknąć wolnego czasu uruchamiania Inkscape dla każdego pliku:Inkscape jest również przydatny do uproszczenia SVG:
źródło
brew install inkscape
tych dni. Wynikowy/usr/local/bin/inkscape
działał dla mnie bez konieczności uruchamiania X11.app.dmg
dystrybucji rozproszonej na własnej stronie internetowej, a następnie wywołać z wiersza poleceń po utworzeniu dwóch dowiązań symbolicznych:ln -s ~/Applications/Inkscape.app/Contents/Resources/bin/inkscape ~/bin/inkscape
i podobnie dlainkscape-bin
(zakładając, że~/bin
należy do Ciebie$PATH
).-z
(lub--without-gui
) w programie Inkscape, aby uruchomić ją tylko w trybie wsadowym (żadne okno się nie otworzy).Z powodzeniem korzystałem z CairoSVG na OSX i Ubuntu.
Dokumentacja CairoSVG
źródło
Dobre wyniki uzyskuję z drukowania z Inkscape (także 0.47) do PDF i zapisywania jako PDF (ale nieco inny), ale to może zależeć od posiadanej grafiki.
Alternatywą o niższej rozdzielczości (nie próbowałem żadnych przełączników, aby ją poprawić) jest
convert
jest częściąImageMagick
pakietu. Rasterizer to kolejny program:Aby dowiedzieć się, które programy obsługujące svg są zainstalowane w twoim systemie, po prostu spróbuj
Strona podręcznika dla tych programów powinna wyjaśniać, czy program jest przydatny do konwersji svg na pdf.
źródło
convert
nie jest odpowiedzią na pierwotne pytanie, ponieważconvert
rasteryzuje SVG do obrazu bitmapowego, a pierwotne pytanie szukało rozwiązania, które tego nie robi.https://superuser.com/a/79064/19956 wspomina o gsvg , części GhostPDL.
Próbowałem gsvg ghostpdl-9.06 na Ubuntu Lucid, ale nie powiodło się dla dwóch plików SVG wygenerowanych przez Inkscape. Jeden SVG zawierał tekst, drugi miał tylko grafikę wektorową. Nie powiodło się również w przypadku prostej grafiki bez rozszerzeń Inkscape lub ścieżki przycinania. Dlatego nie uważam gsvg za przydatny konwerter SVG-to-PDF.
źródło
W systemie Mac OS (biorąc pod uwagę, że masz już zainstalowany browar):
To samo powinno działać na Linuksie, ale zamiast tego z apt-get.
źródło
svg2pdf
irsvg-convert
, zachowuje to czcionki.Zastanawiam się, dlaczego nie zostało to wspomniane wcześniej, ale przetestowałem kilka różnych konwerterów svg-> pdf i stwierdziłem, że najlepszy jest bezgłowy Chrome . Daje mi to najbardziej precyzyjne wyniki. Przed przejściem na Chrome próbowałem walczyć z błędami Inkscape, ale wiele z nich jest zbyt poważnych i nie mogę na to wiele poradzić (błędy przezroczystości, złe czcionki itp.).
Potrzebuje kilku poprawek, aby użyć niestandardowego rozmiaru PDF (A4 jest domyślnie), ale byłem w stanie ustawić niestandardowy rozmiar po pewnym googlingu i zabawie z atrybutami CSS i SVG (sprawdź tę odpowiedź na stackoverflow )
źródło
chromium --no-sandbox --disable-setuid-sandbox --headless --disable-gpu --print-to-pdf=output.pdf input.svg
Otwórz plik svg za pomocą
Image Viewer
(zwany również Eye of Gnomeeog
) i wydrukuj go do pliku PDF (powiedzmyimage.pdf
) i przekonwertuj ten pdf na eps za pomocąpdf2ps
polecenia. Prosty!Opracowane kroki:
Zainstaluj,
Image Viewer
jeśli jeszcze nie zostało to zrobione (bardzo mało prawdopodobne, jeśli używaszgnome
)Otwórz plik svg za pomocą
eog
i wydrukuj go doimage.pdf
pliku.(Opcjonalnie) Usuń otaczające białe spacje z pliku pdf:
Spowoduje to
image-crop.pdf
z otoczeniem odstępy usunięte.Konwertuj przycięty pdf na eps (użyj
image.pdf
bezpośrednio, jeśli nie przycinałeś pdf)Otóż to!
źródło