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

使用laravel-pdf转换韩文内容显示为问号乱码如何解决

问题根因

你使用的laravel-pdf包底层默认基于dompdf渲染PDF,存在两个核心问题导致韩文乱码:

  1. dompdf不支持通过@import加载的远程Google字体,你引入的韩文字体实际没有被PDF渲染器识别
  2. 你写的font-family属性顺序错误,后声明的字体会覆盖前面的字体,韩文字体被后续的英文字体完全覆盖,而dompdf自带的默认字体无韩文编码,最终显示为问号

解决步骤

1. 下载韩文字体到本地

将需要用到的韩文支持字体(比如Noto Sans KR)的ttf格式字体文件下载到项目的public/fonts目录下,确保目录存在且有可读权限。

2. 修正Blade视图的样式代码

删掉原有的@import远程字体引入,改用@font-face加载本地字体,同时调整字体声明顺序:

<!DOCTYPE html>
<html lang="ko">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <style>
        /* 引入本地韩文支持字体 */
        @font-face {
            font-family: 'Noto Sans KR';
            src: url({{ public_path('fonts/NotoSansKR-Regular.ttf') }}) format('truetype');
            font-weight: normal;
            font-style: normal;
        }
        @font-face {
            font-family: 'Noto Sans KR';
            src: url({{ public_path('fonts/NotoSansKR-Bold.ttf') }}) format('truetype');
            font-weight: bold;
            font-style: normal;
        }
        * {
            /* 韩文字体放最前面优先生效 */
            font-family: 'Noto Sans KR', 'Open Sans', 'Roboto', 'Single Day', sans-serif;
        }
    </style>
</head>
<body>
    <div>
        <h2>Hello, world~!</h2>
        <h1>안녕 세상아~~!</h1>
    </div>
</body>
</html>

3. (可选)调整dompdf配置

如果修改后还是乱码,执行以下操作调整配置:

  1. 发布dompdf配置文件:
php artisan vendor:publish --provider="Barryvdh\DomPDF\ServiceProvider"
  1. 打开config/dompdf.php,修改以下配置:
// 字体存储目录,确保该目录有可写权限
'font_dir' => storage_path('fonts/'),
'font_cache' => storage_path('fonts/'),
// 允许加载本地资源
'is_remote_enabled' => true,
  1. 给字体缓存目录加权限:
mkdir -p storage/fonts
chmod -R 755 storage/fonts

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 06:15:02