Проблема при скачивании pdf

Главные вкладки

Аватар пользователя falcon117 falcon117 3 июля 2012 в 13:53

Коллеги, не могу понять в чем дело. При сохранении файла формата pdf все проходит гладко, но при попытке открыть файл на клиентской машине выдается сообщение "Adobe reader could not open "3010-F10.pdf" because it is either not a supported file type or because file has beeb damaged (for example, it was sent as an email attachment and wasn't correctly decoded)"

Ниже приведен код:

header('Content-type: application/pdf');
header('Content-Disposition: attachment; filename="3010-F10.pdf"');
header('Content-Transfer-Encoding: binary');
ob_clean();
flush();
readfile("$filename");

Заранее спасибо!

Комментарии

Аватар пользователя kyky kyky 3 июля 2012 в 15:01

У вас pdf генерится налету? Если нет, то отдавайте апачем.
Если да, то попробуйте блочное чтение:

$file = "test.pdf";
$fp = fopen($file,"r") ;

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

while (! feof($fp)) {
       $buff = fread($fp,4096);
       print $buff;
       }

Аватар пользователя falcon117 falcon117 3 июля 2012 в 15:44

Генерации на лету не происходит, файл лежит просто на сервере.
Я в этом деле человек новый, так что если будут некоторые указания о том как отдавать документ с помощью апача буду очень сильно признателен.

Ну и за предыдущий ответ большое спасибо)

Аватар пользователя g78knl6cvxf0 g78knl6cvxf0 3 июля 2012 в 17:06

попробуй так:

<?php
header
("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: private",false);
header("Content-Type: application/pdf");
header("Content-Disposition: attachment; filename=\"3010-F10.pdf\";");
header("Content-Transfer-Encoding: binary");
readfile("3010-F10.pdf");
exit();
?>
Аватар пользователя kyky kyky 3 июля 2012 в 17:42

Отдавать апачем -- это значит просто ставить ссылку на файл или перенаправлять пользователя по этой ссылке. В этом случае файл будет отдан пользователю быстрее и эффективнее без обращению к ПХП.
Типа:

header("Location: /files/pdf/document.pdf");