Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用reportlab生成的pdf提供选项卡标题_Python_Django_Pdf Generation_Httpresponse_Reportlab - Fatal编程技术网

Python 使用reportlab生成的pdf提供选项卡标题

Python 使用reportlab生成的pdf提供选项卡标题,python,django,pdf-generation,httpresponse,reportlab,Python,Django,Pdf Generation,Httpresponse,Reportlab,这个问题很简单,但我找不到任何数据。 使用reportlab生成pdf时,将httpresponse作为文件传递,配置为显示文件的浏览器会正确显示pdf。然而,标签的标题仍然是“(匿名)127.0.0.1/whatnot”,这对用户来说有点难看 由于大多数网站都能以某种方式显示适当的标题,我认为这是可行的。。。是否有某种标题参数可以传递给pdf?还是响应的标题?这是我的代码: def render_pdf_report(self, context, file_name): respons

这个问题很简单,但我找不到任何数据。 使用reportlab生成pdf时,将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

Google Chrome似乎根本不显示PDF标题。 我在你的评论()中测试了链接,它在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
。它在第16页列出:

如果您使用的是trml2pdf,则需要在模板标记中添加“title”属性,即,我也在寻找这个,并且在源代码中找到了它

reportlab/src/reportlab/platypus/doctemplate.py @第467行

我们可以通过设置文档的标题

document.title = 'Sample Title'

除了其他人所说的,你还可以使用

Canvas.setTitle("yourtitle")

这在chrome中显示得很好。

我意识到这是一个老问题,但对于任何使用
SimpleDoctTemplate的人来说,这都是一个答案。
title
属性可以在
SimpleDocTemplate
的构造函数中设置为kwarg。e、 g

doc=SimpleDocTemplate(pdf\u字节,title=“my\u pdf\u title”)

你能提供一些网站的例子吗?例如:在这里,文件名显示在标题中。另外,当使用weasyprint生成时,html标题标记被寻址,所以我肯定这是可行的谢谢!这似乎奏效了。现在,我应该试着改变这一点,让它与鸭嘴兽一起工作,不使用画布,并在文档中提到setTitle。。它甚至没有解释它有什么效果,当你不使用画布时也没有帮助