Skip to content

Instantly share code, notes, and snippets.

@astrojuanlu
Created March 21, 2016 16:34
Show Gist options
  • Save astrojuanlu/2efcc28995e850d66077 to your computer and use it in GitHub Desktop.
Save astrojuanlu/2efcc28995e850d66077 to your computer and use it in GitHub Desktop.
Generate AeroPython certificates
from datetime import datetime
from lxml import etree
from natural.number import ordinal
def main(source_fname, names):
with open(source_fname, 'r') as fh:
doc = etree.parse(fh)
for name in names:
new_doc = change_data(doc, name)
first, last = name.split()[:2]
new_fname = "{FIRST}_{LAST}.svg".format(FIRST=first.lower(), LAST=last.lower())
with open(new_fname, 'wb') as fh:
fh.write(etree.tostring(doc))
def change_data(doc, name):
root = doc.getroot()
name_el, = root.xpath("//*[@id='tspan7354']")
date_el, = root.xpath("//*[@id='tspan7354-1']")
date = datetime.now()
name_el.text = name
date_el.text = date.strftime("%B {DAY}, %Y").replace("{DAY}", ordinal(date.day))
return doc
if __name__ == '__main__':
import sys
import fileinput
names = []
for name in fileinput.input():
names.append(name)
main("source_caminos.svg", names)
#!/usr/bin/env bash
python generate.py < names.txt
for file in *_*.svg; do
inkscape -z $file -A ${file%.*}.pdf
done
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment