PHP pdf创建下载pdf为corrupt

时间:2014-01-17 19:29:54

标签: 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->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"');

编辑: 以下是代码现在的正确内容类型和正确的输出函数放置:

$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');

但错误仍然存​​在。

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

你需要冲洗你的缓冲区。

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