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

使用PHP+FPDF从MySQL导出数据生成空PDF问题求助

兄弟,我来帮你捋捋这个FPDF生成空PDF的问题,大概率是这几个环节出了问题,你一步步排查试试:

排查空PDF问题的核心方向
  • 先确认数据库查询是否真的返回数据
    你可以在执行数据库查询后,加一行var_dump($result)或者print_r(mysqli_fetch_all($result)),直接打印查询结果看看有没有拿到数据。要是SQL语句写错(比如表名/字段名拼错、WHERE条件太严格),或者数据库里本来就没对应数据,那PDF自然是空的。

  • 检查FPDF的内容添加逻辑是否完整
    很多新手会犯的错:实例化FPDF后直接输出,忘了做这两个关键步骤:

    1. 调用AddPage()添加页面(没页面的话内容没地方放)
    2. 用Cell()/MultiCell()/Write()这些方法往页面里写内容
      给你个极简的正确示例参考:
    $pdf = new FPDF();
    $pdf->AddPage(); // 必须先加页面!
    $pdf->SetFont('Arial','B',16);
    $pdf->Cell(40,10,'测试内容'); // 往页面添加内容
    $pdf->Output();
    

    要是你漏了这两步,PDF肯定是空的。

  • 排查输出前的多余内容
    PHP在输出PDF的HTTP头之前,绝对不能有任何额外输出——包括PHP标签外的空格、换行、调试用的echo语句,甚至是文件开头<?php前面的空白。这些看不见的内容会破坏PDF的结构,导致打开后为空。
    应急解决可以在$pdf->Output();前加ob_clean();清空输出缓冲区,但最好还是找到多余输出的地方删掉。

  • 检查编码与字体适配(如果输出中文)
    FPDF默认不支持中文,要是你导出的是中文内容,必须先引入支持中文的字体文件(比如适配GB2312的字体),不然中文会被直接过滤,看起来就是空PDF。如果是英文内容,也要确认SetFont()里的字体名是正确的(比如默认的Arial是可用的,别拼错)。

  • 验证PDF输出的HTTP头是否正确
    确保在输出PDF前设置了正确的头信息,比如:

    header('Content-Type: application/pdf');
    header('Content-Disposition: attachment; filename="exported_data.pdf"');
    

    头信息必须在任何输出(包括FPDF的输出)之前发送,不然可能导致PDF文件渲染异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 08:55:59