当您在应用程序上创建pdf时,如何设置mpdfHTML包含无效的UTF-8字符
试试这个
$html = mb_convert_encoding($html, 'UTF-8', 'UTF-8');
调用之前:"$mpdf->WriteHTML($html);"
这看起来毫无意义,但对我来说有效。
使用mpdf,转换和编码没有意义,因为这些很可能会丢失您的字符,您只会得到"?"或其他无法识别的字符(但会产生输出)
在将任何输入发送到mpdf:之前,请尝试使用这些
$mpdf->allow_charset_conversion=true;
$mpdf->charset_in='UTF-8';
这对我有效:
$mpdf->WriteHTML(utf8_encode($html));
使用utf8_encode()函数。例如:$html='
发起人名称
发起人地址
发起人电话号码
发起人电子邮件
借款人
物业地址
GFE 日期
';$html=utf8_encode($html1);
下面两行将完成
$mpdf->allow_charset_conversion = true;
$mpdf->charset_in = 'iso-8859-4';
在创建对象后添加以上两行,这将看起来像
$mpdf=new mPDF();
$mpdf->allow_charset_conversion = true;
$mpdf->charset_in = 'iso-8859-4';
经过数小时的拔发,这对我来说产生了奇迹:)
(就我而言बोटोक्स显示为???)
$mpdf->SetAutoFont()
$mpdf = new mPDF('utf-8','', 0, '', 15, 15, 16, 16, 9, 9, 'L');
$mpdf->SetAutoFont();
//~ Nothing of below worked :(
//~ $mpdf->useLang = true;
//~ $mpdf->autoScriptToLang = true;
//~ $mpdf->autoLangToFont = true;
//~ $pdf_html = mb_convert_encoding($html, 'UTF-8', 'UTF-8');
$mpdf->WriteHTML($html);
//~ $mpdf->DeletePages(2);
$filename = date('ymdhis').".pdf";
$mpdf->Output($filename,'D');
我的PDF包含英语和印地语单词的混合体,如
"3个单位बोटोक्स定价为10.00美元/单位"。
这对我有效:
使用
autoScriptToLang=true
autoLangToFont=true;
include("mpdf-6.0.0/mpdf.php");
$mpdf = new mPDF('c', 'A4', '', '', 0, 0, 0, 0, 0, 0);
$mpdf->autoScriptToLang = true;
$mpdf->autoLangToFont = true;
$mpdf->WriteHTML($html);
$mpdf->Output('SavePDF.pdf', 'D');
我敢肯定这个问题是因为您使用unicode不安全的函数对文本进行了一些操作。使用mb_strpos()/mb_substr()
而不是strpos()/substr()
,并在所有使用prog_replace()
的转换中添加"/u
"修饰符。
当然,这个问题可以通过允许"字符集转换"来解决,正如前面已经建议的那样。但最好知道您的文本已经正确并且符合UTF-8的要求。
我在将NULL
发送到->multicell()
时收到此错误。发送""
修复了它。