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

使用FPDI编辑PDF时出现setasign\Fpdi\FpdfTpl类未找到错误

解决FPDI报错“Class 'setasign\Fpdi\FpdfTpl' not found”

核心问题分析

报错根源是类加载顺序错误或自动加载机制未正确生效:Fpdi.php中依赖FpdfTpl类,但该类未被正确加载。结合你的PHP8.2 + FPDI2.4.1环境,给出以下针对性解决方案:


方案1:优先使用Composer自动加载(推荐)

FPDI的依赖管理和类加载设计基于Composer,手动引入文件极易出错,步骤如下:

  1. 确保项目根目录下的composer.json包含正确依赖:
    {
        "require": {
            "setasign/fpdi": "^2.4",
            "setasign/fpdf": "^1.8"
        }
    }
    
  2. 执行命令安装/更新依赖:
    composer install
    
  3. 替换代码中的所有include语句,只保留Composer自动加载:
    <?php
    require __DIR__ . '/vendor/autoload.php';
    
    use setasign\Fpdi\Fpdi;
    
    $pdf = new Fpdi();
    
    // 获取PDF总页数
    $pageCount = $pdf->setSourceFile('C:/wamp/www/QRCode/fichiers_uploades/UN25042019161632012774.pdf');
    // 遍历所有页面
    for ($pageNo = 1; $pageNo <= $pageCount; $pageNo++) {
        $templateId = $pdf->importPage($pageNo);
        $pdf->AddPage();
        $pdf->useTemplate($templateId, ['adjustPageSize' => true]);
        
        // 添加图片
        $image = 'QRCodes/CodeQR1.png';
        $pdf->Image($image, 110, 210);
    }
    
    $file_name2 = 'C:/wamp/www/QRCode/fichiers_generes/UN25042019161632012774.pdf';
    $pdf->Output($file_name2, 'F');
    ?>
    

方案2:手动引入文件(仅当无法使用Composer时)

若必须手动引入,需严格保证类加载顺序,并使用绝对路径避免路径问题:

  1. 调整include顺序,优先引入自动加载器(会自动处理所有依赖类):
    <?php
    // 引入FPDF核心文件
    require __DIR__ . '/FPDF/fpdf.php';
    // 引入FPDI自动加载器,无需单独引入Fpdi.php或FpdfTpl.php
    require __DIR__ . '/fpdi/src/autoload.php';
    
    use setasign\Fpdi\Fpdi;
    
    $pdf = new Fpdi();
    
    // 后续逻辑同方案1
    ?>
    

额外检查点

  • 路径验证:用__DIR__拼接绝对路径,避免相对路径导致的文件找不到问题。
  • 权限检查:确保PHP进程能读取fpdi/src目录下的所有文件。
  • 缓存清理:若开启了PHP opcache,清空缓存避免旧缓存干扰类加载。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 17:55:17