FPDF添加页眉页脚后生成空白页及引入文件异常求助
FPDF添加页眉页脚后空白页问题排查与解决
核心问题拆解
- 重复引入或路径错误:注释
require语句后能正常显示,说明当前环境里FPDF类已经被加载(比如通过PHP配置自动引入),重复引入会触发类重定义错误,错误输出会破坏PDF的二进制格式,直接导致空白页。 - 图片加载失败:Header方法里的
Image路径是../tmp/headers/header2.,缺少文件后缀(比如.png或.jpg),FPDF无法识别并加载图片,会抛出错误中断PDF生成流程。 - 未知字体方法调用:原生FPDF没有
AddGBFont()和AddBig5Font()这两个方法,如果没自定义扩展这两个功能,调用会触发致命错误。
修复步骤
处理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';
- 先检查环境是否已自动加载FPDF(比如php.ini的
修复Header中的图片路径
- 补充图片的正确后缀,比如是PNG格式就改成:
$this->Image("../tmp/headers/header2.png",0,0,210); - 同时确认图片文件真实存在,路径是相对于当前执行脚本的位置(不确定的话可以用绝对路径测试)。
- 补充图片的正确后缀,比如是PNG格式就改成:
清理未定义的字体方法
- 如果没有自定义中文字体扩展,直接删除
$pdf->AddGBFont();和$pdf->AddBig5Font();这两行;如果用了支持中文的FPDF扩展,先确认扩展文件已正确引入。
- 如果没有自定义中文字体扩展,直接删除
不要手动调用Header
- FPDF的
Header()方法会在执行AddPage()时自动触发,不需要手动调用,保持代码里不执行$pdf->Header()即可。
- FPDF的
修复后的示例代码
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
相关产品推荐
相关产品推荐

