Laravel Maatwebsite与Dompdf转PDF问题:谷歌字体报错及配置疑问
Laravel PDF转换问题解决方案
一、谷歌字体加载报错解决方法
不管是Maatwebsite还是dompdf,远程加载谷歌字体容易因解析逻辑、远程资源限制等问题报错,推荐本地引入字体文件:
- 下载目标字体(如Varela Round)的字体文件(推荐ttf/woff2格式),放到项目
public/fonts/目录下 - 在HTML的
<style>标签中通过@font-face引入本地字体:
@font-face { font-family: 'Varela Round'; src: url('/fonts/VarelaRound-Regular.ttf') format('truetype'); font-weight: normal; font-style: normal; }
- 在需要使用该字体的元素样式中指定:
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
相关产品推荐
相关产品推荐

