pythondjangopdf-generationweasyprint

attach img file in pdf weasyprint


I need help with attaching img file in pdfs. We use the WeasyPrint lib for generating pdf from html.

in html connect img file like this

<img src="1.png" alt="">
<img src="2.png" alt="">
<img src="3.png" alt="">

but it is not working. I don't see the image.


Solution

  • use static for path of the image file

      {% load static %}
        <img src="{% static 'images/static.jpg' %}" alt="">
    

    and pass base_url in HTML class in views.py

    pdf_file = HTML(string=rendered_html, base_url=request.build_absolute_uri())
    

    html file

    <!DOCTYPE html>
    <html lang="en">
    {% load static %}
    <head>
        <meta charset="UTF-8">
        <title>Document</title>
    </head>
    <body>
        <div>
            <img src="{% static 'images/static.jpg' %}" alt="">
        </div>
    </body>
    </html>
    

    views.py

    from django.template.loader import get_template
    from weasyprint import HTML, CSS
    from django.conf import settings
    from django.http import HttpResponse
    
    
    def generate_pdf(request):
        html_template = get_template('latest/html_pdf.html')
        user = request.user
        rendered_html = html_template.render().encode(encoding="UTF-8")
        pdf_file = HTML(string=rendered_html, base_url=request.build_absolute_uri()).write_pdf(stylesheets=[CSS(settings.STATIC_ROOT +  '/css/generate_html.css')])
    
    
    
        http_response = HttpResponse(pdf_file, content_type='application/pdf')
        http_response['Content-Disposition'] = 'filename="generate_html.pdf"'
    
        return http_response