Bagaimana cara mengekstrak vektor dari file PDF?

51

Saya memiliki file PDF dengan gambar vektor di dalamnya. (Saya mengunduhnya dari internet, jadi saya tidak punya aslinya.)

Saya ingin mengekstraksi vektor sehingga saya dapat melapisinya pada beberapa gambar lain; menggunakannya di media cetak, atau di situs web.

Bagaimana cara mengekstrak vektor khusus dari file PDF?

Apakah ada, mungkin, perangkat lunak apa pun yang dapat mengekstrak vektor dari file PDF? (Lebih disukai gratis.)

Devdatta Tengshe
sumber
@ Slhck: Maksudku grafis vektor . Saya memang menggunakan Inkscape, dan ini berfungsi seperti yang diharapkan. Bisakah Anda memberikan komentar Anda sebagai Jawaban, sehingga saya dapat menandainya sebagai diterima?
Devdatta Tengshe

Jawaban:

49

Anda dapat menggunakan Inkscape , yang merupakan aplikasi grafik vektor vektor gratis dan bersumber terbuka. Ini akan memungkinkan Anda untuk mengimpor file PDF dan memilih vektor yang disematkan. Anda kemudian dapat mengeditnya dan memproses sesuka Anda.

Dokumentasi terperinci tersedia di situs web Inkscape.

Perhatikan bahwa di Linux rasanya membutuhkan X11. Ada juga versi Windows asli.

Atau, Anda mungkin ingin mencoba Adobe Illustrator (perangkat lunak berbayar).

slhck
sumber
2
Di Linux itu seperti membutuhkan X11 - ada juga versi Windows asli (yang saya gunakan dengan baik untuk mengekstraksi gambar vektor dari PDF).
Mark Leighton Fisher
23

Walaupun Inkscape adalah cara yang luar biasa untuk melakukannya, bagi mereka yang tidak memiliki X11, Anda juga dapat mengekstraksi setiap halaman dari PDF ke dalam format SVG menggunakan poppler-utils di baris perintah. Misalnya, untuk mengekstrak hanya halaman 30:

$ pdftocairo -f 30 -l 30 -svg  somehugemanual.pdf  myextractedpage.svg

Anda kemudian dapat menggunakan editor vektor favorit Anda (milik saya adalah Inkscape) untuk mengisolasi gambar dari teks.

Sebagai alternatif, jika Anda adalah pengguna baris perintah yang keras, Anda dapat mengekstrak ke EPS ( sednaskah yang dienkapsulasi) dan menggunakannya untuk menyembunyikan semua teks (yang kebetulan berada di antara garis BT dan ET untuk pdftocairo). Begini caranya:

$ pdftocairo -f 30 -l 30 -eps  manual.pdf  - | sed '/^BT$/,/^ET$/ d' > myimage.eps

Dan, jika Anda benar-benar gila untuk menghindari menggunakan X11, Anda bahkan dapat mengecilkan kotak pembatas gambar dari baris perintah menggunakan eps2epsperintah Ghostscript :

$ eps2eps myimage.eps myimage-bb.eps

Saya sudah menguji ini dan itu bekerja dengan baik. Namun, secara pribadi, saya merasa lebih mudah menggunakan Inkscape saja.

hackerb9
sumber
Beri +1 pada baris perintah Anda menghapus semua teks .. tetapi apakah Anda tahu cara juga menghapus semua gambar? Saya sedang mencari solusi di mana hanya grafik vektor yang tersisa :)
clarkk
Apakah ini Bekerja untukmu? cat foo.eps | sed '/^8 dict dup begin$/,/^Q$/ c Q' > nobitmaps.eps
hackerb9
1
tetapi apakah mungkin untuk memeriksa apakah file eps bahkan memiliki grafik vektor? :)
clarkk
1
Saya kira Anda bisa menggunakan eps2eps Ghostscript untuk menyaringnya ke kotak terikat terkecil dan melihat apakah itu benar-benar kosong. Tapi ini mulai menjadi pertanyaan baru. Jangan ragu untuk bertanya dan saya yakin jika saya tidak menjawab, seseorang akan melakukannya.
hackerb9
1
@ hackerb9 terima kasih, sekarang eps dapat dibaca, tetapi gambarnya sangat rendah kepadatannya dan beberapa teks masih ada di sekitarnya. PDF ada di sini , dan gambarnya ada di halaman 7
rtrtrt