Получить данные xhtml2pdf в django как переменную

Я генерирую файлы PDF в своем приложении django, делая что-то вроде:

context = Context({'data':data_object, 'MEDIA_ROOT':settings.MEDIA_ROOT})
html  = template.render(context)
result = StringIO.StringIO()
pdf = pisa.pisaDocument(StringIO.StringIO(html.encode('UTF-8')), result)
if not pdf.err:
    response = HttpResponse( result.getvalue() )
    response['Content-Type'] = 'application/pdf'
    response['Content-Disposition'] = 'attachment; filename="%s.pdf"'%(title)
    return response

И это прекрасно работает, когда пользователи хотят скачать файл PDF. Однако мне нужно приложить этот PDF-файл в сообщении электронной почты. Вот почему мне нужно получить содержание этого PDF. Я не могу найти ничего в документах xhtml2pdf. Не могли бы вы помочь мне в ее решении?

1 ответ

Вы уже делаете это здесь:

HttpResponse( result.getvalue() )
# result.getvalue() gives you the PDF file content as a string

... так что вы можете взять это и использовать в своем коде отправки электронной почты

Для получения справки об этом см. Здесь /questions/33116004/kak-otpravit-vlozheniya-elektronnoj-pochtyi/33116019#33116019

пример:

import smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from email.utils import formatdate


context = Context({'data':data_object, 'MEDIA_ROOT':settings.MEDIA_ROOT})
html  = template.render(context)
result = StringIO.StringIO()
pdf = pisa.pisaDocument(StringIO.StringIO(html.encode('UTF-8')), result)

if not pdf.err:
    msg = MIMEMultipart(
        From='from@example.com',
        To='to@example.com',
        Date=formatdate(localtime=True),
        Subject="Here's your PDF!"
    )
    msg.attach(MIMEText(result.getvalue()))

    smtp = smtplib.SMTP('smtp.googlemail.com')  # for example
    smtp.sendmail('from@example.com', ['to@example.com'], msg.as_string())
    smtp.close()
Другие вопросы по тегам