Latar Belakang
Saya aktif di beberapa komunitas IT di Surabaya. Dan salah satu kendala yang saya hadapi ketika menjadi penanggung jawab untuk membuat sertifikat acara bagi peserta, panitia dan speaker. Di event terakhir, yaitu Devfest 2023, saya harus membuat sertifikat peserta sebanyak lebih dari 1000 sertifikat. Dannn itu ga mungkin saya lakukan secara manual.
Sebenarnya ada beberapa opsi untuk membuat sertifikat otomatis tanpa harus coding. Yaitu membuat menggunakan Canva. Tapi masalahnya adalah ketika membuat sertifikat di canva saya tidak bisa menyimpan file satu per satu dan menamainya sesuai nama peserta. Bayangin ngerename semua nama peserta secara manual harus habis berapa hari ðŸ˜
Script Python
Apa saja yang perlu disiapkan:
- Python 3.8 yang sudah terinstall
- Install library PIL dan pandas
- Pengetahuan dasar mengenai python
- File CSV yang berisi data peserta
- Siapkan design sertifikat
1
2
3
Name,Email
Miftahul Huda,iniakunhuda@gmail.com
Budi Doremi Putra,randompeserta@gmail.com
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
from PIL import Image, ImageFont, ImageDraw
import pandas as pd
def main():
print("Initializing Script!")
names = pd.read_csv('peserta.csv')
for i,row in names.iterrows():
name = str(row['Name'])
name = name.title()
word_length = len(name.split(" "))
empty_img = Image.open("sertif.png").convert("RGB")
if(word_length > 4):
font_size = 70
bottom = -50
else:
font_size = 80
bottom = -50
W,H = empty_img.size
font = ImageFont.truetype(r"OpenSans.ttf", font_size)
(_, _, w, h) = font.getbbox(name)
width = ((W-w)/2)
height = ((H-h)/2) + bottom
image_editable = ImageDraw.Draw(empty_img)
image_editable.multiline_text((width,height), name, (35, 57, 75), font=font)
empty_img.save("hasil/{}.pdf".format(name.replace(" ", "_")))
print('Processed {} Rows'.format(i))
print("Process Complete!")
if __name__ == "__main__":
main()
File Design Sertifikat
Download Font OpenSans.ttf
Langkah-langkah
- Siapkan file
sertif.png
, usahakan file ini berbentuk png dan dengan proporsi ukuran yang sama untuk tempat namanya. - Download font
OpenSans.ttf
dan simpan di 1 folder yang sama - Jalankan file
generate-sertif.py
dengan command di cmdpython generate-sertif.py
- Tunggu proses selesai
- Cek folder
hasil