【发布时间】:2018-09-04 21:20:38
【问题描述】:
我制作了一个烧瓶应用程序,它使用 weasyprint 从 html 生成 .pdf 并将其作为附件发送。但显然没有应用 bootstrap 4 css。我找不到解决方案。 它适用于 pdfkit,但我需要 weasyprint,因为 pythonanywhere.com 不支持 pdfkit。
我尝试过链接 bootstrap,在我的 html 中使用 bootstrap css 作为文件,但没有区别。
这是我的python部分,它生成并发送pdf。
@app.route('/pdf_send', methods=('GET', 'POST'))
@login_required
def pdf_send():
rendered = render_template(
'pdf_send2.html',
name=name_g,
surname=surname_g,
email=email_g,
address=address_g,
invoice_no=invoice_no_g,
dict_g=dict_g,
bendra_suma_g = ('%.2f' % round(float(bendra_suma_g[0]), 2)),
send=send_g,
today=today_g
)
css_file = ('static/bootstrap.css')
filename = 'SF-' + invoice_no_g +'.pdf'
html = HTML(string=rendered)
css = CSS(filename=css_file)
html.write_pdf(filename, stylesheets=[css])
send_email(filename, email_g)
return redirect(url_for('index'))
【问题讨论】:
-
您是否尝试过读取引导 css 的本地副本并将其手动添加为巨型字符串?并不是说它很有效,但这将是一个很好的故障排除步骤。我找不到表明直接支持外部 css 文件的文档。 weasyprint.readthedocs.io/en/latest/…
-
还是和之前一样的结果。不知何故,weasyprint 无法与 bootstrap 相处。
-
您确定没有导入或其他“现代”css 功能吗?这可能是它不兼容的原因。在我看来,从文档中可以看出 weasyprint 明确支持特定的 css 功能,仅此而已。
-
所以我删除了 Bootstrap,但在同一个 html 中添加了自定义 css。无法使 weasyprint 与 Bootstrap 一起工作。
-
我认为答案是 weasyprint 是个坏主意。似乎极其有限。我会重新审视使用它的要求。
标签: python css flask bootstrap-4 weasyprint