我正在尝试通过电子邮件发送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、字节或操作系统。PathLike 对象,而不是 pisaContext
如何获取 str 或字节而不是pisaContext
?
尝试下面的代码。 未经过测试,但它应该可以工作
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