SVG'yi Linux'ta PDF'ye nasıl dönüştürebilirim


126

Linux'ta bir PDF'ye nasıl birkaç Latince metin kelimesi ve bazı basit vektör grafikleri içeren) ve SVG'yi dönüştürebilirim?

Ubuntu Lucid'de Inkscape 0.47'yi denedim, ancak bazı alt grafikleri rastgele hareket ettirdi ve PDF çıktılarında bazı satırları kısalttı. Bu yüzden çıktısı işe yaramaz çünkü grafikler tamamen farklı görünüyor.

SVG'yi Google Chrome 16'da açmayı ve PDF'ye yazdırmayı denedim, ancak tüm renkleri bozuyor ve bazı öğeleri de kaldırıyor. (SVG ekranda iyi görünüyor, ancak baskı önizlemesinde zaten kötü ve oluşturulan PDF de bozuk.)

SVG'yi rasterleştirmek veya oluşturmak istemiyorum. SVG'yi bir bitmap görüntüsüne dönüştüren ve ardından gömülü görüntüyle bir PDF oluşturan bir çözüm sorumun cevabı değil. (FYI Inscape 0.47, PNG'ye yazarken metnin antialiasing olmadan çok çirkin bir yol olmasını sağlar.)

Başka hangi seçeneklere sahibim?


1
Dönüştürmek için birkaç resiminiz varsa, çevrimiçi çeviricilerin bazılarını kullanmayı daha kolay bulabilirsiniz. CloudConvert'i denedim ve SVG'nin yarısı büyüklüğünde çok iyi bir iş çıkardı.
Frank Breitling

Yanıtlar:


134

rsvg-convert dönüştürmek istediğim SVG için numarayı yaptı:

$ sudo apt-get install librsvg2-bin
$ rsvg-convert -f pdf -o t.pdf t.svg

rsvg-convert -f pdfSVG'yi rasterleştirmez ve fontları yerleştirir ve alt kümelere yerleştirir (en azından Arial fontunun kullanılmış karakterlerini gömmüştür). Bazen font gömme işlemi başarısız olur (örneğin, LMRoman17 fontu için) ve tüm font dosyası oluşturulan PDF'ye kopyalanır.

Ubuntu Lucid'e Bağımlılıklar:

  • libcairo.so.2
  • libgobject-2.0.so.0
  • libgthread-2.0.so.0
  • libglib-2.0.so.0
  • librsvg-2.so.2
  • libpthread.so.0
  • libc.so.6

Varsayılan olarak, libcairo'nun libX11'e ihtiyacı vardır, bu nedenle rsvg-convert'in başsız bir sisteme kurulması zor olabilir.

Not: Man sayfası rsvg-convert, aracın her zaman rasterleştirdiğini belirtir, ancak bu doğru değildir. El kitabı basitçe eskidir. Bazen svg oluşturma aracınız, sizi yanlış yönlendiren svg görüntüsünü kısmen rasterleştirebilir.


4
Burada gördüğüm bir çok bağımlılık var: kahire, libgphoto, gtk3, libsane ... Tabii ki, eğer iş yaparsa ...
ShiDoiSi

4
@ AyberkÖzgür Bu inkscape'in hatası - Inkscape projesini kaydettiğinizde, varsayılan olarak onu bir SVG olarak kaydeder, ancak kaydettiği SVG, sık sık diğer programları sıkıştırabilen standart olmayan inkscape'e özgü veriler içerir. Sadece bir SVG olarak kaydetmek yerine, bir SVG olarak dışa aktarmanız gerekir .
AJMansfield

2
Arama biraz zaman kazandırabilir: Suse-Systems'da paket içeren paket rsvg-convertdenir rsvg-view.
Trendfischer

1
Benim için çalıştı ve pdf kalitesi svg ile aynı. Bundan önce pdf'e dönüştürmek için imagemagick kullanıyor ve kalite özellikle svg için zayıftı.
Pratik Soni,

1
Ne yazık ki, bu fontları macOS'ta gömmez.
oarfish

79

Bu Ubuntu Lucid'de çalışır:

$ sudo apt-get install inkscape
$ inkscape t.svg --export-pdf=t.pdf

Komut satırı Inkscape çağrısı, GUI ( DISPLAY=) olmadan, başsız modda bile çalışır . Ancak, Inscape'in kurulması, X11 dahil birçok bağımlılık yükler.

Lütfen, bir hata oluşsa bile Inskscape'in çıkış durumunun her zaman 0 olduğunu unutmayın;

Ayrıca, inkscape --shellbir toplu belgede birçok belgeyi dönüştürmek için de uygundur. Bu, her dosya için yavaş Inkscape başlangıç ​​zamanını önler:

$ (echo t.svg --export-pdf=t.pdf;
   echo u.svg --export-pdf=u.pdf) |
  DISPLAY= inkscape --shell

Inkscape ayrıca bir SVG'yi basitleştirmek için kullanışlıdır:

$ DISPLAY= inkscape t.svg --export-plain-svg=t.plain.svg

2
Ne yazık ki bu OS X üzerinde çalışıyor gibi görünmüyor. Yine de güzel cevaplar.
Konrad Rudolph

3
OP, Inkscape'in render hatalarına sahip olduğunu belirtti; bu benim deneyimlerime uyuyor.
Dylan Thurston

3
Homebrew kullanarak OSX'te, brew install inkscapebu günleri kullanarak Inkscape'i yükleyebilirsiniz . Sonuçta /usr/local/bin/inkscapeX11.app çalıştırmak zorunda kalmadan benim için çalıştı.
Alex Schröder

2
Inkscape OS X'e dmgkendi web sitesinden dağıtılmış bir şekilde yüklenebilir ve daha sonra iki sembolik bağlantı oluşturduktan sonra komut satırından çağrılabilir: ln -s ~/Applications/Inkscape.app/Contents/Resources/bin/inkscape ~/bin/inkscapeve benzer şekilde inkscape-bin(sizinki içinde ~/binolduğu varsayılarak $PATH).
Ioannis Filippidis

2
Sen kullanabilirsiniz -z(ya da --without-guiyalnızca (pencere hiç açılacaktır) toplu modunda çalıştırmak için Inkscape ile) bayrağı.
Artefact2

8

CairoSVG'yi OSX ve Ubuntu'da başarıyla kullandım.

pip install cairosvg
cairosvg in.svg -o out.pdf

CairoSVG Belgeleri


Kullanabileceğiniz piton bağları bile var. Ne yazık ki bu yöntemin oldukça sınırlı olduğunu buldum, yani bir çok svg özelliği desteklenmiyor.
bodo

7

Inkscape'den (0.47 de) PDF'ye yazdırmaktan ve PDF olarak kaydetmek için (ama biraz farklı) iyi sonuçlar alıyorum, ancak bu eldeki grafiğe bağlı olabilir.

Daha düşük çözünürlükte bir alternatif (iyileştirmek için herhangi bir anahtar denemedim)

 convert file.svgz file.pdf 

convertImageMagickpaketin bir parçasıdır . Rasterizer başka bir programdır:

 rasterizer -m application/pdf file.svgz -d file.pdf 

Sisteminize svgs'yi hangi programların yüklediğini bulmak için, sadece deneyin

 apropos -s 1 svg

Bu programların manpageinde, programın svg'yi pdf'ye dönüştürmede yararlı olup olmadığı açıklanmalıdır.


18
Önerileriniz için teşekkür ederim. FYI convertorijinal soruya bir cevap değildir, çünkü convertSVG'yi bir bitmap görüntüsüne rasterleştirir ve orijinal soru bunu yapmayan bir çözüm arıyordu.
puanlar

5

https://superuser.com/a/79064/19956 , GhostPDL’nin bir parçası olan gsvg’den bahseder .

Gsvg ghostpdl-9.06'yı Ubuntu Lucid'de denedim, ancak Inkscape tarafından oluşturulan iki SVG'de başarısız oldu. Bir SVG'de metin vardı, diğerinde sadece vektör grafikleri vardı. Ayrıca Inkscape uzantıları veya klip-yolu olmadan basit grafikler için başarısız oldu. Bu yüzden gsvg'yi kullanılabilir bir SVG-PDF dönüştürücüsü olarak görmüyorum.


3

Mac OS'de (önceden demlendiğinizi takmış olduğunuzu düşünüyoruz) Yaparım:

$ brew install cairo libffi python3
$ pip3 install cairosvg

$ cairosvg -o blah.pdf ./blah.svg 

Aynı Linux üzerinde çalışması gerekir, ancak bunun yerine apt-get ile.


1
Bu pdf çıktısı ile de çalışır. Bunun aksine svg2pdfve rsvg-convertbu, fontları korur.
oarfish

Teşekkürler, yanlış uzantı koydum. Örneği güncelledim.
Adriel Jr

Bir cazibe gibi çalıştı!
mayrop

1

Daha önce neden bahsedilmediğini merak ediyorum, ancak birkaç farklı svg-> pdf dönüştürücüyü test ettim ve en iyisinin Headless Chrome olduğunu gördüm . Benim için en kesin sonuçları veriyor. Chrome'a ​​geçmeden önce, Inkscape hatalarıyla savaşmaya çalışıyordum, ancak çoğu çok ciddi ve bu konuda çok fazla şey yapamam (şeffaflık hataları, yanlış yazı tipleri, vb.).

 chrome --headless --disable-gpu --print-to-pdf="output.pdf" "input.svg"

Özel PDF boyutunu kullanmak için bazı ince ayarlamalar gerekiyor (A4 varsayılandır), ancak bazı googling ve CSS ve SVG özellikleriyle oynadıktan sonra özel boyut ayarlayabildim ( stackoverflow'ta bu cevaba bakın )


Süper Kullanıcıya Hoşgeldiniz! Dış bağlantılar kopabilir veya kullanılamayabilir, bu durumda cevabınız sadece bir teaser olacaktır. Bağlantılar hala çalışsa da, insanların çözümü bulmasına yardımcı olmak için içerik dizine eklenemez. Lütfen cevabınıza gerekli bilgileri ekleyin ve atıf ve daha fazla okuma için bağlantıyı kullanın. Teşekkürler.
fixer1234

chromium --no-sandbox --disable-setuid-sandbox --headless --disable-gpu --print-to-pdf=output.pdf input.svg
WSL'den

0

Svg dosyasını Image Viewer(ayrıca Gnome'nin Gözü de denir eog) ile açın ve bir PDF dosyasına yazdırın (sayın ) ve image.pdfbu pdf pdf2pskomutunu eps kullanarak eps'ye dönüştürün . Basit!

Ayrıntılı adımlar:

  1. Image ViewerHenüz yapılmadıysa yükle (kullanıyorsanız çok az olası bir adım gnome)

    sudo apt-get install eog
    
  2. SVG dosyasını ile açın eogve dosyaya yazdırın image.pdf.

  3. (İsteğe bağlı) Çevreleyen boşlukları pdf dosyasından kaldırın:

    pdfcrop image.pdf
    

    Bu, image-crop.pdfçevre boşlukların kaldırılmasıyla ortaya çıkacaktır .

  4. Kırpılmış pdf'yi eps'ye dönüştür ( image.pdfdoğrudan pdf'i kırpmadıysanız kullanın )

    pdf2ps image-crop.pdf image.eps
    

Bu kadar!

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.