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

使用FPDF生成PDF后下载显示.php后缀的解决方法

解决FPDF生成文件后缀为.php的问题

这个问题的核心是你没有明确指定输出文件的名称和类型,导致浏览器默认以PHP脚本的后缀来处理文件。下面是两种简单有效的解决方法:

方法1:直接通过FPDF的Output方法指定文件名

FPDF的Output()方法支持参数来控制输出行为和文件名,你只需要修改pdf.php里的输出代码:

<?php 
require ("fpdf/fpdf.php"); 
$name = "Amit Samadder"; 
$pdf = new FPDF('p','mm','A4'); 
$pdf->AddPage(); 
$pdf->SetFont("Arial","B","20"); 
$pdf->Cell(100,10, $name, 1,0, "C"); 
// 修改这里:第一个参数'D'表示强制下载,第二个是带.pdf后缀的文件名
$pdf->Output('D', 'my_document.pdf'); 
?>
  • 'D' 参数:告诉浏览器触发文件下载,而不是直接在浏览器内打开
  • 'my_document.pdf':指定下载后的文件名,明确带.pdf后缀,这样移动端下载时也会识别为PDF文件

方法2:手动设置HTTP响应头(更灵活)

如果你需要更精细地控制HTTP响应,可以在输出PDF之前添加响应头,明确告诉浏览器这是一个PDF文件:

<?php 
// 先设置响应头,必须在任何输出之前(包括空格、换行)
header('Content-Type: application/pdf');
header('Content-Disposition: attachment; filename="my_document.pdf"');

require ("fpdf/fpdf.php"); 
$name = "Amit Samadder"; 
$pdf = new FPDF('p','mm','A4'); 
$pdf->AddPage(); 
$pdf->SetFont("Arial","B","20"); 
$pdf->Cell(100,10, $name, 1,0, "C"); 
// 这里用'I'表示在浏览器内显示,或者用'D'强制下载,配合上面的头都会正确识别后缀
$pdf->Output('I'); 
?>

重要注意事项

  • 确保pdf.php的<?php标签之前没有任何空白字符、换行或输出,否则HTTP头会发送失败,导致文件无法正确识别
  • 两种方法选其一即可,不需要同时使用

内容的提问来源于stack exchange,提问作者A.S.Abir

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:35:35