【php導出pdf文件】php將html 導出成pdf文件(MPDF60),支持完美分頁,注意是完美!!

一、使用 MPDF60 包php

二、防止中文亂碼:修改MPDF/MPDF60/config.php中 html

$this->autoLangToFont = true;
$this->autoScriptToLang = true;

三、引入類文件:mpdf.php框架

方式一:直接放在Application同級,經過include_once 引入 方式二:放在vendor/ 下面,引入 兩種方式都可以,我這裏以第一種示例,由於它在其餘框架也能夠使用

 

四、代碼:(tp3.2.X示例)字體

//PC端,利用php服務端打印pdf文件 -- addBy 徐正宗 2018/07/18
    public function printPdf(){
        header("Content-type: text/html; charset=utf-8");
        
        $this->assign('title','下載文件');
        $id = I('id');
        if(!$id || !is_numeric($id)){
            $this->error('參數丟失');
        }else{
                
            //產品詳情
            $list = M("product")->where('status in(1,-1,-2) and id='.intval($id))->find();
            if($list){
                //獲取行程安排
                $xcap = M('product_plan')->where('pro_id='.intval($id))->select();
                 
                //html解碼
                $list['pic'] = 'http://'.$_SERVER['HTTP_HOST'].'/'.$list['pic'];
                $list['detail'] = htmlspecialchars_decode($list['detail']);
                $list['fee_desc'] = htmlspecialchars_decode($list['fee_desc']);
                $list['notice'] = htmlspecialchars_decode($list['notice']);
                $list['shopping_notice'] = htmlspecialchars_decode($list['shopping_notice']);
                $list['before_buy'] = htmlspecialchars_decode($list['before_buy']); 
            }else{
                $list = array();
                $xcap = array(array());
            }
            $this->assign('_list',$list);
            $this->assign('_xcap',$xcap);
            
            
            //執行pdf文件生成            
            include_once C('S_ROOT').'/../MPDF/MPDF60/mpdf.php'; //實際路徑 /www/項目名/Application/../MPDF/MPDF60/mpdf.php //實例化mpdf
            $mpdf=new \mPDF('utf-8','A4','','宋體',0,0,20,10);
            
            //設置字體,解決中文亂碼,前提是:修改MPDF/MPDF60/config.php中autoScriptToLang 和 autoLangToFont 均爲true
            $mpdf->useAdobeCJK = true;
            //$mpdf->SetAutoFont(AUTOFONT_ALL);//使用6.0以上版本不須要
            
//             $mpdf=new \mPDF('+aCJK','A4','','',32,25,27,25,16,13);
//             $mpdf->autoLangToFont = true;
//             $mpdf->useAdobeCJK = true;
            //獲取要生成的靜態文件
            $html=$this->fetch('Product/detail_fetch');
            //$html = '中國';
            
            //echo $html;exit;
            

            //設置PDF頁眉內容
            $header='<table width="95%" style="margin:0 auto;border-bottom: 1px solid #4F81BD; vertical-align: middle; font-family:
serif; font-size: 9pt; color: #000088;"><tr>
<td width="10%"></td>
<td width="80%" align="center" style="font-size:16px;color:#A0A0A0"></td>
<td width="10%" style="text-align: right;"></td>
</tr></table>';
            
            //設置PDF頁腳內容
            $footer='<table width="100%" style=" vertical-align: bottom; font-family:
serif; font-size: 9pt; color: #000088;"><tr style="height:30px"></tr><tr>
<td width="10%"></td>
<td width="80%" align="center" style="font-size:14px;color:#A0A0A0"></td>
<td width="10%" style="text-align: left;">頁碼:{PAGENO}/{nb}</td>
</tr></table>';
            
            //添加頁眉和頁腳到pdf中
            $mpdf->SetHTMLHeader($header);
            $mpdf->SetHTMLFooter($footer);
            
            //設置pdf顯示方式
            $mpdf->SetDisplayMode('fullpage');
            
            //設置pdf的尺寸爲270mm*397mm
            //$mpdf->WriteHTML('<pagebreak sheet-size="270mm 397mm" />');
            
            //建立pdf文件
            $mpdf->WriteHTML($html);
            
            //刪除pdf第一頁(因爲設置pdf尺寸致使多出了一頁)
            //$mpdf->DeletePages(1,1);
            
            //輸出pdf
            $mpdf->Output('旅遊行程單.pdf','D');//能夠寫成下載此pdf   $mpdf->Output('文件名','D');
            
            exit;
            
        }
    }

五、效果:fetch

相關文章
相關標籤/搜索