WeaseyPrint 错误地格式化 PDF
WeaseyPrint Formats a PDF incorrectly
我正在尝试从 HTML 文件创建 PDF,我还想将变量传递给 JINJA 模板以获取它。目前我一直在尝试使用 weasyprint 这样做:
from weasyprint import HTML, CSS
css = CSS(string='@page { size: A3; margin: 0cm }')
html = HTML('/home/templates/pdf_test.html')
html.write_pdf('test.pdf', stylesheets=[css])
然后我将如何重构它以在创建 PDF 之前将变量发送到 HTML?我正在为我的框架使用 Flask,HTML 包含 JINJA 模板。
这个解决方案可能有点复杂,但它确实有效,所以我会在此处添加它以供阅读本文的任何人使用...
from weasyprint import HTML
@leads.route("/create-quote/<int:lead_id>", methods=['GET', 'POST'])
def generate_pdf(lead_id):
post = Quote.query.get_or_404(lead_id)
html_template = render_template('leads/pdf_test.html', post=post)
HTML(string=html_template).\
write_pdf('DESTINATION_OF_FILE/{}_quote.pdf'.format(post.business_name),
stylesheets=['PATH_TO_CSS_FOR_PDF'])
flash('Your quote email has been generate! Please see var/b2b/quotes', 'success')
return redirect(url_for('main.dashboard'))
所以我们在 table 中查询要填充 pdf 的数据 - post = Quote.query.get_or_404(lead_id)
然后我们渲染 HTML 作为参数传递 post 因为我的神社是 {{ post.[variable] }}
使用 WeaseyPrint,我们可以创建一个 HTML 对象,传入填充的 HTML 和 PDF 的 CSS。
可能有更好的方法,请随时 post 更好的解决方案,但这会根据 HTML 模板动态创建 PDF。
我正在尝试从 HTML 文件创建 PDF,我还想将变量传递给 JINJA 模板以获取它。目前我一直在尝试使用 weasyprint 这样做:
from weasyprint import HTML, CSS
css = CSS(string='@page { size: A3; margin: 0cm }')
html = HTML('/home/templates/pdf_test.html')
html.write_pdf('test.pdf', stylesheets=[css])
然后我将如何重构它以在创建 PDF 之前将变量发送到 HTML?我正在为我的框架使用 Flask,HTML 包含 JINJA 模板。
这个解决方案可能有点复杂,但它确实有效,所以我会在此处添加它以供阅读本文的任何人使用...
from weasyprint import HTML
@leads.route("/create-quote/<int:lead_id>", methods=['GET', 'POST'])
def generate_pdf(lead_id):
post = Quote.query.get_or_404(lead_id)
html_template = render_template('leads/pdf_test.html', post=post)
HTML(string=html_template).\
write_pdf('DESTINATION_OF_FILE/{}_quote.pdf'.format(post.business_name),
stylesheets=['PATH_TO_CSS_FOR_PDF'])
flash('Your quote email has been generate! Please see var/b2b/quotes', 'success')
return redirect(url_for('main.dashboard'))
所以我们在 table 中查询要填充 pdf 的数据 - post = Quote.query.get_or_404(lead_id)
然后我们渲染 HTML 作为参数传递 post 因为我的神社是 {{ post.[variable] }}
使用 WeaseyPrint,我们可以创建一个 HTML 对象,传入填充的 HTML 和 PDF 的 CSS。
可能有更好的方法,请随时 post 更好的解决方案,但这会根据 HTML 模板动态创建 PDF。