laravel使用dompdf中文乱码问题

github上已经有大佬封装好laravel下注册服务容器即可使用的dompdf版本。我使用的时候遇到乱码问题,然后直接从网上直接搜了几个教程,都是直接说,安装好字体文件,即可修复乱码问题。我参考博客,安装完字体文件,字体文件已生成后,依旧乱码。后来发现是默认生成的配置文件,指向的字体库路径,覆盖了类构造方法生成的默认字体库路径。默认生成的配置文件config/dompdf.php,修改默认配置项

//默认配置项
//"font_dir" => storage_path('fonts/'),
//"font_cache" => storage_path('fonts/'),
//指向字体库生成的路径
"font_dir" => realpath(base_path())."/vendor/dompdf/dompdf/lib/fonts",
"font_cache" =>realpath(base_path())."/vendor/dompdf/dompdf/lib/fonts",

重新生成pdf,乱码已经解决。以下简单说一下操作步骤。

字体库安装脚本以及中文字体。中文字体库直接从本地,系统字体库目录拷贝一个过来即可,拷贝是为了迁移方便。我系统盘是C盘。字体库目录在C:\Windows\Fonts。比如我使用的黑体C:\Windows\Fonts\simhei.ttf。拷贝到laravel项目根目录,执行生成字体库以及配置命令

//生成黑体配置
php load_font.php simhei simhei.ttf

编写测试用例,这里生成了三个pdf文件,分别是不使用中文字体,以及使用黑体以及之前装好的宋体

public function font($font){
        $dom=PDF::loadHTML("<h1 style='font-family: $font'>你好,世界</h1>");
        $dom->save($font.'.pdf');
    }
//测试用例
    public function testPdf(){
        $this->font('');
        $this->font('simsun');
        $this->font('simhei');
    }

这里,对比一下三个生成的pdf文件体积

 

能看到,使用了字体库,和没使用字体库的文件体积差了几千倍。所以发现中文乱码的时候可以先观察一下,pdf文件体积,确认有没有使用字体库。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

无限超频

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值