2015-02-02 5 views
7

Этот вопрос очень прост, но я не могу найти на нем никаких данных. Когда я создаю pdf-файл с reportlab, передавая httpresponse в виде файла, браузеры, настроенные для отображения файлов, отображают pdf правильно. Тем не менее, заголовок вкладки остается «(Анонимный) 127.0.0.1/whatnot», который для пользователя выглядит некрасиво.Укажите заголовок вкладки с созданными reportlab pdf

Поскольку большинство сайтов могут как-то отобразить подходящее название, я думаю, что это выполнимо ... Есть ли какой-то параметр названия, который я могу передать в pdf? Или какой-то заголовок для ответа? Это мой код:

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

Можете ли вы представить какие-либо примеры тех сайтов, на которых он работает, как вы этого хотите? –

+0

например: здесь имя файла отображается в заголовке http://www.biblioteca.org.ar/libros/211756.pdf. Кроме того, при генерации с weasyprint тег заголовка html адресуется, поэтому я уверен, что он выполним – Alvaro

ответ

7

Похоже, Google Chrome не отображает названия PDF вообще. Я протестировал ссылку в вашем комментарии (biblioteca.org.ar), и она отображается в Firefox как «- 211756.pdf», кажется, что есть пустой заголовок, а Firefox просто отображает имя файла вместо полного URL-адреса.

я воспроизвел такое же поведение, используя этот кусок кода:

from reportlab.pdfgen import canvas 

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

Открытие его в Firefox дает нужный результат:

я узнал о setTitle в ReportLab's User Guide. Он имеет в нем перечислены на странице 16. :)

+0

Спасибо! Кажется, это трюк. Теперь я должен попытаться изменить это, чтобы работать с утконосом без использования холста. – Alvaro

+5

Готово. document.title = 'title' делает трюк – Alvaro

+1

И об упоминании setTitle в документах .. он даже не объясняет, какой эффект он имеет, и не помогает, когда вы не используете холст – Alvaro

0

Если вы используете trml2pdf, вам нужно будет добавить «название» атрибут в тег шаблона, то есть., < название шаблона = «Счета-фактуры» ...

Смежные вопросы