【问题标题】:TCPDF outputs weird characters in IE8TCPDF 在 IE8 中输出奇怪的字符
【发布时间】:2012-12-16 15:03:39
【问题描述】:

今天我开始尝试使用基于 PHP 的 PDF 生成器。我尝试了 TCPDF,它在大多数情况下都可以正常工作,尽管它似乎有点慢。但是当我在 Internet Explorer 8 中加载生成我的 PDF 的 PHP 文件时,我看到一行行奇怪的字符。然而,Chrome 将其识别为 PDF。

我假设我必须设置一个特殊的 MIME 类型来告诉 IE 它将页面输出解释为 PDF 文件。如果是,我该怎么做?

【问题讨论】:

    标签: php internet-explorer tcpdf


    【解决方案1】:

    输入“application/pdf”或“application/octet-stream”mime 类型可能会有所帮助。请记住,“application/octet-stream”将强制下载文件,并可能阻止它在浏览器中打开..

    如果你想知道,你可以这样做:

    header('Content-type: application/octet-stream');
    

    【讨论】:

      【解决方案2】:

      我也遇到了这个问题,但我做了什么让它工作是我添加的

       exit();
      

      在 pdf 输出的末尾。

      【讨论】:

        【解决方案3】:

        对于动态生成的内容,您需要以不同的方式处理 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。

        【讨论】:

          【解决方案4】:

          @Pieter:我在使用 tcpdf(使用 fpdi)时遇到了同样的问题,并使用 ajax 调用加载了生成 pdf 的页面。我更改了javascript以使用window.location加载页面,问题消失了,性能也好得多。我相信其他两张海报在文档标题导致问题的想法上是正确的。就我而言,由于 ajax 调用,标头未应用于整个文档,并导致问题。希望这会有所帮助。

          【讨论】:

            【解决方案5】:

            我发现这也是一个问题,对我来说这一切都取决于代码:

            if (php_sapi_name( != 'cli') {
            

            在 tcpdf.php 文件的第 7249 行。
            我评论了这个'if'语句(和相关的'}')并且对于我的其他浏览器和ie8一切正常 希望这会有所帮助

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2018-03-11
              • 1970-01-01
              • 2021-04-23
              • 1970-01-01
              • 1970-01-01
              • 2014-03-21
              • 2018-07-22
              相关资源
              最近更新 更多