Pdf在下载时损坏

时间:2014-04-28 08:31:54

标签: php pdf download dompdf

我有一个网站,其中有两个提交按钮,一个发送附带pdf的电子邮件,这很有效。

第二个按钮是下载pdf,这是问题所在。我在下载之前将pdf保存在临时文件中,但是在下载之后文件没有打开并且它已损坏。 pdf约为30KB。我尝试过类似问题的解决方案,但结果总是相同,pdf不会打开。

这没有用

    $fileName = "file.pdf";
    $file_name = ("temp/file.pdf");
    file_put_contents($file_name, $pdf_content);

    $filepath=$file_name; //file location
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename="'.basename($file).'"');
    header('Content-Length: ' . filesize($file));
    readfile($file);

这没有用

    $path = $_SERVER['DOCUMENT_ROOT']."/temp/"; // change the path to fit your websites document structure
    $fullPath = $path.$fileName;

    header("Cache-Control: public");
    header("Content-Description: File Transfer");
    header('Content-disposition: attachment; 
    filename='.basename($fullPath));
    header("Content-Type: application/pdf");
    header("Content-Transfer-Encoding: binary");
    header('Content-Length: '. filesize($fullPath));
    readfile($fullPath);
    exit;

这没有用

    set_time_limit(0); // disable timeout
    $file = $root_path.'/full-tile-book.pdf';
    header('Content-Type: application/octet-stream');
    header('Content-Disposition: attachment; filename="NewName.pdf"');
    header('Content-Length: ' . filesize($file));
    $f = fopen($file, 'rb');
    fpassthru($f);
    fclose($f);
    exit;

这没有用

    header('Pragma: public');  // required
    header('Expires: 0');  // no cache
    header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
    header('Cache-Control: private', false);
    header('Content-Type: application/pdf');
    header('Last-Modified: ' . gmdate('D, d M Y H:i:s', filemtime($filepath)) . ' GMT');
    header('Content-disposition: attachment; filename=file.pdf');
    header("Content-Transfer-Encoding:  binary");
    header('Content-Length: ' . filesize($filepath)); // provide file size
    header('Connection: close');
    readfile($filepath);
    exit();

该文件始终位于服务器上的临时文件夹中,并且工作正常,因此下载文件中的文件已损坏。

我不关心下载是如何完成的,pdf或oclet-stream或其他任何方式。

1 个答案:

答案 0 :(得分:0)

我删除了:Content-Type标题,它适用于我。

此致