mPDF (PHP) 无法识别 html 复选标记

mPDF (PHP) does not recognize html check mark

我在我的网页上的 HTML 中显示了一个 table,其中正确显示了复选标记(我使用 ✔ 作为粗体复选标记)。

我正在使用经典-asp 来显示 HTML。 html 构建(tableOutput)随后被发布到 PHP 脚本($output = $_POST["output"]),该脚本使用 mPDF.php(版本 6.0)来将相同的 HTML table 打印为 PDF 并且复选标记无法正确打印(%u2714 打印在我的 PDF 上)。其余table都打印正确,只有对勾有问题

我尝试在 mpdf\ttfonts 文件夹中添加 Symbola.ttf 和 Symbola_hint.ttf 字体,但没有成功。

HTML(经典-asp):

tableOutput = tableOutput & "<TD class='center pass_x' style='font-family:symbola;'>&#10004;</TD>"

PHP (create_report_pdf.php):

$output = $_POST["output"];  //This is the html buildup tableOutput discussed previously
$header = Irrelevant;
$footer= Irrelevant;

$mpdf = new mPDF( 'utf-8', 'A4-L', 0, '', 5, 5, 20, 20);
$mpdf->allow_charset_conversion = true;
$mpdf->WriteHTML($style,1);
$mpdf->SetHTMLHeader( $header );
$mpdf->SetHTMLFooter( $footer );
$mpdf->WriteHTML( $output );
$mpdf->Output($temp ,'F' );

config_fonts.php(我在mpdf\ttfonts文件夹中添加了symbola.ttf和Symbola_hint.ttf):

$this->fontdata = array (
        "symbola"  => array (
                'R' => "Symbola.ttf",
                'I' => "Symbola_hint.ttf",
        ),

CSS(PHP $style 变量指向 create_report_pdf.css):

.report-table{ 
    border: 1px solid black;
    border-collapse: collapse;
    font-size: 7pt; 
    width: 100%;
} 

th,td{ 
    font-size: 7pt; 
    border: 1px solid black !important;
    vertical-align : middle;
}

.center{ text-align: center; vertical-align: middle; }

INPUT{
    border-color:#ffffff !important;
}

.pf{ width: 45px; }
.fix-cell{ width: 90px; }
.dr-column, .dr-input{ width: 100px; }
.comments, .comments-input{ width: 130px; }

非常感谢您的帮助

有两种可能的解决方案:

  • 通过执行以下操作,将 %u2714 手动替换为相应的 html 实体 &#10004;
$output = str_replace('%u2714', '&#10004;', $output);
  • 实施更通用的方法来处理所有此类特殊字符。该方法基于以下事实:%uXXXX 是 URL-encoding Unicode 字符的 non-standard 符号方案。因此,您需要将 %uXXXX 表示法转换为 HTML 实体表示法 &#xXXXX;,然后可以通过 html_entity_decode.
  • 将其解码为实际的 UTF-8
$output = preg_replace('/%u([0-9A-F]+)/', '&#x;', $output);
$output = html_entity_decode($output, ENT_COMPAT, 'UTF-8');