2014-01-17 40 views
1

我有一段代碼,在服務器上創建一個正確的PDF,但是當我嘗試下載它,它下載的腐敗:PHP創建PDF下載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'); 

雖然錯誤仍然存​​在。

+1

呃,爲什麼你設置'的Content-Type:PDF文件的文本/ csv'? – jszobody

+0

並且'$ pdf-> Output(...)'它將PDF數據發送出去了嗎?您需要在此之前發送適當的標題,而不是之後。 – jszobody

+0

確保您自己的代碼中沒有任何內容生成任何屏幕輸出 –

回答

0

更改內容類型application/pdf,並確保發送數據的報頭前:

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

我照你說的做了,但我還是得到「文件類型純文本文件(text/plain)不支持」的錯誤。雖然在服務器上創建的PDF是正確的。 –