2011-01-13 10 views
5

Voglio generare un modello html in un file pdf usando pisa. Credo di avere tutti i pacchetti di cui ho bisogno, ma sembra che stia avendo problemi a farlo. Ecco la mia vista qui sotto così lontano da quello che ho fatto.Domanda Django pdf con pisa

MODIFICA: Ecco il mio ultimo URL, visualizzazioni & modello.

url.py

(r'^index/render_pdf/(?P<id>\d+)/$', render_pdf), 

views.py

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

def render_pdf (html, id): 
    invoice_items_list = Invoice_Items.objects.filter(pk=id) 
    result = StringIO.StringIO() 
    pdf = pisa.pisaDocument(StringIO.StringIO(html.encode("ISO-8859-1")), dest=result, link_callback=fetch_resources) 
    return result 

In un modello, ho questo tag.

<a href="{% url c2duo.views.render_pdf invoices.pk %}"> 
+0

prossimo, si ottiene il traceback errore completo o il comportamento hai e aggiungerlo al domanda, in modo che tutti possano vedere cosa succede quando lo provi in ​​questo modo. – nosklo

+0

Non c'è 'return' in' render_to_pdf (template_src, context_dict) '. Potresti includere più del codice effettivo che stai effettivamente utilizzando? –

+0

Il codice è stato aggiornato – Shehzad009

risposta

1

Non so quanto questo aiuterà, ma questa è la funzione che uso per rendere il pdf:

def fetch_resources(uri, rel): 
""" 
Callback to allow pisa/reportlab to retrieve Images,Stylesheets, etc. 
`uri` is the href attribute from the html link element. 
`rel` gives a relative path, but it's not used here. 

""" 
path = os.path.join(settings.MEDIA_ROOT, uri.replace(settings.MEDIA_URL, "")) 
return path 

def render_pdf (html): 
result = StringIO.StringIO() 
pdf = pisa.pisaDocument(StringIO.StringIO(html.encode("ISO-8859-1")), dest=result, link_callback=fetch_resources) 
return result 
+0

Viene visualizzato un messaggio di errore: l'oggetto WSGIRequest non ha attributo 'codifica' – Shehzad009

+0

non si passa l'oggetto richiesta alla funzione, si passa il modello renderizzato. – zsquare

+0

Si prega di guardare il mio codice fino ad ora vedere se c'è bisogno di qualche modifica modificando. – Shehzad009

0

Solo per divertimento, provate questo invece:

def render_to_pdf(template_src, context_dict): 
    html = "<html><head><title>Title</title></head><body><h1>Hello</h1></body></html>" 
    result = StringIO.StringIO() 
    pdf = pisa.pisaDocument(StringIO.StringIO(html), result) 
    if not pdf.err: 
     return http.HttpResponse("" % (repr(result.getvalue()))) 
    else: 
     raise Exception("The error was %s" % pdf.err) 

Se si verifica un errore ancora, sto cercando di indovinare l'errore potrebbe essere a Pisa. Sei sicuro che sia aggiornato?

+0

reiter, viene visualizzato un errore di sintassi non valido nell'ultima riga "tranne Eccezione ('errore PDF')" - quindi non so perché. Inoltre, c'è stato un altro errore di sintassi in linea con un errore di sintassi in cui si dice cosa pdf = ... C'è una parentesi chiusa aggiuntiva che non dovrebbe essere presente. – Shehzad009

+0

Scusa, questo è quello che ottengo per tagliare e incollare dal codice di uno sconosciuto. Dovrebbe essere risolto ora. –

Problemi correlati