PHP 和 mpdf - 如果 charset_in='UTF-8',则无法在 Chrome 中加载 PDF

PHP and mpdf - Failed to load PDF in Chrome if charset_in='UTF-8'

我用mpdf生成pdf,a的做法是这样的:

    header('Content-Type: application/pdf; charset=UTF-8');
    header('Content-Transfer-Encoding: binary');
    header('Accept-Ranges: bytes');
    define('MPDF_PATH', '../mpdf/');
    require(MPDF_PATH.'mpdf.php');
    require("../cnxdb.inc.php");
    error_reporting(E_ALL);
    ini_set('display_errors', 1);
    // some stuff to populate &html
    $html = is_utf8($html);
    $file_name = $title.'.pdf';
    ob_clean();
    $mpdf=new mPDF();
    $mpdf->SetTitle($title);
    $mpdf->setFooter($footer);
    $mpdf->allow_charset_conversion=true;
    $mpdf->charset_in='UTF-8'; 
    $mpdf->WriteHTML($html);
    header('Content-Disposition: attachment; filename="'.$file_name.'"');
    $mpdf->list_indent_first_level = 0;
    $mpdf->Output($file_name, 'I');
    $mpdf->debug = true;

但是如果我将 $mpdf->charset_in='UTF-8' 行更改为 $mpdf->charset_in='windows-1252' 它会打印 PDF,但是一些字母被打乱,比如 ç、á、ó、... 这段代码在 Firefox 中完美运行,所以它一定是 Chrome。 有谁知道这个的解决方案?或者 Chrome 不使用 UTF-8 格式的 PDF?

任何额外的信息只要问我, 谢谢!

所以,碰巧我很笨,字符集与 Chrome 未加载无关。 真正的问题是 $html$mpdf->WriteHTML($html); 有风格,所以 Chrome 变得疯狂,但 firefox 可以接受。 解决办法是把style和html body分开:

$mpdf->WriteHTML($style, 1); // 1 is for stylesheet
$mpdf->WriteHTML($html, 2); // 2 is for html body

祝你好运!