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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 01:17:39