Membuat thumbnails dari berkas PDF

Pustaka poppler ini memang sangat menarik =D kombinasi dengan ImageMagick bikin urusan PDF dan gambar menjadi semakin mantabs..

Sebagai contoh, inilah baris perintah tuk membuat thumbnails dari sebuah berkas PDF!

Pertama, dapetin total halaman yang ada. Berkas PDF yang saya pake ini adalah issue26_en.pdf yang merupakan edisi 26 dari Full Circle Magazine

TOTAL=`pdfinfo issue26_en.pdf | grep ^Pages | awk '{ print $2 }'`

Seharusnya sih ada cara lebih elegan tuk ngedapetin jumlah halaman.. tapi ya kita pake itu dulu skr.

Setelah itu, mari konversi ke PNG! Berhubung ingin membuat thumbnails, maka ukuran gambar akan dikecilkan. Katakanlah menjadi gambar dengan lebar 400px.

for i in `seq 1 $TOTAL`; do pdftoppm -f $i -l $i issue26_en.pdf | convert -thumbnail 400 - halaman-$i.png; done

Hore selesai! Di laptop saya ini, ternyata konversi 32 halaman secara serial memakan waktu 1 menit dan 7.125 detik.

Saya bungkus dua baris di atas ke dalam sebuah skrip. Silakan cek di http://gist.github.com/141313. Cara makenya seperti berikut.

$ ./pdf2thumbnails issue26_en.pdf halaman- 400

Parameter pertama adalah berkas PDF yang ingin dibuat thumbnails-nya. Parameter kedua adalah awalan tuk setiap nama berkas thumbnail. Parameter ketiga adalah ukuran thumbnails.

Mau lihat hasilnya? Silakan cek di http://arsip.fajran.web.id/n/fcm26/ =D

Konversi PDF ke PNG

Tuk melakukan konversi dari PDF ke sebuah format gambar seperti PNG, bisa dibantu dengan poppler. Salah satu aplikasi kecil yg menggunakan pustaka poppler ini adalah pdftoppm yang dapat melakukan konversi berksa PDF ke gambar dg format PPM. Dari sini, gambar dapat dikonversi lagi ke PNG dengan convert milik ImageMagick.

Berikut caranya..

  1. Instal paket poppler-utils dan imagemagick

  2. Lakukan konversi

    $ pdftoppm -f awal -l akhir berkas.pdf | convert - gambar.png
    

    Nilai dari awal dan akhir adalah rentang nomor halaman.

Bisa juga sih hanya make convert namun kok kayanya hasil akhirnya kurang bagus.

$ convert berkas.pdf[halaman] gambar.png

Nilai halaman adalah nomor halaman dg indeks awal 0. Jadi halaman pertama adalah 0, halaman kedua adalah 1, dan seterusnya.