使用FPDF与FPDI编辑PDF时遭遇Class 'setasign\Fpdi\FpdfTpl'未找到错误
解决FPDI中"Class 'setasign\Fpdi\FpdfTpl' not found"报错问题
嘿,我之前也踩过这个坑!这个错误本质是FPDI依赖的核心类没被正确加载,大概率是你引入文件的顺序或者路径出问题了,咱们一步步来搞定:
核心问题:自动加载机制没生效
你现在的代码先手动引入了Fpdf.php和Fpdi.php,再加载autoload.php,这顺序完全搞反了!autoload.php的作用就是自动帮你加载所有需要的类(包括FpdfTpl),手动提前引入单个文件会打乱这个加载逻辑。
第一步:修正文件引入顺序
把代码开头改成这样,直接用自动加载搞定所有依赖:
// 先加载自动加载文件,它会处理所有类的引入 require_once('fpdi/src/autoload.php'); // 再引入FPDI的命名空间 use setasign\Fpdi\Fpdi;
别再手动引入fpdf.php和Fpdi.php了,autoload.php会自动找到它们。
第二步:检查文件结构是否完整
确认你的fpdi/src目录里确实有FpdfTpl.php这个文件,如果没有,说明你下载的FPDI包不完整,得重新下载包含所有核心文件的版本。正常的目录结构应该是这样:
你的项目目录/ ├── fpdf/ │ └── fpdf.php ├── fpdi/ │ └── src/ │ ├── autoload.php │ ├── Fpdi.php │ ├── FpdfTpl.php │ └── 其他FPDI相关类文件 └── 你的脚本.php
第三步:补全PDF编辑代码
看你的代码写到一半断了,给你补全完整的编辑流程,确保能正常导入并编辑PDF:
require_once('fpdi/src/autoload.php'); use setasign\Fpdi\Fpdi; // 初始化FPDI $pdf = new Fpdi(); // 添加一页(也可以直接导入原PDF的页面) $pdf->AddPage(); // 指定要编辑的源PDF文件 $pdf->setSourceFile('documento.pdf'); // 导入第1页 $tplIdx = $pdf->importPage(1); // 将导入的页面作为模板放到当前页面,参数是模板ID、X坐标、Y坐标、宽度 $pdf->useTemplate($tplIdx, 10, 10, 190); // 这里添加你要编辑的内容,比如插入文字 $pdf->SetFont('Arial', '', 12); $pdf->SetTextColor(0, 0, 0); $pdf->SetXY(30, 30); $pdf->Write(0, '这里是我添加的自定义内容!'); // 输出PDF,'I'表示在浏览器打开,'D'是下载,'F'是保存到服务器 $pdf->Output('编辑后的文档.pdf', 'I');
额外注意点
- 确保
documento.pdf的路径正确,如果和脚本不在同一目录,就用绝对路径(比如C:\wamp\www\Ale\documento.pdf)。 - 如果是用Composer安装的FPDI,直接引入
vendor/autoload.php就行,更省心,不需要手动下载FPDF和FPDI的文件。
内容的提问来源于stack exchange,提问作者Alejandro Piñero
相关产品推荐
相关产品推荐

