PHP pdf创建将pdf下载为已损坏

PHP pdf创建将pdf下载为已损坏,php,pdf,fpdf,Php,Pdf,Fpdf,我有一段代码可以在服务器上创建正确的pdf,但当我尝试下载它时,它会下载为已损坏: for($i = 0 ; $i < $num_tokens ; $i++){ #$tokens[$i] = pronto_aes_decrypt( $token_crypt[$i] , $prontoKey ); $tokens[$i] = pronto_aes_decrypt( $token_crypt[$i] , $prontoKey ); $pdf->AddPage(

我有一段代码可以在服务器上创建正确的pdf,但当我尝试下载它时,它会下载为已损坏:

for($i = 0 ; $i < $num_tokens ; $i++){

    #$tokens[$i] = pronto_aes_decrypt( $token_crypt[$i] , $prontoKey );
    $tokens[$i] = pronto_aes_decrypt( $token_crypt[$i] , $prontoKey );

    $pdf->AddPage();
    $pdf->SetFont('Arial','B',16);
    $pdf->Cell(40,10,$tokens[$i]);


}
unlink("tokens.pdf");
$pdf->Output('tokens.pdf','F');  

header('Content-Type: text/csv');
header('Content-Disposition: attachment; filename="tokens.pdf"');
for($i=0;$i<$num_令牌;$i++){
#$tokens[$i]=pronto_aes_decrypt($token_crypt[$i],$prontoKey);
$tokens[$i]=pronto_aes_decrypt($token_crypt[$i],$prontoKey);
$pdf->AddPage();
$pdf->SetFont('Arial','B',16);
$pdf->Cell(40,10,$tokens[$i]);
}
取消链接(“tokens.pdf”);
$pdf->Output('tokens.pdf','F');
标题(“内容类型:文本/csv”);
标题('Content-Disposition:attachment;filename=“tokens.pdf”');
编辑: 下面是代码在正确的内容类型和正确的输出函数位置下的外观:

$pdf = new FPDF( ); 

for($i = 0 ; $i < $num_tokens ; $i++){

    $tokens[$i] = pronto_aes_decrypt( $token_crypt[$i] , $prontoKey );

    $pdf->AddPage();
    $pdf->SetFont('Arial','B',16);
    $pdf->Cell(40,10,$tokens[$i]);

}
unlink("tokens.pdf");

header('Content-Type: application/pdf');
header('Content-Disposition: attachment; filename="tokens.pdf"');
$pdf->Output('tokens.pdf','F');
$pdf=new FPDF();
对于($i=0;$i<$num_令牌;$i++){
$tokens[$i]=pronto_aes_decrypt($token_crypt[$i],$prontoKey);
$pdf->AddPage();
$pdf->SetFont('Arial','B',16);
$pdf->Cell(40,10,$tokens[$i]);
}
取消链接(“tokens.pdf”);
标题(“内容类型:应用程序/pdf”);
标题('Content-Disposition:attachment;filename=“tokens.pdf”');
$pdf->Output('tokens.pdf','F');

但错误仍然存在。

将内容类型更改为
application/pdf
,并确保在标题之前发送数据:

header('Content-Type: application/pdf');
header('Content-Disposition: attachment; filename="tokens.pdf"');
$pdf->Output('tokens.pdf','F');

你需要刷新你的缓冲区

  $pdf = new FPDF();
        $pdf->AddPage();
        $pdf->SetFont('Arial', 'B', 16);
        $pdf->Cell(40, 10, 'Hello World!');
        $pdf->Output('I');
        ob_flush();

嗯,为什么要为pdf文件设置
内容类型:text/csv
,并且
$pdf->Output(…)
在哪里发送pdf数据?您需要在此之前而不是之后发送适当的标题。请确保您自己的代码中没有任何内容生成任何屏幕输出。我确实将内容类型更改为正确的类型,并且在内容标题后设置了$pdf->Output命令,但我仍然遇到了相同的问题。我按照您所说的做了,但仍然出现了“文件类型纯文本文档(text/plain)不受支持”错误。不过,在服务器上创建的pdf是正确的。