您现在的位置是:首页 >技术杂谈 >TP5 如何导出PDF文件网站首页技术杂谈

TP5 如何导出PDF文件

于先生吖 2023-05-27 00:00:02
简介TP5 如何导出PDF文件

前面有一篇文章是写到如何生成PDF文件;最近做的项目是需要生成PDF文件并下载到桌面的一个功能
现在就来讲一下如何实现
1.生成PDF文件,这里我就不在写如何生成了 如果有不知道的朋友请找一下我以前发的文章。
有详细的介绍如何生成PDF文件
2.现在来讲一下如何将PDF文件下载下来
现在有两种方法:
1.通过tp5框架自带的http类进行下载

/**
     * 发送文件到客户端
     * @param string $file
     * @param bool   $delaftersend
     * @param bool   $exitaftersend
     */
    public static function sendToBrowser($file, $delaftersend = true, $exitaftersend = true)
    {
        if (file_exists($file) && is_readable($file)) {
            header('Content-Description: File Transfer');
            header('Content-Type: application/octet-stream');
            header('Content-Disposition: attachment;filename = ' . basename($file));
            header('Content-Transfer-Encoding: binary');
            header('Expires: 0');
            header('Cache-Control: must-revalidate, post-check = 0, pre-check = 0');
            header('Pragma: public');
            header('Content-Length: ' . filesize($file));
            ob_clean();
            flush();
            readfile($file);
            if ($delaftersend) {
                unlink($file);
            }
            if ($exitaftersend) {
                exit;
            }
        }
    }

这里就是下载的方法;
2.第二种方法就是生成PDF文件的通知直接下载

/**
     * 生成PDF文件
     * $title:文章标题;$author:作者;$time:时间;$content:文章内容;
     */
    public function generate_pdf_files($title,$author,$time,$content){
        require_once('D:phpstudy_proWWWphp41zhaopinvendorTCPDF	cpdf.php');
        $pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
        $pdf->SetCreator(PDF_CREATOR);
//        $pdf->SetTitle('个人简历');
        // set default header data
        //$pdf->SetHeaderData( PDF_HEADER_TITLE.' 038', PDF_HEADER_STRING);
        // set header and footer fonts
        //$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN));
        //$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA));
        // set default monospaced font
        $pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);
        //set margins
        $pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);
        $pdf->SetHeaderMargin(PDF_MARGIN_HEADER);
        $pdf->SetFooterMargin(PDF_MARGIN_FOOTER);
        //set auto page breaks
        $pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);
        //set image scale factor
        $pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);
        //set some language-dependent strings
        // $pdf->setLanguageArray($l);
        // ---------------------------------------------------------
        // set font
        //$pdf->SetFont('stsongstdlight', '', 12);
        $pdf->SetFont('droidsansfallback', '', 12);
        // add a page
        $pdf->AddPage("A4","Landscape",true,true);
//        $pdf->Write(0, '', '', 0, 'C', true, 0, false, false, 0);
        $tbl = $this->index_html($title,$author,$time,$content);//这里放HTML代码
        $pdf->writeHTML($tbl, true, false, false, false, '');
        // ---------------------------------------------------------
        //Close and output PDF document
        $dir = "D:phpstudy_proWWWphp41guanwangpublicuploadspdf/".$title.".pdf";
        $pdf->Output($dir, "D"); 
        return true;
    }

这里的Output($dir , “D”);
第一个参数时你保存文件的路径。
第二个就是方法的缩写:
1> “I”.将文件内联发送到浏览器(默认设置)。如果可用,则使用该插件。当在生成PDF的链接上选择“另存为”选项时,将使用由名称给定的名称
2> “D” 发送到浏览器,并强制下载带有名称的文件
3> “F”:保存到本地服务器文件,文件名由name给定
4> “S”: 以字符串形式返回文档(忽略名称)
5> “FI” : 相当于F+I选项
6> “FD”:相当于F + D选项
7> “E” : 以base64 mime多部分电子邮件附件的形式返回文档(RFC 2045)

以上就是本人用的代码 亲测有效 记得关注和收藏

风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。