django xhtml2pdf не получает изображение - PullRequest
0 голосов
/ 31 марта 2020

Я пытаюсь сделать html в pdf, это действительно прекрасно работает! только есть проблема, и это шаблон, получающий изображение:

Я использую python xhtml2pdf библиотеку для рендеринга PDF

это мой метод для рендеринга PDF:

<code>def render_pdf(template_src, context_dict):
    template = get_template(template_src)
    html  = template.render(context_dict)
    result = BytesIO()
    pdf = pisa.pisaDocument(BytesIO(html.encode("utf-8")), result)
    if not pdf.err:
        return HttpResponse(result.getvalue(), content_type='application/pdf')
    return HttpResponse('Unable to process the request, We had some errors<pre>%s
'% escape (html))

и это мой views.py ниже:

def test_view(request):
    context = {
        'test': 'a test string'
    }
    return render_pdf('test.html', context)

и это мой test.html

{% load static %}
<p>hello test </p>
 <img src="{% static 'ok.jpg' %}">

Он получает изображение, если я отрисовываю с django по умолчанию render методом. Но изображение не получается, когда я отрисовываю для PDF.

Я слышал об этом решении с помощью метода link_callback с этим документом: https://xhtml2pdf.readthedocs.io/en/latest/usage.html

Я не понимаю, куда включить это или как мне этого добиться.

Может ли кто-нибудь помочь мне в этом случае?

1 Ответ

0 голосов
/ 31 марта 2020

Я предлагаю изменить шаблон html и использовать абсолютный / относительный путь (путь к каталогу на жестком диске) файла изображения вместо использования тега {% stati c%}. Тег stati c хорош только для рендеринга HTMl, но Пиза не может прочитать изображение с него.

У меня есть этот код из проекта, который генерирует PDF из html, и мои изображения сделано следующим образом:

<img src="{{ STATIC_ROOT }}/report/logo.png" >

где STATIC_ ROOT - переменная, переданная из контекста рендеринга.

...