下载发票(PDF)无法完成

时间:2009-12-18 10:44:47

标签: php iis pdf download magento

我们在运行magento的PHP 5.2.11的IIS 6.0服务器上运行了一个magento商业站点。

每当用户尝试使用print从管理面板将pdf下载到他们的计算机时,下载都无法完成。我可以看到完整的文件被下载到计算机,但浏览器仍然继续说它正在下载。这意味着文件最终以.part保存,用户无法以pdf格式打开文件。如果我删除由firefox创建的.part扩展名,那么我可以正确查看pdf。这意味着数据将从服务器完整发送到浏览器,但下载不会终止。

在开始下载pdf

时,请参阅以下标题
HTTP/1.x 200 OK
Cache-Control: must-revalidate, post-check=0, pre-check=0
Pragma: public
Content-Length: 1456781
Content-Type: application/pdf
Content-Encoding: gzip
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Last-Modified: Fri, 18 Dec 2009 10:23:37 +0000
Vary: Accept-Encoding
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET, PHP/5.2.11
Content-Disposition: attachment; filename=invoice2009-12-18_10-23-37.pdf
Date: Fri, 18 Dec 2009 10:23:37 GMT

我想这是在发送整个文件后没有关闭连接的事情吗?请帮忙!

感谢。

2 个答案:

答案 0 :(得分:2)

我有完全相同的问题(Apache),我通过关闭响应的gzip压缩暂时解决了这个问题。我的猜测是,Magento报告的大小(它是从PDF内容的strlen()调用到浏览器的大小)并不反映浏览器稍后被压缩的实际内容大小。这导致浏览器等待更多数据永远不会到达..

编辑:值得注意的是,就我而言,我是通过反向代理进入网站的。

答案 1 :(得分:1)

您是否尝试过显式调用exit;输出pdf数据后。听起来像IIS的东西。