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

Laravel Maatwebsite与Dompdf转PDF问题:谷歌字体报错及配置疑问

Laravel PDF转换问题解决方案

一、谷歌字体加载报错解决方法

不管是Maatwebsite还是dompdf,远程加载谷歌字体容易因解析逻辑、远程资源限制等问题报错,推荐本地引入字体文件:

  1. 下载目标字体(如Varela Round)的字体文件(推荐ttf/woff2格式),放到项目public/fonts/目录下
  2. 在HTML的<style>标签中通过@font-face引入本地字体:
@font-face {
    font-family: 'Varela Round';
    src: url('/fonts/VarelaRound-Regular.ttf') format('truetype');
    font-weight: normal;
    font-style: normal;
}
  1. 在需要使用该字体的元素样式中指定:
body, .text-element {
    font-family: 'Varela Round', sans-serif;
}

二、Maatwebsite对应配置及方法设置

Maatwebsite(Laravel Excel的PDF模块)底层默认使用dompdf,以下是对应设置方式:

方式1:代码内动态设置

直接在导出代码中配置选项和页面参数,与dompdf的调用逻辑一致:

use Maatwebsite\Excel\Facades\Pdf;

$options = [
    'defaultFont' => 'sans-serif',
    'isRemoteEnabled' => true,
    'isJavascriptEnabled' => false,
    'debugKeepTemp' => true,
    'isHtml5ParserEnabled' => true,
    // 注:enable_html5_parser为dompdf旧版参数,新版用isHtml5ParserEnabled,二者保留其一即可
];

return Pdf::setOptions($options)
    ->loadHTML($html)
    ->setWarnings(false) // 关闭警告输出
    ->setPaper('a3', 'landscape') // 设置A3纸张横向布局
    ->download('export_tickets.pdf');

方式2:全局配置文件设置

如果需要所有PDF导出都使用统一配置,先发布配置文件:

php artisan vendor:publish --provider="Maatwebsite\Excel\ExcelServiceProvider"

编辑config/excel.php文件,找到pdf节点修改配置:

'pdf' => [
    'enabled' => true,
    'driver' => 'dompdf', // 确保使用dompdf驱动
    'options' => [
        'defaultFont' => 'sans-serif',
        'isRemoteEnabled' => true,
        'isJavascriptEnabled' => false,
        'debugKeepTemp' => true,
        'isHtml5ParserEnabled' => true,
    ],
    'paper' => 'a3',
    'orientation' => 'landscape',
    'warnings' => false,
],

内容的提问来源于stack exchange,提问作者B L Praveen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 08:57:15