Laravel生成PDF无法显示阿拉伯字符问题求助
解决Laravel PDF生成中阿拉伯语显示为"?????"的问题
核心修复步骤
1. 确保字体文件正确部署
仅指定字体名称无效,必须将支持阿拉伯语的字体文件(如arial.ttf、arialbd.ttf)放到项目可访问的字体目录:
- 复制字体文件到
storage/fonts目录 - 若使用
barryvdh/laravel-dompdf,也可放到vendor/barryvdh/laravel-dompdf/resources/fonts目录
2. 给视图中的阿拉伯语内容指定样式
在Blade视图文件(backend.salary.payslip.pdf)中,为阿拉伯语元素添加专用样式,强制从右到左排版:
.arabic-content { font-family: 'Arial', sans-serif; direction: rtl; unicode-bidi: embed; text-align: right; }
视图中调用阿拉伯语数据时应用该类:
<div class="arabic-content">{{ $employee->arabic_name }}</div>
3. 修正视图参数传递逻辑
你的代码中loadView的参数传递错误,需用关联数组传递数据:
// 若薪资单对应单个员工,建议用find而非get()获取单条数据 $employee = Employee::find($payslip->employee_id); $pdf = PDF::loadView('backend.salary.payslip.pdf', [ 'payslip' => $payslip->toArray(), 'employee' => $employee ]);
4. 补充Dompdf编码配置
在setOptions中添加UTF-8编码相关配置,确保解析时支持多语言:
PDF::setOptions([ 'dpi' => 150, 'defaultFont' => 'Arial', 'tempDir' => storage_path('temp'), 'charset' => 'UTF-8', 'isHtml5ParserEnabled' => true ]);
5. 校验数据库数据编码
检查存储阿拉伯语的数据库表字段编码是否为utf8mb4_unicode_ci,确保数据本身未乱码。
内容的提问来源于stack exchange,提问作者Hagar Maher
相关产品推荐
相关产品推荐

