Menggati Nama pada Sertifikat Secara Massal Menggunakan Script Bash

Satu bulan yang lalu saya berkesempatan menjadi panitia konferensi Teknik Sipil se-Asia, CECAR 6, yang diadakan di Jakarta. Salah satu tugas panitia adalah membuat sertifikat untuk para peserta yang mengikuti konferensi. Template sertifikat (tanpa nama) sudah dibuat dan dicetak jauh-jauh hari sebelumnya. Sehingga tugas yang harus diselesaikan adalah mencetak nama pada sertifikat yang sudah ada tersebut.

Intinya, template nama (format Corel Draw .CDR) di-print di atas sertifikat tanpa nama tadi. Karena jumlah peserta sangat banyak (sekitar 600 orang), tugas memindahkan nama dari file spreadsheet ke Corel Draw lalu dicetak, akan membutuhkan banyak waktu. Jauh sebelum hari H, saya sudah mendapatkan ide bagaimana caranya agar bisa menghasilkan semua file sertifikat yang tinggal dicetak saja (format PDF). Jadi tugas memindahkan nama dari file spreadsheet ke dalam format gambar, lalu diubah ke dalam bentuk PDF, semuanya dilakukan secara otomatis. Sekitar 100 file bisa dihasilkan dalam waktu kurang dari 1 menit.

Karena file CDR adalah file binary, saya harus mengubah format gambar menjadi bentuk SVG. Format SVG adalah format gambar yang berbasis XML, sehingga isinya lebih fleksibel dan bisa diubah sesuai dengan kebutuhan. Mengubah file SVG dari CDR bisa menggunakan UniConverter. Namun saya lebih memilih membuat sendiri dari awal menggunakan Inkscape karena konten sertifikat nama nya cuma sedikit dan saya bisa mendapatkan hasil yang lebih akurat.

Akurasi data harus diperhatikan seperti ukuran kertas, letak tulisan nama, tulisan lain yang penting, font, titik pusat teks, warna, dan lain sebagainya agar diperoleh hasil yang menyerupai hasil Corel Draw. Faktor yang terpenting adalah titik pusat teks agar ketika nama peserta memiliki jumlah karakter yang banyak ataupun sedikit, nama tetap berada di tengah-tengah sertifikat (atau disesuaikan dengan titik acuan pada sertifikat). Untuk mencapai kondisi ini, kotak teks nama terlebih dulu harus disesuaikan memiliki lebar sepanjang kotak area sertifikat. Nama peserta saya isi dengan teks {nama}. Teks {nama} ini nantinya akan diganti dengan nama peserta. Kemudian file disimpan dengan format SVG (Scalable Vector Graphics). Namun, saya mengganti formatnya menjadi *.savg agar nanti tidak terhapus oleh script.

Kemudian saya membuat sebuah file yang berisi nama peserta, satu nama peserta per baris. Setelah itu, saya membuat sebuah file bash yang isinya seperti di bawah ini.

#/bin/sh
# @author: Duken Marga
while read p;do
	ws=`echo $p|sed "s/ /\\ /"`	#space
	ws=`echo $ws|sed "s/\./\\\./"`	# .
	ws=`echo $ws|sed "s/\//\\\//"`	# /
 
	wos=`echo $p|sed "s/ /_/"`	#space
	wos=`echo $wos|sed "s/\///"`	# /
	wos=`echo $wos|sed "s/,//"`	# comma
 
	sed "s/{nama}/$ws/" master.savg > $wos.svg # mengganti {nama} menjadi nama peserta
	inkscape -A "$wos.pdf" "$wos.svg"
done < daftar_nama
rm *.svg

File master.savg adalah gambar sertifikat yang berisi teks {nama}. File daftar_nama adalah file berisi daftar nama peserta. Simpan file di atas dengan nama script.sh atau nama lainnya. Ketiga file di atas harus diletakkan dalam 1 direktori yang sama. Jangan lupa untuk menginstall Inkscape untuk merubah file SVG menjadi PDF. Jalankan script di atas untuk menghasilkan file yang siap untuk diprint.

Tutorial ini hanya memberikan gambaran umum bagaimana membuat file sertifikat secara massal. Namun, saya yakin script di atas perlu diubah agar sesuai dengan kebutuhan.

Published
Categorized as Linux Tagged

By Duken Marga

Insinyur Teknik Sipil (Ir.), menyukai programming, internet, application development, sains, teknologi, dan matematika.

Leave a comment

Your email address will not be published. Required fields are marked *

 

This site uses Akismet to reduce spam. Learn how your comment data is processed.