A simple mass certificate generator script for the community
Source Code · Docs · Raw Script
Docs
All you need
- Certificate
- Design a simple template on Canva
- Font
- Names
- Finally, a list of names in a .txt format or a .csv format.
Pillow module
Using the pillow module to make changes.
- Calculating and declaring default values.
from PIL import Image, ImageFont, ImageDraw
'''Global Variables'''
FONT_FILE = ImageFont.truetype(r'font/GreatVibes-Regular.ttf', 180)
FONT_COLOR = "#FFFFFF"
template = Image.open(r'template.png')
WIDTH, HEIGHT = template.size
- Placing the name on the certificate and saving to a different directory.
def make_certificates(name):
'''Function to save certificates as a .png file
Finding the width and height of the text.
Placing it in the center, then making some adjustments.
Saving the certificates in a different directory.
'''
image_source = Image.open(r'template.png')
draw = ImageDraw.Draw(image_source)
name_width, name_height = draw.textsize(name, font=FONT_FILE)
draw.text(((WIDTH - name_width) / 2, (HEIGHT - name_height) / 2 - 30), name, fill=FONT_COLOR, font=FONT_FILE)
image_source.save("./out/" + name +".png")
print('Saving Certificate of:', name)
Names
- Using
readlines()
method with a.txt
format.
names = []
with open('names.txt') as f:
content = f.readlines()
for item in content:
names.append(item[:-1].title())
- Using pandas to read a
.csv
file.
import pandas
names = pandas.read_csv('names.csv', sep='#')
Script in action
Template | Result |
---|---|
Design Courtesy @GauravRaj
Future Scope?
- More customisations
- Directly e-mail as certificates are generated
- A web interface?