错误在django 1.8中提供pdf

时间:2015-05-27 20:07:28

标签: django pdf

在django 1.8中,我有几个函数可以读取pdf文件并返回它们,并生成带有reportlab的pdf并返回它。 在某些情况下,文件是正确提供的,但有时PDF浏览器会打开,就像它是html一样,更奇怪的是,pdf源显示在我的django基本模板中。 在这种情况下,如果在错误之后重新加载页面,则提供pdf。

这是视图的代码:

fpdf = open (path, 'rb')
return HttpResponse (FileWrapper (fpdf), content_type = 'application/pdf')

这是另一个的代码:

pdf = pisa.CreatePDF (StringIO.StringIO (html.encode ("UTF-8")), result)
if not pdf.err:
    response = HttpResponse (result.getvalue (), content_type = 'application / pdf')
    response ['Content-Disposition'] = 'attachment; filename =% S.pdf '% (doc.name.replace ("", "_"))
    return response
    #Return HttpResponse (result.getvalue (), content_type = 'application/pdf')

将PDF作为附件返回是我所做的测试,看看是否已解决,因为所需的行为将直接打开文件。 不幸的是,错误仍然会发生。

1 个答案:

答案 0 :(得分:1)

更改此行

response = HttpResponse (result.getvalue (), content_type = 'application / pdf')

到这一行

response = HttpResponse (result.getvalue (), content_type = 'application/octet-stream')

这将使文件被视为二进制文件,并下载到用户而不是在浏览器中打开它。

如果您在浏览器中查看它,请按照Igor Pomaranskiy的建议,并通过执行以下操作删除content_type变量中的空间

改变这个     content_type =' application / pdf' 到这个

content_type = 'application/pdf'