使用PHP下载PDF文件

使用PHP下载PDF文件,php,pdf,download,fpdf,Php,Pdf,Download,Fpdf,单击下载按钮时,会发送一个ajax请求,并调用HtmlToPDF()php函数 首先,我将使用FPDF从html文件创建一个pdf文件。之后,我想下载创建的pdf文件 代码: PDF已创建。但是我不能下载这个文件。反应就像 %PDF-1.3 30 obj endobj 40 obj 流动 x��YMS�0��W���H�aɽa��)�o�五十、 Rw�ۡÿ�L��A.��!3.�$��}Z��}R9�P����Dd�D��D��(��_)伊尔~�&�$�C�3.�zk{,�}�4pI4倒D�D>

单击下载按钮时,会发送一个ajax请求,并调用
HtmlToPDF()
php函数

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

代码:

PDF已创建。但是我不能下载这个文件。反应就像

%PDF-1.3 30 obj endobj 40 obj 流动 x��YMS�0��W���H�aɽa��)�o�五十、 Rw�ۡÿ�L��A.��!3.�$��}Z��}R9�P����Dd�D��D��(��_)伊尔~�&�$�C�3.�zk{,�}�4pI4倒D�D>���B�� ���m-?4۹ ��|�]7Ym�#<代码>H���Tc�8.��ӹ!�9�C�L�}?O�O� � � � ��H�,���我�|��G�Q�s���?#R GYB�韩元�1.�QҡQ��)��Ql�M�% {�/�_�C��XOۆQ�����) endobj 80 obj > ) /创建日期(D:2013090300123) > endobj 9.0 obj endobj 外部参照 0 10 0000000000 65535 f 0000000 916 00000N 000000 13040 00000n 000000000 900万n 00000000 8700000N 000000 1003 00000n 000000 1099 00000 n 000000 1200百万n 000000 14120百万新西兰元 000000 15360 00000 n 拖车 起始外部参照 1639 %%EOF

我看到一些与此相关的堆栈溢出问题


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

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

将文档发送到的目标。它可以采取以下方式之一: 以下数值:

I:将文件内联发送到浏览器。如果 可用。选择“保存”时,将使用名称给定的名称 生成PDF的链接上的“as”选项

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

F:保存到本地文件,文件名由name指定(可能包括 路径)

S:以字符串形式返回文档。忽略名称

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


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

将文档发送到的目标。它可以采取以下方式之一: 以下数值:

I:将文件内联发送到浏览器。如果 可用。选择“保存”时,将使用名称给定的名称 生成PDF的链接上的“as”选项

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

F:保存到本地文件,文件名由name指定(可能包括 路径)

S:以字符串形式返回文档。忽略名称

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


如何获取文件?ajax不是所有问题的答案questions@Pekka你能解释一下吗?当你想让浏览器下载一些东西时,你只需将它发送到该位置,或者创建一个指向资源的隐藏的
。下载部分不需要Ajax。请看这个问题:如何获取文件?Ajax是不是所有的答案questions@Pekka你能解释一下吗?当你想让浏览器下载一些东西时,你只需将它发送到该位置,或者创建一个指向资源的隐藏的
。下载部分不需要Ajax。请看这个问题:
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;       
        }   
    }