PDF下载提供了损坏的PDF php

时间:2015-11-11 11:15:31

标签: php pdf

我正在保存一个pdf文件,然后尝试使用php下载它。 该剧本似乎运作良好,但突然间不再了。

有人能看到我错过的东西吗?

PS:我下载的文件只有4.3kb大,所以我认为那是因为它根本没有下载。实际文件大小应该大于此值。

$pdf->output(ROOTDIR.'/modules/addons/statement_generator/reports/statement.pdf');
    if($action=='print'){
        $file_name = 'statement.pdf';
        $file_url = "http://".$_SERVER['SERVER_NAME']."/modules/addons/statement_generator/reports/" . $file_name;
        header('Content-Type: application/pdf');
        header("Content-Transfer-Encoding: Binary"); 
        header("Content-disposition: attachment; filename=\"".$file_name."\""); 
        readfile($file_url);
        exit;
    }

1 个答案:

答案 0 :(得分:1)

$pdf->output()来电已经将PDF发送给客户。该文件不会保存到您的本地文件夹(您至少没有检查过这个吗?),因为您必须通过" F"作为snd参数。

之后,您尝试从不存在的URL(!!!!)中读取,这可能会返回一个样式很好的404 html响应。这里有两个问题:

  1. 当你使用上面某些行的本地路径时,为什么使用http?仅使用本地路径!
  2. 由URL返回的内容附加到已发送的PDF中,该PDF以PDF和HTML混合的文档结尾(404响应) - >损坏的PDF
  3. 结论:使用" F"作为第二个参数,并使用相同的路径进行写入和读取,而不是本地路径和URL的混合。