2012-01-24 8 views
6

wygenerować plik PDF z HTML przy użyciu Piza:CSS nie świadczonych przez pokolenia pdf Pizy w Django

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() 

Moje HTML ma link do zewnętrznego CSS i jest poprawnie renderowane, ale CSS nie jest używany przez Pisa (np. Rozmiar czcionki, szerokość komórki tabeli, wyrównanie tekstu ...).

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

<body> 
.... 

Czy coś mi umknęło?

Dzięki

+0

Być może trzeba będzie zaimplementować swój [link loader] (https://github.com/chrisglass/xhtml2pdf/blob/master/test/linkloading.py) ..? –

Odpowiedz

6

Można spróbować this 'Pisa-and-Reportlab-pitfalls' musiałem dodać

def fetch_resources(uri, rel): 

Na szczycie, że nadal nosić całe css w szablonie. Upewnij się też, że używasz xhtml2pdf, a nie starego ho.pisa.

+0

Próbowałem z importowaniem xhtml2pdf.pis zamiast ho.pisa i dodałem def fetch_resources (uri, rel): ale css nadal nie jest renderowane w pdf ... – jul

+0

Z moim css w szablonie to działa. Dzięki. – jul

Powiązane problemy