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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 19:09:52