解决使用 mPDF 导出 PDF 时中文及符号乱码问题

在开发导出 PDF 时,选择了使用mPDF,mPDF 是一个 PHP 库,它从 UTF-8 编码的 HTML 生成 PDF 文件。

而它的使用也相对简单:

安装

使用composer加载

composer require mpdf/mpdf

使用

<?php

require_once __DIR__ . '/vendor/autoload.php';

$mpdf = new \Mpdf\Mpdf();
$mpdf->WriteHTML('<h1>Hello world!</h1>');
$mpdf->Output();

但是在实际使用时会遇到中文和符号乱码(变成了小方块)的问题,最开始会想到是字体的问题,但是指定了字体后,并没有解决问题。

mpdf中文和符号乱码

查看了文档后发现需要指定两个参数:

$this->pdf = new Mpdf([
    'autoScriptToLang' => true,
    'autoLangToFont'   => true,
]);

刷新页面,发现中文此时已经可以正常显示了

mpdf中文正常,符号依旧是方块

但是当中文的标点符号靠近英文的时候,中文符号就又会变回小方块。

再添加一个配置项代码,解决符号的问题:

$this->pdf = new Mpdf([
    'autoScriptToLang' => true,
    'autoLangToFont'   => true,
    'useSubstitutions' => true,
]);

mpdf导出正常

至此,解决了中文和标点符号乱码的问题。

2 条评论

发表评论

*