Laravel中使用FPDI添加自定义字体报错如何解决?
Laravel中FPDI添加自定义字体报错的解决方案
问题描述
在Laravel项目中使用FPDI扩展包添加自定义字体时,已通过工具生成suisseIntl-regular.php和SuisseIntl-Regular.z文件并放置在public/fonts/目录,但运行代码时出现错误:
FPDF error: Incorrect font definition file name: /Users/a/Documents/Sites/w-c-backend/public/fonts/suisseIntl-segular.php
核心原因
代码中引用字体文件时出现拼写错误:将suisseIntl-regular.php误写为suisseIntl-segular.php(regular被错写为segular),导致系统找不到正确的字体定义文件。
解决步骤
修正文件名拼写
把代码中的字体文件路径修正为正确的文件名:$pdf->AddFont('SuisseIntl-Regular', '', public_path('fonts/suisseIntl-regular.php'));调整代码执行顺序
确保AddFont方法在AddPage之前调用,避免页面加载后字体无法正常注册:$pdf = new \setasign\Fpdi\Fpdi(); // 先注册字体,再添加页面 $pdf->AddFont('SuisseIntl-Regular', '', public_path('fonts/suisseIntl-regular.php')); $pdf->AddPage();验证文件完整性与路径
- 确认
suisseIntl-regular.php和SuisseIntl-Regular.z两个文件都在public/fonts/目录下,缺一不可; - 可通过
dd(public_path('fonts/suisseIntl-regular.php'))打印实际路径,核对是否与文件的真实存储路径一致; - 注意系统的大小写敏感性,确保代码中的文件名与实际文件名完全匹配(包括大小写)。
- 确认
修正后的完整代码
$pdf = new \setasign\Fpdi\Fpdi(); $pdf->AddFont('SuisseIntl-Regular', '', public_path('fonts/suisseIntl-regular.php')); $pdf->AddPage(); $pdf->setSourceFile('PdfDocument.pdf'); $tplIdx = $pdf->importPage(1); $pdf->useTemplate($tplIdx, 10, 10, 100); $pdf->SetFont('SuisseIntl-Regular'); $pdf->SetTextColor(255, 0, 0); $pdf->SetXY(30, 30); $pdf->Write(0, 'This is just a simple text'); $pdf->Output('I', 'generated.pdf');
内容的提问来源于stack exchange,提问作者rabie ali
相关产品推荐
相关产品推荐

