2015-02-02 11 views
7

To pytanie jest naprawdę proste, ale nie mogę znaleźć żadnych danych na jego temat. Gdy generuję plik pdf z raportem, przekazując odpowiedź httpresponse jako plik, przeglądarki skonfigurowane do wyświetlania plików wyświetlają poprawnie plik pdf. Jednak tytuł zakładki pozostaje "(Anonimowy) 127.0.0.1/whatnot", co jest trochę brzydkie dla użytkownika.Podaj tytuł karty z wygenerowanym reportlabem pdf

Ponieważ większość witryn może w jakiś sposób wyświetlać odpowiedni tytuł, myślę, że jest to możliwe ... Czy istnieje jakiś parametr tytułu, który mogę przekazać do pliku pdf? A może jakiś nagłówek odpowiedzi? To jest mój kod:

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

Czy możesz podać przykłady takich witryn, w których działa tak, jak chcesz? –

+0

np .: tutaj nazwa pliku jest wyświetlana w tytule http://www.biblioteca.org.ar/libros/211756.pdf. Ponadto podczas generowania za pomocą weasyprint adresowany jest tag tytułu HTML, więc jestem przekonany, że jest wykonalny. – Alvaro

Odpowiedz

7

Wygląda na to, że Google Chrome w ogóle nie wyświetla tytułów PDF. Testowałem link w twoim komentarzu (biblioteca.org.ar) i wyświetlało się w Firefoksie jako "- 211756.pdf", wydaje się, że jest pusty tytuł i Firefox wyświetla właśnie nazwę pliku zamiast pełnej ścieżki URL.

I zamieszczonym samo zachowanie przy użyciu ten kawałek kodu:

from reportlab.pdfgen import canvas 

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

otwarcia go w Firefoksie daje potrzebną wynik:

Dowiedziałem się o setTitle w ReportLab's User Guide. Ma ono wymienione na stronie 16. :)

+0

Dzięki! Wydaje się, że to wystarczy. Teraz powinienem spróbować zmienić to, by pracować z dziobakiem bez użycia płótna – Alvaro

+5

Zrobione. document.title = 'title' to podstęp – Alvaro

+1

I o wzmiance o setTitle w dokumentach ... nie wyjaśnia nawet, jaki ma efekt, ani nie pomaga, kiedy nie używasz płótna. – Alvaro

0

Jeśli używasz trml2pdf, trzeba będzie dodać atrybut „title” w szablon, tzn., < tytuł template = „Faktury” ...

Powiązane problemy