Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.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
在django 1.8中提供pdf时出错_Django_Pdf - Fatal编程技术网

在django 1.8中提供pdf时出错

在django 1.8中提供pdf时出错,django,pdf,Django,Pdf,在django 1.8中,我有两个函数可以读取pdf文件并返回它们,还可以使用reportlab生成pdf文件并返回它。 在某些情况下,文件的服务是正确的,但有时浏览器会像打开html一样打开PDF,更奇怪的是,PDF源显示在我的django基本模板中。 在这种情况下,如果在错误发生后重新加载页面,则会提供pdf 这是视图的代码: fpdf = open (path, 'rb') return HttpResponse (FileWrapper (fpdf), content_type = 'a

在django 1.8中,我有两个函数可以读取pdf文件并返回它们,还可以使用reportlab生成pdf文件并返回它。 在某些情况下,文件的服务是正确的,但有时浏览器会像打开html一样打开PDF,更奇怪的是,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作为附件返回是我进行的一项测试,以查看是否解决了问题,因为所需的行为是直接打开文件。 不幸的是,即使如此,错误仍然会发生。

更改此行

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

response = HttpResponse (result.getvalue (), content_type = 'application / pdf')
response = HttpResponse (result.getvalue (), content_type = 'application/octet-stream')
这将使文件被视为二进制文件,并下载给用户,而不是在浏览器中打开它

如果在浏览器中查看,请遵循Igor Pomaranskiy的建议,并通过执行以下操作删除content_type变量中的空格

改变这个 内容类型='application/pdf' 对此


在第二个示例中,斜杠周围有多余的空格:
content\u type='application/pdf'
我发现有一个javascript通过ajax加载pdf并在页面中插入响应。在消除javascript之后,问题就消失了。我很抱歉发布这个问题。
application/pdf
非常有效(注意没有空格),一些浏览器(Firefox、Chrome等)会在线显示它。但是强制使用
应用程序/octet流
内容类型将强制下载它,OP明确提到他们不想要它。我以为OP想要下载pdf,而不是在浏览器中查看它。他正在查看内容类型不正确的contant