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

Laravel dompdf乌尔都语内容渲染异常问题求助

解决Dompdf渲染乌尔都语字符拆分问题

针对你遇到的Dompdf渲染乌尔都语时字符拆分的问题,可按以下步骤解决:

  • 开启RTL布局与字体连写支持
    乌尔都语是从右到左(RTL)的连写脚本,Dompdf默认未启用RTL支持,需手动配置:

    1. 在Blade视图的CSS中为乌尔都语文本添加RTL属性:
      .urdu-content {
          font-family: 'Noto Nastaliq Urdu', 'DejaVu Sans', sans-serif;
          direction: rtl;
          unicode-bidi: embed;
          font-size: 18px;
      }
      
    2. 生成PDF时启用RTL和字体子集化(以barryvdh/laravel-dompdf为例):
      $pdf = PDF::loadView('your-view-file')
                  ->setOptions([
                      'enable_rtl' => true,
                      'font_subsetting' => true,
                  ]);
      
      也可在config/dompdf.php中全局设置'enable_rtl' => true。
  • 确保字体正确加载
    将支持乌尔都语的字体文件(如NotoNastaliqUrdu-Regular.ttf)放入项目public/fonts目录,若自动加载失败,可手动注册字体:

    $dompdfInstance = $pdf->getDomPDF();
    $dompdfInstance->getFontMetrics()->registerFont([
        'family' => 'Noto Nastaliq Urdu',
        'style' => 'normal',
        'weight' => 'normal',
        'src' => public_path('fonts/NotoNastaliqUrdu-Regular.ttf'),
    ]);
    
  • 检查编码与容器设置

    1. 在Blade视图头部添加UTF-8编码声明:
      <meta charset="UTF-8">
      
    2. 避免给乌尔都语文本设置letter-spacing、white-space: nowrap等破坏连写的CSS属性,同时确保容器有足够宽度,防止强制换行导致字符断裂。

这些操作的核心是让Dompdf正确识别乌尔都语的RTL布局规则和字符连写特性,从而避免字符拆分问题。

内容的提问来源于stack exchange,提问作者Muhammad Noman

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 01:37:17