Wie konvertiere ich SVG (mit ein paar Wörtern lateinischen Textes und einigen einfachen Vektorgrafiken) in ein PDF unter Linux?
Ich habe Inkscape 0.47 unter Ubuntu Lucid ausprobiert, aber es verschiebt einige Subgrafiken nach dem Zufallsprinzip und verkürzt einige Zeilen in der PDF-Ausgabe. Die Ausgabe ist also nutzlos, da die Grafik völlig anders aussieht.
Ich habe versucht, die SVG-Datei in Google Chrome 16 zu öffnen und als PDF-Datei zu drucken, aber sie verzerrt alle Farben und entfernt auch einige Elemente. (Die SVG-Datei wird auf dem Bildschirm einwandfrei angezeigt, ist jedoch in der Druckvorschau bereits fehlerhaft und die generierte PDF-Datei ist ebenfalls fehlerhaft.)
Ich möchte die SVG nicht rastern oder rendern. Eine Lösung, mit der die SVG-Datei in ein Bitmap-Bild konvertiert und anschließend eine PDF-Datei mit dem eingebetteten Bild erstellt wird, ist keine Antwort auf meine Frage. (FYI Inscape 0.47 rendert den Text beim Rendern in PNG auf sehr hässliche Weise ohne Antialiasing.)
Welche anderen Optionen habe ich?
quelle
Antworten:
rsvg-convert hat den Trick für die SVG gemacht, die ich konvertieren wollte:
rsvg-convert -f pdf
Die SVG-Datei wird nicht gerastert und es werden Schriftarten eingebettet und untergeordnet (zumindest wurden die verwendeten Zeichen der Arial-Schriftart eingebettet). Manchmal schlägt das Einbetten von Schriftarten fehl (z. B. für die LMRoman17-Schriftart) und die gesamte Schriftartdatei wird in die generierte PDF-Datei kopiert.Abhängigkeiten von Ubuntu Lucid:
Standardmäßig benötigt libcairo libX11, so dass die Installation von rsvg-convert auf einem kopflosen System möglicherweise schwierig ist.
Hinweis: In der Manpage von wird angegeben
rsvg-convert
, dass das Tool immer rastert, dies ist jedoch nicht der Fall. Das Handbuch ist einfach überholt. Manchmal kann Ihr SVG-Tool das SVG-Bild teilweise rastern, was Sie auch irreführen kann.quelle
rsvg-convert
Namen aufgerufenrsvg-view
.Dies funktioniert auf Ubuntu Lucid:
Der obige Inkscape-Aufruf über die Befehlszeile funktioniert auch im Headless-Modus ohne GUI (
DISPLAY=
). Durch die Installation von Inscape werden jedoch viele Abhängigkeiten installiert, einschließlich X11.Bitte beachten Sie, dass der Exit-Status von Inskscape immer 0 ist, auch wenn ein Fehler auftritt - achten Sie also auf dessen stderr.
Es eignet sich auch
inkscape --shell
zum Konvertieren vieler Dokumente in einem Stapel. Dies vermeidet die langsame Inkscape-Startzeit für jede Datei:Inkscape ist auch nützlich, um eine SVG zu vereinfachen:
quelle
brew install inkscape
diesen Tagen installieren . Das Ergebnis/usr/local/bin/inkscape
hat für mich funktioniert, ohne X11.app ausführen zu müssen.dmg
auf seiner eigenen Website bereitgestellten Version installiert und dann von der Befehlszeile aus aufgerufen werden, nachdem zwei symbolische Links erstellt wurden:ln -s ~/Applications/Inkscape.app/Contents/Resources/bin/inkscape ~/bin/inkscape
und ähnlich fürinkscape-bin
(vorausgesetzt,~/bin
in Ihrer$PATH
).-z
(oder--without-gui
) in Inkscape verwenden, um es nur im Stapelmodus auszuführen (es wird überhaupt kein Fenster geöffnet).Ich habe CairoSVG erfolgreich unter OSX und Ubuntu verwendet.
CairoSVG-Dokumentation
quelle
Ich erhalte gute Ergebnisse beim Drucken von Inkscape (auch 0,47) in PDF und beim Speichern als PDF (jedoch geringfügig anders). Dies hängt jedoch möglicherweise von der jeweiligen Grafik ab.
Eine Alternative mit geringerer Auflösung (ich habe keine Schalter ausprobiert, um sie zu verbessern) ist
convert
ist Teil desImageMagick
Pakets. Rasterizer ist ein anderes Programm:Um herauszufinden, welche Programme mit svgs auf Ihrem System installiert sind, versuchen Sie es einfach
Die Manpage für diese Programme sollte erklären, ob das Programm für die Konvertierung von svg nach pdf nützlich ist.
quelle
convert
ist keine Antwort auf die ursprüngliche Frage, daconvert
die SVG in ein Bitmap-Bild gerastert wird und die ursprüngliche Frage nach einer Lösung gesucht hat, die dies nicht tut.https://superuser.com/a/79064/19956 erwähnt gsvg , einen Teil von GhostPDL.
Ich habe gsvg ghostpdl-9.06 unter Ubuntu Lucid ausprobiert, aber es ist bei zwei von Inkscape generierten SVGs fehlgeschlagen. Eine SVG enthielt Text, die andere nur Vektorgrafiken. Bei einfachen Grafiken ohne Inkscape-Erweiterungen oder Clip-Path ist dies ebenfalls fehlgeschlagen. Daher halte ich gsvg nicht für einen verwendbaren SVG-zu-PDF-Konverter.
quelle
Unter Mac OS (vorausgesetzt, Sie haben bereits Brew installiert) mache ich Folgendes:
Dasselbe sollte unter Linux funktionieren, aber stattdessen mit apt-get.
quelle
svg2pdf
undrsvg-convert
bleiben die Schriftarten erhalten.Ich frage mich, warum es noch nicht erwähnt wurde, aber ich habe eine Reihe verschiedener SVG-> PDF-Konverter getestet und festgestellt, dass Headless Chrome das Beste ist . Es liefert für mich die genauesten Ergebnisse. Bevor ich zu Chrome gewechselt bin, habe ich versucht, mit Inkscape-Fehlern zu kämpfen, aber viele davon sind zu schwerwiegend und ich kann nicht viel dagegen tun (Transparenzfehler, falsche Schriftarten usw.).
Es sind einige Änderungen erforderlich, um die benutzerdefinierte PDF-Größe zu verwenden (A4 ist die Standardeinstellung), aber ich konnte die benutzerdefinierte Größe einstellen, nachdem ich einige Male gegoogelt und mit CSS- und SVG-Attributen gespielt habe ( siehe diese Antwort auf stackoverflow ).
quelle
chromium --no-sandbox --disable-setuid-sandbox --headless --disable-gpu --print-to-pdf=output.pdf input.svg
Öffnen Sie die SVG-Datei mit
Image Viewer
(auch Eye of Gnome genannteog
) und drucken Sie sie in eine PDF-Datei (etwaimage.pdf
) und konvertieren Sie diese PDF-Datei mit dempdf2ps
Befehl eps . Einfach!Ausgearbeitete Schritte:
Installieren,
Image Viewer
falls noch nicht geschehen (höchst unwahrscheinlich, wenn Sie verwendengnome
)Öffnen Sie die SVG-Datei mit
eog
und drucken Sie sie in eineimage.pdf
Datei.(Optional) Entfernen Sie umgebende Leerzeichen aus der PDF-Datei:
Dies wird erzeugt
image-crop.pdf
, wenn umgebende Leerzeichen entfernt werden.Konvertieren Sie zugeschnittenes PDF in EPS (verwenden
image.pdf
Sie diese Option direkt, wenn Sie das PDF nicht zugeschnitten haben)Das ist es!
quelle