php 實現 html 導出 PDF

最近在做一個OA系統,客戶要求把財務管理模塊的幾個單據的導出PDF格式。因爲項目是團隊開發,我最後才實現自己的任務裏的導出PDF功能,看了前面小夥伴實現的導出PDF功能案例,他們使用的是 fpdf 這個庫。

考察過後,發現fpdf這個庫不支持html導出pdf,不穩定,在 apache 環境下導出報錯。我反饋問題給用fpdf做導出功能的小夥伴,他說他導出正常。最後我們對比了開發環境,他用的是 nginx ,我用的是 apache。這樣的問題百度了一下沒有答案,那就只能我自己去找問題的答案咯。經過不懈的努力,終於找到在 fpdf.php 這個文件下的 function Image 函數下一段代碼:

/*************************此段代碼有bug******在apache下****************************
if($w<0)
   $w = -$info['w']*72/$w/$this->k;
if($h<0)
   $h = -$info['h']*72/$h/$this->k;
**************************此段代碼有bug***********************************/

   if($w<0) {
       $w = -(-$info['w'] * 72) / (-$w) / $this->k;
   }
   if($h<0) {
       $h = -(-$info['h'] * 72) / (-$h) / $this->k;
   }

修復了一下,在 apache 下就可以正常導出了。

最終因爲fpdf不支持html導出PDF,我選用了 mpdf 這個庫,很方便的就實現了 html 導出 pdf 的功能。

$pdf = new Mpdf(['mode'=>'UTF-8']);
$pdf->useAdobeCJK = true;
$pdf->autoLangToFont = true;
$pdf->autoScriptToLang = true;
$fileContent = $this->fetch($this->templatePath.'pdf/travel_cost_apply');
$pdf->AddPage();
$pdf->WriteHTML($fileContent);
$pdf->Output('差旅費用報銷-'.$modelView['apply_user_name'].'-'.date('Y-m-d',$modelView['apply_time']).'.pdf','D');

如有疑問,歡迎加入QQ羣:591528130(互聯網項目幫) ,一起討論交流學習。

原創作者:動雪飛飛,QQ:282130106 。

如有轉載,敬請註明原創作者與出處,謝謝。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章