今天我开始尝试使用基于PHP的PDF生成器。我试过TCPDF,它在大多数情况下工作得很好,虽然看起来有点慢。但是当我在Internet Explorer 8中加载生成PDF的PHP文件时,我会看到奇怪字符的行和行。但是,Chrome会将其识别为PDF格式。
我假设我必须设置一个特殊的MIME类型来告诉IE它应该将页面输出解释为PDF文件。如果是,我该怎么做?
答案 0 :(得分:2)
使用“application / pdf”或“application / octet-stream”mime类型可能有所帮助。请记住,“application / octet-stream”将强制下载该文件,并可能阻止它在浏览器中打开..
万一你想知道,你可以这样做:
header('Content-type: application/octet-stream');
答案 1 :(得分:1)
我也遇到了这个问题,但是为了让它起作用,我添加了
exit();
在pdf输出的末尾。
答案 2 :(得分:0)
您需要以不同方式处理动态生成内容的IE。见文章,
http://support.microsoft.com/default.aspx?scid=kb;en-us;293792
在我的代码中,我这样做,
if(isset($_SERVER['HTTP_USER_AGENT']) AND ($_SERVER['HTTP_USER_AGENT']=='contype')) {
header('Content-Type: application/pdf');
exit;
}
这个问题也可能解释了你提到的缓慢,因为你的页面实际上多次发送整个PDF而没有这个逻辑。
答案 3 :(得分:0)
@Pieter:我在使用tcpdf(使用fpdi)时遇到了同样的问题,并使用ajax调用加载了生成pdf的页面。我改变了javascript以使用window.location加载页面,问题消失了,性能也好得多。我相信其他两张海报在文档标题导致问题的想法中是正确的。在我的情况下,由于ajax调用,标题没有应用于整个文档,并导致问题。希望这会有所帮助。
答案 4 :(得分:0)
我发现这也是一个问题,对我而言,这一切都取决于代码:
if (php_sapi_name( != 'cli') {
在tcpdf.php文件的第7249行 我评论了这个'if'语句(以及相关的'}')并且所有这些都适用于我的其他浏览器和ie8 希望这有帮助