Saya mencoba mengonversi PDF ke SVG. Namun, yang saya gunakan saat ini memetakan jalur untuk setiap huruf di setiap bagian teks, yang berarti jika saya mengubah teks di file sumbernya, itu terlihat jelek.
Saya bertanya-tanya apa konverter PDF ke SVG terbersih itu, semoga yang tidak memiliki jalur untuk area teksnya yang tidak membutuhkannya. Seperti yang kita ketahui, PDF dan SVG cukup mirip, jadi saya berasumsi ada beberapa konverter bagus di luar sana.
Jawaban:
Inkscape digunakan oleh banyak orang di Wikipedia untuk mengonversi PDF ke SVG.
http://inkscape.org/
Mereka bahkan memiliki panduan praktis tentang cara melakukannya!
http://en.wikipedia.org/wiki/Wikipedia:Graphic_Lab/Resources/PDF_conversion_to_SVG#Conversion_with_Inkscape
sumber
--export-text-to-path
.Anda dapat menggunakan Inkscape hanya pada baris perintah, tanpa membuka GUI. Coba ini:
Untuk daftar lengkap dari semua opsi baris perintah, jalankan
inkscape --help
.sumber
Saat ini saya menggunakan PDFBox yang memiliki dukungan yang baik untuk keluaran grafis. Ada dukungan yang baik untuk mengekstrak goresan vektor dan juga untuk mengatur font. Ada beberapa alat yang bagus untuk mencobanya (misalnya PDFReader akan ditampilkan sebagai Java Graphics2D).
Anda dapat mencegat alat grafik dengan alat SVG seperti Batik (Saya melakukan ini dan hasilnya bagus).Tidak ada cara sederhana untuk mengonversi semua PDF ke SVG - ini tergantung pada strategi dan alat yang digunakan untuk membuat PDF. Beberapa teks diubah menjadi vektor dan tidak dapat direkonstruksi dengan mudah - Anda harus menginstal font vektor dan mencarinya.
UPDATE: Sekarang saya telah mengembangkan ini menjadi paket PDF2SVG yang tidak lagi menggunakan Batik:
yang telah diuji pada berbagai PDF. Ini menghasilkan keluaran SVG yang terdiri dari
<svg:text>
per karakter<svg:path>
<svg:image>
Paket selanjutnya akan (mudah-mudahan) mengonversi karakter menjadi teks berjalan dan jalur ke objek grafis tingkat yang lebih tinggiUPDATE: Sekarang kita dapat membuat ulang running text dari karakter SVG. Kami juga telah mengubah diagram ke XML khusus domain (mis. Spektrum kimia). Lihat https://bitbucket.org/petermr/svg2xml-dev . Ini masih dalam Alpha, tetapi bergerak dengan kecepatan yang berguna. Siapapun dapat bergabung!
MEMPERBARUI. (@Tim Kelty) Kami terus mengerjakan PDF2SVG dan juga alat hilir yang melakukan (terbatas) Java OCR dan pembuatan primitif grafis tingkat tinggi (panah, kotak, dll.) Lihat https://bitbucket.org/petermr/ imageanalysis https://bitbucket.org/petermr/diagramanalyzer https://bitbucket.org/petermr/norma dan https://bitbucket.org/petermr/ami-core . Ini adalah proyek yang didanai untuk menangkap 100 juta fakta dari literatur ilmiah (contentmine.org) yang sebagian besar adalah PDF.
sumber
Topik ini sudah cukup lama, tetapi berikut adalah solusi praktis yang saya temukan:
http://www.cityinthesky.co.uk/opensource/pdf2svg/
Ini menawarkan alat, pdf2png, yang setelah diinstal melakukan persis pekerjaan di baris perintah. Saya telah mengujinya dengan hasil yang tak tercela sejauh ini, termasuk dengan bitmap.
EDIT: Kesalahan saya, alat ini juga mengubah huruf menjadi jalur, sehingga tidak menjawab pertanyaan awal. Bagaimanapun itu melakukan pekerjaan dengan baik, dan dapat berguna bagi siapa saja yang tidak berniat untuk mengubah kode di file svg, jadi saya akan meninggalkan posting.
sumber
brew install pdf2svg
.Inilah proses yang akhirnya saya gunakan. Alat utama yang saya gunakan adalah Inkscape yang dapat mengonversi teks dengan baik.
Halaman Terpisah: Adobe Acrobat Pro dengan JavaScript
Menggunakan Tindakan Adobe Acrobat Pro (sebelumnya Pemrosesan Batch) membuat tindakan kustom untuk memisahkan halaman PDF menjadi file terpisah. Alternatifnya, Anda mungkin bisa membagi PDF dengan GhostScript
Acrobat JavaScript Action untuk membagi halaman
Konversi PDF ke SVG: Inkscape dengan file batch CMD Windows
Menggunakan Windows Cmd membuat file batch untuk mengulang melalui semua file PDF dalam folder dan mengubahnya menjadi SVG
File batch untuk mengonversi PDF ke SVG di folder saat ini
Atribut pembersihan: Cmd Windows dan PowerShell
Saya menyadari ini bukan praktik terbaik untuk mengedit secara manual secara manual brute force tag atau atribut SVG atau XML karena variasi potensial dan harus menggunakan pengurai XML sebagai gantinya. Namun saya memiliki masalah sederhana di mana lebar guratan pada satu gambar sangat kecil, dan di gambar lain keluarga font salah diidentifikasi, jadi saya pada dasarnya memodifikasi skrip batch Windows Cmd sebelumnya untuk melakukan pencarian dan penggantian sederhana. Satu-satunya perubahan adalah definisi string pencarian dan perubahan untuk memanggil perintah PowerShell. Perintah PowerShell akan melakukan pencarian dan mengganti serta menyimpan file yang dimodifikasi dengan sufiks tambahan. Saya menemukan beberapa referensi lain yang bisa lebih baik digunakan untuk mengurai atau memodifikasi file SVG yang dihasilkan jika pembersihan kecil lainnya diperlukan.
Modifikasi untuk mencari dan mengganti data XML SVG secara manual
powershell -Command "(Get-Content '%~n1.%_work_x1%') | ForEach-Object {$_ -replace 'stroke-width:0.06', 'stroke-width:1'} | ForEach-Object {$_ -replace 'font-family:Times Roman','font-family:Times New Roman'} | Set-Content '%~n1%_work_s2%.%_work_x2%'"
Semoga ini bisa membantu seseorang
Referensi
Actions Adobe Acrobat Pro dan referensi JavaScript ke Halaman Terpisah
Referensi GhostScript ke Halaman Terpisah
Referensi Inkscape Command Line untuk Konversi PDF ke SVG
Referensi Windows Cmd Batch File Script
Penelitian penggantian atribut / tag XML
sumber
Jika DVI ke SVG adalah pilihan, Anda juga dapat menggunakan dvisvgm untuk mengonversi file DVI ke file SVG. Ini bekerja dengan sempurna misalnya untuk rumus LaTeX (dengan opsi
--no-fonts
):Ada juga pdf2svg yang menggunakan poppler dan Kairo untuk mengubah pdf menjadi SVG. Ketika saya mencoba ini, SVG ditampilkan dengan sempurna
inkscape
.sumber
Skrip Bash untuk mengonversi setiap halaman PDF menjadi file SVG-nya sendiri.
Untuk menghasilkan dalam png, gunakan
--export-png
, dll ...sumber
Saya menemukan itu
xfig
melakukan pekerjaan yang sangat baik:Itu jauh lebih baik daripada inkscape. Sebenarnya mungkin pdtoedit yang melakukannya.
sumber
Berikut adalah NodeJS REST api untuk dua skrip render PDF. https://github.com/pumppi/pdf2images
Skripnya adalah: pdf2svg dan Imagemagicks dikonversi
sumber