Пиза (XHTML -> PDF) в Django не будет отображать изображения в PDF - PullRequest
5 голосов
/ 03 сентября 2011

Для начала я видел другие темы по этому поводу, и я попробовал почти все, чтобы попытаться это исправить, но ...

При использовании Pisa для рендеринга HTML-страницы в PDF изображения в указанном HTML заметно пропадают. То есть, когда страница отображается в HTML, все просто замечательно, но когда я переключаю вывод в PDF с помощью Pisa, изображения исчезают.

Самое распространенное, что я нашел, это создать функцию обратного вызова для ссылки таким образом:

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

def my_view(request, variable1):
    html = render_to_string('template_goes_here.html', dict, context_instance=RequestContext(request))
    result = StringIO()
    pdf = pisa.pisaDocument(StringIO(html.encode("UTF-8")), dest=result, link_callback=fetch_resources)
    if not pdf.err:
        return HttpResponse(result.getvalue(), mimetype='application/pdf')
    return HttpResponse('Pisa hates you! %s' % cgi.escape(html))

Однако это не работает. PDF подходит, отлично, но изображения отсутствуют.

Я также прочитал предложение в другой ветке о том, как записать HTML-код в mkstemp, преобразовать его в PDF-файл с помощью командной строки, а затем вывести HTML-код, но и безуспешно.

Я даже пытался установить PIL 1.1.16 вместо 1.1.17 из-за кого-то с подобной проблемой - без игры в кости.

Кто-нибудь имеет представление о том, где я иду не так?

Ответы [ 2 ]

2 голосов
/ 20 марта 2012

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

например,

links = lambda uri, rel: os.path.join(settings.MEDIA_ROOT, 
    uri.replace(settings.MEDIA_URL, ''))


pdf = pisa.pisaDocument(StringIO(html.encode("UTF-8")),
    dest=result, link_callback=links)
0 голосов
/ 12 октября 2012

Я думаю, что это может помочь.Windows использование слешей было виновником в моем случае.https://stackoverflow.com/a/12644633/1236599

...