【问题标题】:how to set mpdf HTML contains invalid UTF-8 character(s)如何设置 mpdf HTML 包含无效的 UTF-8 字符
【发布时间】:2015-02-26 06:41:51
【问题描述】:

当您在应用程序上创建 pdf 时,如何设置 mpdf HTML 包含无效的 UTF-8 字符

【问题讨论】:

  • 你要什么?你试过什么?然后会发生什么?

标签: php pdf


【解决方案1】:

试试这个

$html = mb_convert_encoding($html, 'UTF-8', 'UTF-8');

调用前:"$mpdf->WriteHTML($html);"

这似乎毫无意义,但它对我有用。

【讨论】:

  • 为我工作 - 太疯狂了
  • 这也是唯一对我有用的东西。 allow_charset_conversion 没有为我做任何事情..
  • 我遇到了这个错误:“未捕获的 Mpdf\MpdfException:输入字符无效。您是否正确设置了 $mpdf->in_charset?”这个解决方案解决了它。
【解决方案2】:

使用 mpdf,转换和编码没有意义,因为这些很可能会丢失您的字符,而您只会得到“?”或其他无法识别的字符(但会产生输出)

在将任何输入发送到 mpdf 之前尝试使用这些:

$mpdf->allow_charset_conversion=true;
$mpdf->charset_in='UTF-8';

【讨论】:

  • 我在一个作为普通文本执行的页脚中有©。这样就完美解决了问题。
  • @Runa 我有两个 char '??' 的问题这解决了我的问题:$output= utf8_encode($output);
【解决方案3】:

这对我有用:

$mpdf->WriteHTML(utf8_encode($html));

【讨论】:

    【解决方案4】:

    使用 utf8_encode() 函数。 例如: $html = '

    发起人姓名

    发起人地址

    发起人电话号码

    发起人电子邮件

    借款人

    物业地址

    GFE 日期

      

    '; $html = utf8_encode($html1);

    【讨论】:

      【解决方案5】:

      下面两行就可以了

      $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';
      

      【讨论】:

      • 这是唯一对我有用的...我还必须在 php 上安装 iconv。另一个 $mpdf->charset_in = 'utf-8';不是为我做的。
      • 这对我有用。还需要注意的是,'iso-8859-4' 应该替换为您的 html 使用的任何字符集,否则它可能不适用于您的 html。
      【解决方案6】:

      在拉了几个小时的头发后,这对我来说很神奇:)

      (在我的情况下,बोटोक्स 显示为??????)

      $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/件”。

      【讨论】:

        【解决方案7】:

        当我将NULL 发送到->multicell() 时出现此错误。发送"" 修复它。

        老问题,但也许有人像我一样从谷歌来到这里

        【讨论】:

          【解决方案8】:

          我 99% 确定问题是因为您使用 unicode-unsafe 函数对文本进行了一些操作。使用mb_strpos()/mb_substr() 而不是strpos()/substr(),并将“/u”修饰符添加到带有prog_replace() 的所有转化中。

          当然,如前所述,允许“字符集转换”可以解决问题。但最好知道您的文本已经正确并符合 UTF-8 的合规性。

          【讨论】:

            【解决方案9】:

            这对我有用:

            使用

            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');
            

            【讨论】:

              猜你喜欢
              • 2020-03-07
              • 2018-06-04
              • 1970-01-01
              • 2019-07-28
              • 2023-03-23
              • 1970-01-01
              • 2014-08-16
              • 2018-09-03
              • 2012-09-22
              相关资源
              最近更新 更多