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
祝你好运!
我用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
祝你好运!