Laravel集成Mpdf报错:找不到Mpdf\Fonts\Config\ConfigVariables类
解决Laravel集成Mpdf时的类找不到问题
问题背景
参照未使用命名空间的教程在Laravel中集成Mpdf时,出现类找不到错误,报错信息:
Class "Mpdf\Fonts\Config\ConfigVariables" not found
以下是相关路由代码:
use Illuminate\Support\Facades\Route; use App\Http\Controllers\PdfTestController; Route::get('/', function () { return view('welcome'); }); // Route::get('/pdfTest', [PdfTestController::class, 'index']); Route::get('/pdfTest', function(){ $defaultConfig = (new \Mpdf\Config\ConfigVariables())->getDefaults(); $fontDirs = $defaultConfig['fontDir']; $defaultFontConfig = (new \Mpdf\Config\FontVariables())->getDefaults(); $fontData = $defaultFontConfig['fontData']; $path = public_path() . "/fonts"; $mpdf = new \Mpdf\Mpdf([ 'format' => 'A4', 'orientation' => 'P', 'fontDir' => array_merge($fontDirs, [$path]), 'fontData' => $fontData + [ 'solaimanlipi' => [ 'R' => 'SolaimanLipi.ttf', 'useOTL' => 0xFF, ], ], 'default_font' => 'solaimanlipi' ]); $mpdf->WriteHTML(view('card-download-test')); $mpdf->Output('card.pdf', 'I'); });
解决方案
1. 适配Mpdf新版本命名空间
该错误是因为Mpdf版本更新后调整了命名空间,ConfigVariables和FontVariables的命名空间已从\Mpdf\Config迁移到\Mpdf\Fonts\Config,直接修改代码中的命名空间引用即可。
2. 修正后的代码
use Illuminate\Support\Facades\Route; use App\Http\Controllers\PdfTestController; Route::get('/', function () { return view('welcome'); }); // Route::get('/pdfTest', [PdfTestController::class, 'index']); Route::get('/pdfTest', function(){ // 修正ConfigVariables命名空间 $defaultConfig = (new \Mpdf\Fonts\Config\ConfigVariables())->getDefaults(); $fontDirs = $defaultConfig['fontDir']; // 修正FontVariables命名空间 $defaultFontConfig = (new \Mpdf\Fonts\Config\FontVariables())->getDefaults(); $fontData = $defaultFontConfig['fontData']; $path = public_path() . "/fonts"; $mpdf = new \Mpdf\Mpdf([ 'format' => 'A4', 'orientation' => 'P', 'fontDir' => array_merge($fontDirs, [$path]), 'fontData' => $fontData + [ 'solaimanlipi' => [ 'R' => 'SolaimanLipi.ttf', 'useOTL' => 0xFF, ], ], 'default_font' => 'solaimanlipi' ]); $mpdf->WriteHTML(view('card-download-test')); $mpdf->Output('card.pdf', 'I'); });
3. 额外检查事项
- 确认Mpdf依赖安装完整:执行
composer require mpdf/mpdf或composer update mpdf/mpdf确保版本正确。 - 验证字体文件路径:确认
SolaimanLipi.ttf存在于public/fonts目录下,路径无误。
内容的提问来源于stack exchange,提问作者Tarikul Islam
相关产品推荐
相关产品推荐

