2015-01-22 3 views
0

сгенерировать PDF-файлы в моем Джанго приложение, сделав что-то вроде:Получить данные xhtml2pdf в Джанго в переменной

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. Не могли бы вы помочь мне в его решении?

ответ

0

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

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

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

Для получения справки, что смотрите здесь https://stackoverflow.com/a/3363254/202168

пример:

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='[email protected]', 
     To='[email protected]', 
     Date=formatdate(localtime=True), 
     Subject="Here's your PDF!" 
    ) 
    msg.attach(MIMEText(result.getvalue())) 

    smtp = smtplib.SMTP('smtp.googlemail.com') # for example 
    smtp.sendmail('[email protected]', ['[email protected]'], msg.as_string()) 
    smtp.close() 
Смежные вопросы