2015-02-02 16 views
7

Diese Frage ist wirklich einfach, aber ich kann keine Daten darüber finden. Wenn ich eine PDF-Datei mit reportlab erzeuge und die httpresponse als Datei übergebe, zeigen Browser, die zum Anzeigen von Dateien konfiguriert sind, die PDF-Datei korrekt an. Der Titel des Tabs bleibt jedoch "(Anonymous) 127.0.0.1/whatnot", was für den Benutzer ziemlich hässlich ist.Registerkarte Titel mit reportlab generieren pdf

Da die meisten Websites irgendwie einen passenden Titel anzeigen können, denke ich, dass es machbar ist ... Gibt es eine Art Titelparameter, den ich an die PDF weitergeben kann? Oder eine Kopfzeile für die Antwort? Das ist mein Code:

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

Können Sie Beispiele für diese Sites angeben, auf denen sie so funktioniert, wie Sie es möchten? –

+0

zB: hier wird der Dateiname im Titel http://www.biblioteca.org.ar/libros/211756.pdf angezeigt. Auch beim Generieren mit weasyprint wird der HTML-Title-Tag angesprochen, also bin ich mir sicher, dass es machbar ist – Alvaro

Antwort

7

Scheint, dass Google Chrome die PDF-Titel überhaupt nicht anzeigt. Ich testete den Link in Ihrem Kommentar (biblioteca.org.ar) und es zeigt in Firefox als "- 211756.pdf", scheint es gibt einen leeren Titel und Firefox zeigt dann nur den Dateinamen anstelle der vollständigen URL-Pfad.

reproduziert ich das gleiche Verhalten dieses Stück Code verwendet:

from reportlab.pdfgen import canvas 

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

Opening es in Firefox liefert das benötigte Ergebnis:

ich über setTitle in ReportLab's User Guide herausgefunden haben. Es hat es auf Seite gelistet 16. :)

+0

Danke! Das scheint der Trick zu sein. Jetzt sollte ich versuchen, dies zu ändern, um mit Schnabeltier ohne Verwendung einer Leinwand zu arbeiten – Alvaro

+5

Fertig. document.title = 'title' macht den Trick – Alvaro

+1

Und über die Erwähnung von setTitle in den Dokumenten .. es erklärt nicht einmal, welche Wirkung es hat, noch hilft es, wenn Sie keine Leinwand verwenden – Alvaro

0

Wenn Sie trml2pdf verwenden, müssen Sie das Attribut "Titel" in der Vorlage Tag hinzuzufügen, dh., < Template title = "Rechnungen" ...

Verwandte Themen