django экспортирует изображения и текст в html как pdf

У меня возникли проблемы с экспортом изображений в html-файл как pdf, аналогичное решение существует здесь.

HTML правильно отображается на сервере. Я проверил это, перепроверив его по URL-адресу.

но при попытке загрузить / отобразить pdf ** я получаю PDF-файл, но он пуст, также в третьей строке функции загрузки в views.py указывается ошибка

Вот что я пробовал:

html файл:

<html>
<head>
<link href="{{ STATIC_URL }}css/certificate.css" rel="stylesheet"
  type="text/css" />
</head> 
<body>
<div class="certificate_container">
    <div class="statictext">
        <p>{{ name }}</p>
    </div>
</div>
</body>
<html>

css файл:

body{margin:0px; padding:0px;}
.certificate_container{ width:792px; height:612px; background:url("../images/certificate.gif") no-repeat;}
.statictext{width:400px; margin:0px auto; padding-top:240px; height:30px; text-align:center; font:bold 14px Arial, Helvetica, sans-serif; color:#333;}

views.py:

#relevant imports
from reportlab.pdfgen import canvas
import xhtml2pdf.pisa as pisa
import cStringIO as StringIO

def download(request):
    html = render_to_string("certificate.html", { 'pagesize' : 'A4', }, context_instance=RequestContext(request))
    result = StringIO.StringIO()
    pdf = pisa.pisaDocument(StringIO.StringIO(), dest=result, link_callback=fetch_resources )
    if not pdf.err:
        return HttpResponse(result.getvalue(), mimetype='application/pdf')
    return HttpResponse('Gremlins ate your pdf! %s' % cgi.escape(html))

def fetch_resources(uri, rel):
    path = os.path.join(settings.STATIC_ROOT, uri.replace(settings.STATIC_URL, ""))
    return path


def home(request):
    return render(request, 'certificate.html', {'name':'user1'} )

Об URL-адресах позаботились должным образом.


person user993563    schedule 13.02.2012    source источник
comment
Это поможет? stackoverflow.com/questions/4678723/   -  person jperelli    schedule 13.02.2012


Ответы (1)


Позже я обнаружил, что этого нельзя было достичь с помощью вышеуказанного технического стека, поэтому я попытался получить изображение шаблона и использовал PIL для его изменения в зависимости от контекста. И это сработало.

person user993563    schedule 07.03.2012