Это решение может быть немного запутанным, но оно работает, поэтому я добавлю его сюда для всех, кто читает это ...
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'))
Итак, мы запрашиваем в таблице данные, которые мы хотим заполнить в pdf - post = Quote.query.get_or_404(lead_id)
Затем мы визуализируем проходящий HTML-код в качестве аргумента, поскольку мой jinja равен {{ post.[variable] }}
Используя WeaseyPrint, мы можем создать объект HTML, передавая заполненный HTML и CSS для PDF.
Возможно, есть лучший способ сделать это, пожалуйста, не стесняйтесь размещать лучшее решение, но это динамически создает PDF на основе HTML-шаблона.