Как создать pdf файл с помощью шаблона Django с правильным CSS?

Я новичок в Django и в stack overflow тоже. Я хочу создать Django шаблон как pdf файл со всеми CSS стилями .Я использовал следующий код для создания pdf файла он правильно отображает содержимое файла, но не CSS стили .

Вот код, который я использовал :

from io import BytesIO
from xhtml2pdf import pisa
from django.template.loader import get_template
from django.http import HttpResponse
from django.shortcuts import render


def home(request):
    pdf = render_to_pdf("abc.html")
    return HttpResponse(pdf, content_type='application/pdf')


def render_to_pdf(template_src, context_dict={}):
    template = get_template(template_src)
    html = template.render(context_dict)
    result = BytesIO()
    pdf = pisa.pisaDocument(BytesIO(html.encode("ISO-8859-1")), result)
    if not pdf.err:
        return HttpResponse(result.getvalue(), content_type='application/pdf')
    else
        return None

Мы можем использовать стили в html-шаблоне двумя способами:

  1. Используйте <style>...</style> в теге head в html-шаблоне.
  2. Используйте .css файл из статических активов вашего приложения django. А затем добавьте ссылку в тег head html-шаблона, например: <link rel="stylesheet" href="{% static 'css/abc.css' %}" type="text/css" />. Но в этом случае вы должны настроить управление статическими файлами.

Несколько полезных ссылок с примерами: тег style, статический css

Но следует отметить, что не все стили будут применены в выходном pdf-файле. Я рекомендую использовать наиболее простую разметку и стили.

Вернуться на верх