使用 reportlab 生成的 pdf 提供选项卡标题
Provide tab title with reportlab generated pdf
这道题真的很简单,但是我找不到这方面的资料。
当我使用 reportlab 生成 pdf 时,将 httpresponse 作为文件传递,配置为显示文件的浏览器会正确显示 pdf。但是,选项卡的标题仍然是“(Anonymous) 127.0.0.1/whatnot”,这对用户来说有点难看。
由于大多数网站都能以某种方式显示适当的标题,我认为这是可行的...是否有某种标题参数可以传递给 pdf?或者一些 header 的回应?这是我的代码:
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
似乎 Google Chrome 根本不显示 PDF 标题。
我在您的评论 (biblioteca.org.ar) 中测试了 link,它在 Firefox 中显示为“- 211756.pdf”,似乎有一个空标题,然后 Firefox 只显示文件名而不是完整的 URL路径。
我使用这段代码重现了相同的行为:
from reportlab.pdfgen import canvas
c = canvas.Canvas("hello.pdf")
c.setTitle("hello Whosebug")
c.drawString(100, 750, "Welcome to Reportlab!")
c.save()
在 Firefox 中打开它会产生所需的结果:
我在 ReportLab's User Guide 中发现了 setTitle
。它在第 16 页列出。:)
如果您使用的是 trml2pdf,则需要在模板标签中添加 "title" 属性,即
我也在找这个,我在源代码中找到了这个。
reportlab/src/reportlab/platypus/doctemplate.py
@行 - 467
我们可以通过
设置文档的标题
document.title = 'Sample Title'
除了别人说的,你还可以用
Canvas.setTitle("yourtitle")
在 chrome 中显示良好。
我意识到这是一个老问题,但我为使用 SimpleDocTemplate
的任何人提供了答案。 title
属性 可以在 SimpleDocTemplate
的构造函数中设置为 kwarg。例如
doc = SimpleDocTemplate(pdf_bytes, title="my_pdf_title")
这道题真的很简单,但是我找不到这方面的资料。 当我使用 reportlab 生成 pdf 时,将 httpresponse 作为文件传递,配置为显示文件的浏览器会正确显示 pdf。但是,选项卡的标题仍然是“(Anonymous) 127.0.0.1/whatnot”,这对用户来说有点难看。
由于大多数网站都能以某种方式显示适当的标题,我认为这是可行的...是否有某种标题参数可以传递给 pdf?或者一些 header 的回应?这是我的代码:
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
似乎 Google Chrome 根本不显示 PDF 标题。 我在您的评论 (biblioteca.org.ar) 中测试了 link,它在 Firefox 中显示为“- 211756.pdf”,似乎有一个空标题,然后 Firefox 只显示文件名而不是完整的 URL路径。
我使用这段代码重现了相同的行为:
from reportlab.pdfgen import canvas
c = canvas.Canvas("hello.pdf")
c.setTitle("hello Whosebug")
c.drawString(100, 750, "Welcome to Reportlab!")
c.save()
在 Firefox 中打开它会产生所需的结果:
我在 ReportLab's User Guide 中发现了 setTitle
。它在第 16 页列出。:)
如果您使用的是 trml2pdf,则需要在模板标签中添加 "title" 属性,即
我也在找这个,我在源代码中找到了这个。
reportlab/src/reportlab/platypus/doctemplate.py @行 - 467
我们可以通过
设置文档的标题document.title = 'Sample Title'
除了别人说的,你还可以用
Canvas.setTitle("yourtitle")
在 chrome 中显示良好。
我意识到这是一个老问题,但我为使用 SimpleDocTemplate
的任何人提供了答案。 title
属性 可以在 SimpleDocTemplate
的构造函数中设置为 kwarg。例如
doc = SimpleDocTemplate(pdf_bytes, title="my_pdf_title")