A Python script that generates PDF training certificates for Helinks STS workshop participants. After generation, signature, date, and signer name are added via Zoho Sign.
Repository
https://heptapod.helinks.com/helinks/training-certificates
Setup
git clone https://heptapod.helinks.com/helinks/training-certificates.git
cd training-certificates
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
Usage
-
Copy one of the template JSON files and add the participant names:
Bashcp basic_training_certificates.json certificates.json -
Edit
certificates.json— add the actual participant names:JSON{ "training": "Helinks STS Basic Training", "description": "IEC61850 Engineering Process, Substation Configuration Language (SCL), and Helinks STS — covering system specification, system integration, and library-based project engineering.", "participants": [ "José Luis Torres", "Walter Medina", "Jane Smith" ] } -
Generate the certificates:
Bashpython generate_certificates.py certificates.jsonPDFs are written to
./output/. Use-ofor a different directory:Bashpython generate_certificates.py certificates.json -o certs/ -
Upload the generated PDFs to Zoho Sign to add signature, name, and date.
Available Templates
|
File |
Training |
|---|---|
|
|
Helinks STS Basic Training |
|
|
Helinks STS Advanced Training |
Certificate Descriptions
|
Training |
Description on Certificate |
|---|---|
|
Basic |
IEC61850 Engineering Process, Substation Configuration Language (SCL), and Helinks STS — covering system specification, system integration, and library-based project engineering. |
|
Advanced |
Advanced IEC61850 Engineering with Helinks STS — covering top-down specification, function modeling, templates, custom data models, and signal engineering. |
Dependencies
reportlab and svglib (see requirements.txt). The Helinks logo SVG (helinks_logo_paths.svg) must be in the same directory as the script.
Note: The working file certificates.json is in .gitignore — only the templates are tracked in the repository. Do not commit participant names.