Skip to content

Instantly share code, notes, and snippets.

@dario61081
Forked from philfreo/html2pdf.py
Created May 31, 2017 20:22
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dario61081/12c6d9b3631c1f9fce7a6a7b9d69eadd to your computer and use it in GitHub Desktop.
Save dario61081/12c6d9b3631c1f9fce7a6a7b9d69eadd to your computer and use it in GitHub Desktop.
A Flask view that returns HTML or generates a PDF
import mimerender
mimerender.register_mime('pdf', ('application/pdf',))
mimerender = mimerender.FlaskMimeRender(global_charset='UTF-8')
def render_pdf(html):
from xhtml2pdf import pisa
from cStringIO import StringIO
pdf = StringIO()
pisa.CreatePDF(StringIO(html.encode('utf-8')), pdf)
resp = pdf.getvalue()
pdf.close()
return resp
@app.route('/invoice/<invoice_id>/', methods=['GET'])
@login_required
@mimerender(default='html', html=lambda html: html, pdf=render_pdf, override_input_key='format')
def view_invoice(org_id, invoice_id):
html = render_template('invoice.html', id=invoice_id)
return { 'html': html } # mimerender requires a dict
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment