【发布时间】:2013-12-07 10:59:00
【问题描述】:
问题:
TCPD & mPDF 错误:一些数据已经输出到浏览器,无法发送 PDF 文件 我放弃了尝试使用 TCPDF 修复错误并安装 mPDF 只是为了在尝试将文档呈现到浏览器时得到相同的错误。我可以很好地保存文档,并在检索时将其显示在浏览器中。
此外,此错误仅在从我的开发服务器切换到我的主机服务器后才出现。在 DEV 服务器上运行良好(DEV 服务器 = WAMPSERVER,PROD 服务器 = Hostgator Linux)。
疑难解答:
我已经阅读了互联网上有关此问题的大量其他讨论,但我找不到与空白相关的问题。我已将请求压缩为以下内容:
<?php
ob_start();
$html = "Hello World";
include("../mpdf.php");
$mpdf=new mPDF();
$mpdf->WriteHTML($html);
$mpdf->Output();
ob_end_clean();
?>
在 writeHtml 之前使用 ob_clean() 方法尝试了与 TCPDF 相同的概念。在所有情况下都出现相同的错误(我可以向所有人保证,这不是与空格相关的问题 - 我什至以十六进制查看文件,以确保编辑器没有插入奇怪的字符)。
可能的线索:
当我将整个 mPDF 库、类和文件夹移动到 public_html 文件夹而不是从我的应用程序文件夹(一个 symfony 项目)中时,我终于能够了解发生了什么。在这种情况下,当我将浏览器指向示例页面时,它呈现得很好,完全没有错误(顺便说一句,它超级快)。因此,我知道它有效,并且我知道关于代码或安装(在 mPDF/TCPPDF 方面)没有空白相关问题或任何其他相关问题。这让我相信 symfony 正在插入某种类型的标头(我尝试使用 clearHttpHeaders() 删除),或者我在 PROD 服务器上的某处缺少 PHP INI 或 CONFIG 设置。
有人知道这里发生了什么吗?
更新:流转储:
Request URL:http://www.example.com/mpdf
Request Method:GET
Status Code:200 OK
Request Headers
GET /mpdf HTTP/1.1
Host: www.example.com
Connection: keep-alive
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,/;q=0.8
User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.57 Safari/537.36
Accept-Encoding: gzip,deflate,sdch
Accept-Language: en-US,en;q=0.8
Cookie: __utma=44708724.1463191694.1383759419.1383759419.1383765151.2; __utmz=44708724.1383759419.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none); PHPSESSID=9c7c802200b9d8eefe718447755add5f; __utma=1.813547483.1383767260.1385127878.1385130071.38; __utmb=1.7.10.1385130071; __utmc=1; __utmz=1.1383767260.1.1.utmcsr=(direct)|utmccn=(direct)|utmcmd=(none)
Response Headers
Cache-Control:no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Connection:Keep-Alive
Content-Type:text/html
Date:Fri, 22 Nov 2013 14:59:52 GMT
Expires:Thu, 19 Nov 1981 08:52:00 GMT
Keep-Alive:timeout=5, max=75
Pragma:no-cache
Server:Apache
Transfer-Encoding:chunked
什么都没有在我身上跳出来......还有其他想法吗?
【问题讨论】:
-
您是否已经转储了流(如客户端所见)并查看了它?
-
没有。我恳求无知。我不知道如何转储流。如果我的方向正确,我会很高兴。
-
最好的办法是使用 Firefox,安装 Firebug 扩展,在 Firebug 中启用该站点的网络模块 - 这将逐字节显示您的客户端收到的内容......包括空格,换行符等我的提示:罪魁祸首将是
\r- Windows 忽略,但 Linux 不会忽略 -
我试试看。
-
嗯...和我的问题一样。我尝试删除我的 css 样式并且它可以工作。有什么建议吗?
标签: php symfony pdf tcpdf mpdf