def render_pdf_from_html():
template = (
bottle.request.forms.data or bottle.request.forms.template or ''
)
backend = bottle.request.forms.backend or 'pdfkit'
code = bottle.request.forms.qr or None
options = bottle.request.forms.decode()
try:
qr_x = int(bottle.request.forms.qr_x or 545)
qr_y = int(bottle.request.forms.qr_y or 20)
version = None
if bottle.request.forms.version:
version = int(bottle.request.forms.version)
except ValueError:
return bottle.HTTPResponse(
status=400,
body='Invalid value passed to QR code coordinates.',
)
try:
pdf_file = backends_registry.get(backend).render(template, options)
except AttributeError:
return bottle.HTTPResponse(
status=400,
body='Provided backend (%s) is not supported.' % backend,
)
if code is not None:
try:
pdf_file = postprocess_pdf(pdf_file, code, qr_x, qr_y, version)
except ValueError:
logger.error('Failed to append QR code', exc_info=True)
return bottle.HTTPResponse(
status=422,
body='Unable to append QR code to rendered template.',
)
bottle.response.headers['Content-Type'] = 'application/pdf; charset=UTF-8'
return pdf_file
评论列表
文章目录