使用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
相关产品推荐
相关产品推荐

