You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel Blade使用mpdf包生成PDF时FontAwesome 5图标不显示如何解决

修复步骤

  1. 修正字体配置
    你当前配置中将不同样式的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', // 实心样式图标字体
        ]
    ]
];
?>
  1. 调整CSS与图标调用方式
    mPDF无法识别Font Awesome默认通过伪元素注入的图标内容,需要直接调用图标Unicode编码:
    首先修改视图CSS:
/* 实心图标类 */
.fas {
    font-family: 'fa-solid';
}
/* 常规图标类 */
.far {
    font-family: 'fa-regular';
}

视图内调用图标时直接写对应Unicode,比如首页图标f015写法如下:

<span class="fas">&#xf015;</span>

可自行查询对应图标的Unicode编码使用。

  1. 清除mPDF字体缓存
    mPDF会将解析后的字体文件缓存到storage/mpdf/目录,配置修改后需要删除所有缓存文件生效:
rm -rf storage/mpdf/*
  1. 确认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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 14:57:04