Laravel Blade使用mpdf包生成PDF时FontAwesome 5图标不显示如何解决
修复步骤
- 修正字体配置
你当前配置中将不同样式的Font Awesome字体归为同一个字体族的常规/粗体,会导致字体解析异常,修改/config/pdf.php配置如下:
<?php return [ 'custom_font_dir' => base_path('resources/fonts/'), // 不要遗漏末尾斜杠 'custom_font_data' => [ 'fa-regular' => [ 'R' => 'fa-regular-400.ttf', // 常规样式图标字体 ], 'fa-solid' => [ 'R' => 'fa-solid-900.ttf', // 实心样式图标字体 ] ] ]; ?>
- 调整CSS与图标调用方式
mPDF无法识别Font Awesome默认通过伪元素注入的图标内容,需要直接调用图标Unicode编码:
首先修改视图CSS:
/* 实心图标类 */ .fas { font-family: 'fa-solid'; } /* 常规图标类 */ .far { font-family: 'fa-regular'; }
视图内调用图标时直接写对应Unicode,比如首页图标f015写法如下:
<span class="fas"></span>
可自行查询对应图标的Unicode编码使用。
- 清除mPDF字体缓存
mPDF会将解析后的字体文件缓存到storage/mpdf/目录,配置修改后需要删除所有缓存文件生效:
rm -rf storage/mpdf/*
- 确认PDF生成参数
生成PDF时确保自定义字体配置被正确加载,示例代码如下:
$pdf = PDF::loadView('你的视图路径', compact('传递到视图的变量'), [], [ 'format' => 'A4', 'fontDir' => [base_path('resources/fonts/')], 'fontdata' => config('pdf.custom_font_data') ]); return $pdf->download('导出文件.pdf');
补充注意事项
- 请确认你使用的Font Awesome TTF文件没有损坏,版本建议选择5.x,对mPDF 8.x的兼容性更好
- 不要在图标元素上额外设置
font-weight属性,避免触发字体匹配异常
内容的提问来源于stack exchange,提问作者Shwetha
相关产品推荐
相关产品推荐

