【问题标题】:Can't download PDF (FPDF) from PHP function无法从 PHP 函数下载 PDF (FPDF)
【发布时间】:2015-03-04 11:01:19
【问题描述】:

我现在正在开发一个 PHP MVC 应用程序,但我在使用 FPDF 时遇到了一些问题。该代码非常简单,但它不会下载 PDF 文件(也尝试打开它,但它不起作用)。我想我遗漏了一些东西,或者我可能需要从 fpdf 实例中禁用某些东西,但我无法解决问题。代码如下:

public function downloadPDF(){

require('../FPDF/fpdf.php');
$pdf = new FPDF();

$numero = cal_days_in_month(CAL_GREGORIAN,8,2003);
date_default_timezone_set("Atlantic/Canary");
setlocale(LC_ALL,"es_ES");
$pdf->SetFont("Arial","",14);
$pdf->AddPage();
$mifecha = gmmktime(0,0,0,2,1,2013);
$pdf->Cell(40,10,strtoupper(strftime("%B",$mifecha)),1);
$pdf->Ln();
$pdf->SetFont("Arial","",10);
$pdf->Cell(60,10,"By Ricky",0,1,"C");

$pdf->Output($pdf,"D");

}

以防万一:想法是使用此功能将自动下载 PDF 文件。例如,在我的菜单中单击“下载 PDF”按钮时。

【问题讨论】:

  • 这不是和你的MVC应用更相关吗?您如何将其他内容类型的响应发送给客户端?在 snd 参数中使用“D”调用 Output() 会发送 PDF 特定的标题和 PDF 字节。您不得在 Output() 调用之前或之后发送任何其他字节。如果您需要自己发送标头和内容,请使用“S”并将返回值转发给您的应用程序响应。

标签: php pdf fpdf


【解决方案1】:

这几乎是 MVC 中某个地方的 header() 问题:

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

如果你设置正确,你应该没问题。

请记住,header() 必须在任何输入之前调用,否则它将不起作用

【讨论】:

    【解决方案2】:

    好的,这是一个我没有注意到的明显错误。我正在使用这个:

    $pdf->Output($pdf,"D");
    

    FPDF 的输出函数接收两个字符串参数(名称、输出类型)。我没有给这个函数一个名称字符串,而是给它一个 $pdf 对象。当我修复它时它工作得很好,结果是这样的:

    $pdf->Output("PDF name","I");
    

    顺便说一句,感谢您的支持。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多