コード例 #1
0
ファイル: views.py プロジェクト: helfenberg/adress_couverts
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'))
コード例 #2
0
#!.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))