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

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),导致系统找不到正确的字体定义文件。

解决步骤

  1. 修正文件名拼写
    把代码中的字体文件路径修正为正确的文件名:

    $pdf->AddFont('SuisseIntl-Regular', '', public_path('fonts/suisseIntl-regular.php'));
    
  2. 调整代码执行顺序
    确保AddFont方法在AddPage之前调用,避免页面加载后字体无法正常注册:

    $pdf = new \setasign\Fpdi\Fpdi();
    // 先注册字体,再添加页面
    $pdf->AddFont('SuisseIntl-Regular', '', public_path('fonts/suisseIntl-regular.php'));
    $pdf->AddPage();
    
  3. 验证文件完整性与路径

    • 确认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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 08:37:06