Укажите заголовок вкладки с помощью reportlab generated pdf
Этот вопрос очень прост, но я не могу найти на нем никаких данных.
Когда я создаю pdf файл с reportlab, передавая httpresponse как файл, браузеры, настроенные для отображения файлов, отображают pdf правильно. Тем не менее, заголовок вкладки остается "(анонимно) 127.0.0.1/whatnot", что для пользователя выглядит некрасиво.
Так как большинство сайтов способны каким-то образом отобразить подходящий заголовок, я думаю, что это выполнимо... Есть ли какой-то параметр заголовка, который я могу передать в 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
Ответы
Ответ 1
Похоже, 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. Он указан на странице 16.:)
Ответ 2
Я также искал это, и я нашел это в исходном коде.
ReportLab/ЦСИ /ReportLab/меченосцы/doctemplate.py
@line - 467
Мы можем установить заголовок документа с помощью
document.title = 'Sample Title'
Ответ 3
Если вы используете trml2pdf, вам нужно будет добавить атрибут title в теге шаблона, т.е., < template title= "Invoices"...
Ответ 4
В дополнение к тому, что сказали другие, вы можете использовать
Canvas.setTitle("yourtitle")
который хорошо отображается в Chrome.