CSS not rendered by Pisa's pdf generation in Django
Asked Answered
H

1

7

I generate a pdf file from HTML using Pisa:

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

def write_pdf(template_src, context_dict, filename):
    template = get_template(template_src)
    context = Context(context_dict)
    html  = template.render(context)
    result = open(filename, 'wb')
    pdf = pisa.pisaDocument(StringIO.StringIO(
        html.encode("UTF-8")), result, link_callback=fetch_resources)
    result.close()

My HTML has a link to an external CSS and is rendered properly, but the CSS is not used by Pisa (eg. font size, table cell width, text-align...).

<!DOCTYPE html>
<html lang="fr">
<head>
    <link rel="stylesheet" href="/site_media/style/style.css" />
</head>

<body>
....

Did I miss something?

Thanks

Heilman answered 24/1, 2012 at 12:30 Comment(1)
You might need to implement your own link loader..?Shyster
P
5

You could try this 'Pisa-and-Reportlab-pitfalls' I had to add this

def fetch_resources(uri, rel):

On top of that I still carry all my css within the template. Also make sure you're using xhtml2pdf and not the old ho.pisa.

Poorly answered 24/1, 2012 at 12:54 Comment(1)
I tried with import xhtml2pdf.pis instead of ho.pisa and I added def fetch_resources(uri, rel): but css is still not rendered in the pdf...Heilman

© 2022 - 2024 — McMap. All rights reserved.