2015-02-02 13 views
7

Questa domanda è molto semplice, ma non riesco a trovare alcun dato. Quando si genera un pdf con reportlab, passando httpresponse come file, i browser configurati per mostrare i file visualizzano correttamente il pdf. Tuttavia, il titolo della scheda rimane "(Anonimo) 127.0.0.1/whatnot", che è un po 'brutto per l'utente.Fornisci il titolo della scheda con reportlab generato pdf

Poiché la maggior parte dei siti è in grado di visualizzare in qualche modo un titolo appropriato, penso che sia fattibile ... Esiste una sorta di parametro del titolo che posso passare al pdf? O qualche intestazione per la risposta? Questo è il mio codice:

def render_pdf_report(self, context, file_name): 
    response = HttpResponse(content_type='application/pdf') 
    response['Content-Disposition'] = 'filename="{}"'.format(file_name) 

    document = BaseDocTemplate(response, **self.get_create_document_kwargs()) 
    # pdf generation code 
    document.build(story) 
    return response 
+0

Potete fornire qualche esempio di quei siti in cui funziona come volete? –

+0

ad esempio: qui, il nome file viene visualizzato nel titolo http://www.biblioteca.org.ar/libros/211756.pdf. Inoltre, quando si genera con weasyprint, viene indirizzato il tag del titolo html, quindi sono sicuro che sia fattibile – Alvaro

risposta

7

Sembra che Google Chrome non visualizzi affatto i titoli PDF. Ho testato il collegamento nel tuo commento (biblioteca.org.ar) e viene visualizzato in Firefox come "- 211756.pdf", sembra che ci sia un titolo vuoto e Firefox mostra solo il nome del file invece del percorso completo dell'URL.

ho riprodotto lo stesso comportamento con questo pezzo di codice:

from reportlab.pdfgen import canvas 

c = canvas.Canvas("hello.pdf") 
c.setTitle("hello stackoverflow") 
c.drawString(100, 750, "Welcome to Reportlab!") 
c.save() 

apertura in Firefox ottiene il risultato necessario:

ho scoperto setTitle in ReportLab's User Guide. Ha elencato a pagina 16. :)

+0

Grazie! Questo sembra fare il trucco. Ora dovrei provare a cambiare questo per lavorare con platypus senza usare una tela – Alvaro

+5

Fine. document.title = 'title' fa il trucco – Alvaro

+1

E circa la menzione di setTitle nei documenti .. non spiega nemmeno quale effetto ha né aiuta quando non si utilizza una tela – Alvaro

0

Se si utilizza trml2pdf, è necessario aggiungere l'attributo "title" nel tag modello, vale a dire., < titolo del modello = "Fatture" ...