1

我正在尝试通过电子邮件发送 PDF:

def render_to_pdf(template_src, context_dict={}):
    template = get_template(template_src)
    html = template.render(context_dict)
    result = BytesIO()
    pdf = pisa.pisaDocument(BytesIO(html.encode("ISO-8859-1")), result)
    if not pdf.err:
        return pdf
    return None

在我看来

pdf = render_to_pdf('expenses/pdf_report.html', data)
mail.attach_file(pdf)
mail.send()

我收到此错误:

预期的 str、bytes 或 os.PathLike 对象,而不是 pisaContext

我怎样才能得到 str 或 bytes 而不是pisaContext

4

1 回答 1

2

试试下面的代码。未经测试,但它应该可以工作

from django.template.loader import render_to_string

def render_to_pdf(template_src, context_dict={}):
    html = render_to_string(template_src, context_dict)
    result = BytesIO()
    pdf = pisa.pisaDocument(BytesIO(html.encode("ISO-8859-1")), result)
    if not pdf.err:
        return result.getvalue()
    return None

参考:https ://github.com/codingforentrepreneurs/Guides/blob/master/all/Render_to_PDF_in_Django.md

于 2018-05-22T11:30:09.147 回答