#!/usr/bin/env python3 import argparse import datetime import locale import logging import os import subprocess import sys import jinja2 locale.setlocale(locale.LC_ALL, '') def main(): env = jinja2.Environment() loader = jinja2.FileSystemLoader('templates') template_verso = loader.load(env, 'daily-A6-v.svg') template_recto = loader.load(env, 'daily-A6-r.svg') destination_fname = "build/daily-A6-{year}-{page:03}.svg" os.makedirs("build", exist_ok=True) year = 2022 template_cover = loader.load(env, 'cover-A6-r.svg') with open(destination_fname.format( year=year, page=0, ), 'w') as fp: fp.write(template_cover.render(year=year)) day = datetime.date(year, 1, 1) page = 1 while day.year == year: with open(destination_fname.format( year=year, page=page, ), 'w') as fp: fp.write(template_verso.render(day=day)) page += 1 day += datetime.timedelta(days=1) if day.year > year: break with open(destination_fname.format( year=year, page=page, ), 'w') as fp: fp.write(template_recto.render(day=day)) page += 1 day += datetime.timedelta(days=1) inkscape_commands = ";\n".join([ ( "file-open:build/{svg};" + " export-type: pdf;" + " export-filename:build/{pdf};" + " export-text-to-path;" + " export-do" ).format( svg = s, pdf = os.path.splitext(s)[0] + ".pdf", ) for s in os.listdir("build") ]) try: subprocess.run( ["inkscape", "--shell" ], input=inkscape_commands, text=True, ) except FileNotFoundError: logging.warning("Inkscape is not installed, can't convert to pdf") logging.warning("Stopping here, you can use the svgs as you like") sys.exit(1) pdf_pages = sorted([ os.path.join("build", p) for p in os.listdir("build") if p.endswith(".pdf") ]) # insert an empty page on the second page, to start the year on a # left page pdf_pages.insert(1, "1, {}") try: subprocess.run([ "pdfjam", "--outfile", "daily_planner_A6.pdf", *pdf_pages ]) except FileNotFoundError: logging.warning("pdfjam is not installed") logging.warning("you will have to join the pdf pages yourself") sys.exit(1) if __name__ == '__main__': main()