Bagaimana saya mengonversi dan SVG (berisi beberapa kata teks latin dan beberapa grafik vektor sederhana) ke PDF di Linux?
Saya mencoba Inkscape 0.47 pada Ubuntu Lucid, tetapi memindahkan beberapa sub-grafis secara acak, dan membuat beberapa baris lebih pendek dalam output PDF. Jadi outputnya tidak berguna, karena gambarnya terlihat sangat berbeda.
Saya mencoba membuka SVG di Google Chrome 16 dan mencetaknya ke PDF, tetapi itu mendistorsi semua warna, dan itu juga menghilangkan beberapa elemen. (SVG tampak bagus di layar, tetapi sudah buruk dalam pratinjau cetak dan PDF yang dihasilkan juga buruk.)
Saya tidak ingin melakukan rasterisasi atau membuat SVG. Solusi yang mengubah SVG menjadi gambar bitmap dan kemudian membuat PDF dengan gambar yang tertanam bukan jawaban untuk pertanyaan saya. (FYI Inscape 0.47 menerjemahkan teks adalah cara yang sangat jelek, tanpa antialiasing, saat merender ke PNG.)
Opsi apa lagi yang saya miliki?
sumber
Jawaban:
rsvg-convert melakukan trik untuk SVG yang ingin saya konversi:
rsvg-convert -f pdf
tidak meraster SVG, dan menanamkan dan menset huruf font (setidaknya itu telah menyematkan karakter yang digunakan dari font Arial). Terkadang penyisipan font gagal (mis. Untuk font LMRoman17), dan seluruh file font disalin ke PDF yang dihasilkan.Ketergantungan pada Lucid Ubuntu:
Secara default, libcairo membutuhkan libX11, jadi rsvg-convert mungkin sulit dipasang ke sistem tanpa kepala.
Catatan: Halaman manual
rsvg-convert
menyatakan bahwa alat selalu diraster, tetapi ini tidak benar. Manual ini sudah usang. Terkadang alat pembuat svg Anda dapat meraster sebagian gambar svg, yang juga dapat menyesatkan Anda.sumber
rsvg-convert
dipanggilrsvg-view
.Ini berfungsi di Ubuntu Lucid:
Doa Inkscape baris perintah di atas berfungsi bahkan dalam mode tanpa kepala, tanpa GUI (
DISPLAY=
). Namun, menginstal Inscape menginstal banyak dependensi, termasuk X11.Harap dicatat bahwa status keluar dari Inskscape selalu 0, bahkan jika terjadi kesalahan - jadi waspadalah terhadap stderrnya.
Ada juga
inkscape --shell
, cocok untuk mengonversi banyak dokumen dalam satu batch. Ini menghindari waktu startup Inkscape yang lambat untuk setiap file:Inkscape juga berguna untuk menyederhanakan SVG:
sumber
brew install inkscape
hari ini. Hasilnya/usr/local/bin/inkscape
berhasil bagi saya tanpa harus menjalankan X11.app.dmg
didistribusikan di situs web sendiri, dan kemudian dipanggil dari baris perintah setelah membuat dua tautan simbolis:ln -s ~/Applications/Inkscape.app/Contents/Resources/bin/inkscape ~/bin/inkscape
dan juga untukinkscape-bin
(dengan asumsi~/bin
ada di Anda$PATH
).-z
(atau--without-gui
) dengan Inkscape untuk menjalankannya dalam mode batch saja (tidak ada jendela yang terbuka sama sekali).Saya telah menggunakan CairoSVG dengan sukses di OSX dan Ubuntu.
Dokumentasi CairoSVG
sumber
Saya mendapatkan hasil yang baik dari mencetak dari Inkscape (0,47 juga) ke PDF, dan untuk menyimpan sebagai PDF (tetapi sedikit berbeda), tetapi ini mungkin tergantung pada grafik yang ada.
Alternatif dengan resolusi lebih rendah (saya tidak mencoba switch untuk memperbaikinya) adalah
convert
adalah bagian dariImageMagick
paket. Rasterizer adalah program lain:Untuk mengetahuinya, program mana yang menangani svgs yang diinstal pada sistem Anda, coba saja
Halaman manual untuk program-program ini harus menjelaskan, apakah program tersebut berguna untuk mengkonversi svg ke pdf.
sumber
convert
bukan jawaban untuk pertanyaan awal, karenaconvert
merasterisasi SVG ke gambar bitmap, dan pertanyaan awal mencari solusi yang tidak melakukannya.https://superuser.com/a/79064/19956 menyebutkan gsvg , bagian dari GhostPDL.
Saya sudah mencoba gsvg ghostpdl-9.06 di Ubuntu Lucid, tetapi gagal untuk dua SVG yang dihasilkan oleh Inkscape. Satu SVG memiliki teks di dalamnya, yang lain hanya memiliki grafik vektor. Itu juga gagal untuk grafik sederhana tanpa ekstensi Inkscape atau clip-path. Jadi saya tidak menganggap gsvg sebagai konverter SVG-ke-PDF yang dapat digunakan.
sumber
Di Mac OS (mengingat Anda sudah menginstal bir) saya lakukan:
Sama harus bekerja di Linux, tetapi dengan apt-get saja.
sumber
svg2pdf
danrsvg-convert
, ini mempertahankan font.Saya bertanya-tanya mengapa belum disebutkan sebelumnya, tetapi saya menguji sekelompok konverter pdf svg-> yang berbeda dan menemukan bahwa yang terbaik adalah Chrome Tanpa Kepala . Ini menghasilkan hasil yang paling tepat untuk saya. Sebelum beralih ke Chrome, saya mencoba untuk berkelahi dengan bug Inkscape, tetapi banyak dari mereka terlalu serius dan saya tidak bisa berbuat banyak tentang hal itu (bug transparansi, font yang salah, dll).
Perlu beberapa penyesuaian untuk menggunakan ukuran PDF khusus (A4 adalah default), tetapi saya dapat mengatur ukuran khusus setelah beberapa googling dan bermain dengan atribut CSS dan SVG (lihat jawaban ini di stackoverflow )
sumber
chromium --no-sandbox --disable-setuid-sandbox --headless --disable-gpu --print-to-pdf=output.pdf input.svg
Buka file svg dengan
Image Viewer
(Juga disebut Eye of Gnomeeog
) dan cetak ke file PDF (katakanlahimage.pdf
) dan konversikan pdf itu menjadi eps menggunakanpdf2ps
perintah. Sederhana!Langkah-langkah yang diuraikan:
Instal
Image Viewer
jika belum dilakukan (langkah yang sangat tidak mungkin jika Anda gunakangnome
)Buka file svg dengan
eog
dan cetak keimage.pdf
file.(Opsional) Hapus spasi putih sekitar dari file pdf:
Ini akan menghasilkan
image-crop.pdf
dengan spasi putih di sekitarnya dihapus.Konversi pdf yang dipotong menjadi eps (gunakan
image.pdf
langsung jika Anda tidak memotong pdf)Itu dia!
sumber