def generate(): form = RegistrationForm() if form.validate_on_submit(): csvfile = form.csvfile.data csv_content = str(csvfile.stream.read(), 'iso-8859-1') if form.envelope_template.data: pdf = form.envelope_template.data.stream else: pdf = path.join(TMPL_DIR, 'template.pdf') try: texts = get_address_texts(csv_content, deduplicate=form.deduplicate.data) except: return render_template('form.html', form=form, msg='Konnte CSV-Datei nicht lesen.') try: t = TemplateEngine() t.load_template(pdf) except: return render_template('form.html', form=form, msg='Konnte PDF-Datei nicht lesen.') io = BytesIO() t.render_many(io, texts, (400, 150)) response = make_response(io.getvalue()) io.close() t.close() response.headers["Content-Disposition"] = \ "attachment; filename=letters.pdf" return response else: if request.method == 'POST': return render_template('form.html', form=form, msg='Etwas ist schiefgelaufen.') else: return redirect(url_for('root'))
#!.venv/bin/python3 from lib.address_read import get_address_texts from lib.pdf_template import TemplateEngine from os import path import codecs import views if __name__ == '__main__': csv_file = codecs.open('subscriptions.csv', 'r', 'iso-8859-1') texts = get_address_texts(csv_file) t = TemplateEngine() t.load_template(path.join(views.TMPL_DIR, 'template.pdf')) t.render_many('print.pdf', texts, (400, 150)) print('Generated %d pages.' % len(texts))