2014-01-17 2 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"'); 

EDIT: Здесь как выглядит код теперь с правильным типом контента и правильной установкой функции выхода:

$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: текст/csv' для файла в формате PDF ?? – 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

Я сделал, как вы сказали, но я все равно получаю сообщение «Ошибка текстового документа типа текста (текст/обычная) не поддерживается». Однако pdf-файл, созданный на сервере, является правильным. –

Смежные вопросы