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

FPDF添加页眉页脚后生成空白页及引入文件异常求助

FPDF添加页眉页脚后空白页问题排查与解决

核心问题拆解

  • 重复引入或路径错误:注释require语句后能正常显示,说明当前环境里FPDF类已经被加载(比如通过PHP配置自动引入),重复引入会触发类重定义错误,错误输出会破坏PDF的二进制格式,直接导致空白页。
  • 图片加载失败:Header方法里的Image路径是../tmp/headers/header2.,缺少文件后缀(比如.png或.jpg),FPDF无法识别并加载图片,会抛出错误中断PDF生成流程。
  • 未知字体方法调用:原生FPDF没有AddGBFont()和AddBig5Font()这两个方法,如果没自定义扩展这两个功能,调用会触发致命错误。

修复步骤

  1. 处理FPDF引入逻辑

    • 先检查环境是否已自动加载FPDF(比如php.ini的auto_prepend_file配置),如果是,就保留require的注释;如果没有自动加载,确认/usr/share/php/fpdf/fpdf.php路径正确,并且用require_once替代require避免重复引入:
      require_once '/usr/share/php/fpdf/fpdf.php';
      
  2. 修复Header中的图片路径

    • 补充图片的正确后缀,比如是PNG格式就改成:
      $this->Image("../tmp/headers/header2.png",0,0,210);
      
    • 同时确认图片文件真实存在,路径是相对于当前执行脚本的位置(不确定的话可以用绝对路径测试)。
  3. 清理未定义的字体方法

    • 如果没有自定义中文字体扩展,直接删除$pdf->AddGBFont();和$pdf->AddBig5Font();这两行;如果用了支持中文的FPDF扩展,先确认扩展文件已正确引入。
  4. 不要手动调用Header

    • FPDF的Header()方法会在执行AddPage()时自动触发,不需要手动调用,保持代码里不执行$pdf->Header()即可。

修复后的示例代码

require_once '/usr/share/php/fpdf/fpdf.php';

class PDF extends FPDF
{
    // 页面页眉
    function Header()
    {
        // 修复图片路径,添加正确后缀
        $this->Image("../tmp/headers/header2.png",0,0,210);
        $this->SetFont('Arial','B',15);
        $this->Cell(80);
        $this->Cell(30,10,'Title',1,0,'C');
        $this->Ln(20);
    }

    // 页面页脚
    function Footer()
    {
        $this->SetY(-15);
        $this->SetFont('Arial','I',8);
        $this->Cell(0,10,'Page '.$this->PageNo().'/{nb}',0,0,'C');
    }
}

// 实例化继承类
$pdf = new PDF();
$pdf->AliasNbPages();
$pdf->AddPage();
// 添加报表内容
$pdf->SetFont('Arial','',12);
$pdf->Cell(0,10,'报表内容示例',0,1);
$pdf->Output();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 19:30:52