# intermediate docs intermediate = NamedTemporaryFile(mode='wb') forefront = NamedTemporaryFile(mode='wb') # render intermediate PDF spawnlp(P_WAIT, 'node', 'node', 'scripts/pdf.js', '--output={}'.format(intermediate.name), '--source=file:///{}'.format(path.abspath('resume.html'))) # construct denouement with open(intermediate.name, 'rb') as resume, open(forefront.name, 'rb') as forepart: intermediate.pdf = PdfFileReader(resume) forefront.pages = intermediate.pdf.getNumPages() forefront.canvas = Canvas(filename=forefront.name, pagesize=A4, initialFontName='Helvetica') # no header or footer on first page forefront.canvas.showPage() # register custom fonts if args.font: pdfmetrics.registerFont( TTFont('{}'.format(basename(args.font)), '{}.ttf'.format(args.font))) forefront.canvas.setFont('{}'.format(basename(args.font)), forefront.canvas._fontsize)