使用PHP下载PDF文件

时间:2013-09-03 03:21:14

标签: php pdf download fpdf

当我点击下载按钮时,会发送ajax请求并调用HtmlToPDF() php函数。

首先,我将使用FPDF从html文件创建一个pdf文件。之后我想下载创建的pdf文件。

代码:

function HtmlToPDF()
    {       
        $fileName = $_POST['fileName']; 
        $file = basename($fileName, ".html");
        $pdf=new HTML2FPDF();
        $pdf->AddPage();
        $fp = fopen("../".$fileName,"r");
        $strContent = fread($fp, filesize("../".$fileName));
        fclose($fp);
        $pdf->WriteHTML($strContent);
        $fullPath = "../Bills/".$file.".pdf";       
        $pdf->Output($fullPath);

        if (is_readable ($fullPath)) {
            $fsize = filesize($fullPath);
            $path_parts = pathinfo($fullPath);


            header('Content-Description: File Transfer');
            header("Content-type: application/pdf"); // add here more headers for diff.     extensions
            header("Content-Disposition: attachment; filename=\"".$path_parts["basename"]."\""); 
            header('Content-Transfer-Encoding: binary');   // use 'attachment' to force a download              
            header('Expires: 0');
            header("Content-length: $fsize");
            header('Pragma: public');
            header ("Cache-Control: must-revalidate, post-check=0, pre-check=0");
            ob_clean();
            flush();
            echo file_get_contents($fullPath);          
            exit;       
        }   
    }

创建了PDF。但我无法下载该文件。响应就像

  

%PDF-1.3   3 0 obj   <>   endobj   4 0 obj   <>   流   xYMS0WhaɽA)OL,RW YLA!3 $} Z} R9P Dd D D ( _)YL~ & $ c 3 zk{, } 4pI4倒D D> B m-? 49   |] 7Ym#H���Tc�8��ӹ!�9�C�L�}?O�O� � � � ��H�,���i�|��G�Q�S���?#R GYB�KR�1�Qҡq��)��Ql�m�% {�/�_�c��XOۆQ)< PG}QeΧ7Wɠ0e鞯e.ΒbNW 6]   4 % pJ Wg ⡞yw o ' z 9 V R K# > < f R6      [R |:OEbfnia] S! C<܅ “ J Y} 1R + 2 ��b�e��0Z�4H������i����g\h� %R��p�0��c����ڵ� @ulW϶ Q VJz Vȋ5 J ! 4: p @ |0 ! B {ñ X?[F([ pl G nHn 4 Q o2 2!小号ަC-·v   S [F&安培; NL   &安培; A} ^ $ P8XXiͳry| gUZX0 = Q ^ ^WGʮG “8ԀǯydӴ〜#$ H] 3 **戈   endstream   endobj   1 0 obj   <   endobj   5 0 obj   <   endobj   6 0 obj   <   endobj   7 0 obj   <   endobj   2 0 obj   <   >   endobj   8 0 obj   <<   /制片人(FPDF 1.52)   / Creator(HTML2FPDF>> http://html2fpdf.sf.net)   / CreationDate(D:20130903060123)   >   endobj   9 0 obj   <<   /类型/目录   / Pages 1 0 R   / OpenAction [3 0 R / FitH null]   / PageLayout / OneColumn   >   endobj   外部参照   0 10   0000000000 65535 f   0000000916 00000   0000001304 00000   0000000009 00000   0000000087 00000   0000001003 00000   0000001099 00000   0000001200 00000   0000001412 00000   0000001536 00000   预告片   <<   /大小10   / Root 9 0 R   / Info 8 0 R   >   startxref   1639   %% EOF

我看到了一些与此相关的堆栈溢出问题。 PDF format error with PHP

但无法解决我的问题。请帮帮我..

1 个答案:

答案 0 :(得分:1)

根据FPDF文档,您可以使用第二个Output()参数

  

目的地发送文件的位置。它可以采取其中之一   以下值:

     

我:将文件内联发送到浏览器。如果使用插件   可用。当选择"保存时,使用名称给出的名称   作为"生成PDF的链接上的选项。

     

D:发送到浏览器并强制下载给定名称的文件   按名称。

     

F:保存到名称为name的本地文件(可能包含一个   路径)。

     

S:将文档作为字符串返回。名称被忽略。

通过使用D参数,它应该强制下载,而不使用AJAX

Source