php 实现 html 导出 PDF

最近在作一个OA系统,客户要求把财务管理模块的几个单据的导出PDF格式。由于项目是团队开发,我最后才实现本身的任务里的导出PDF功能,看了前面小伙伴实现的导出PDF功能案例,他们使用的是 fpdf 这个库。php

考察事后,发现fpdf这个库不支持html导出pdf,不稳定,在 apache 环境下导出报错。我反馈问题给用fpdf作导出功能的小伙伴,他说他导出正常。最后咱们对比了开发环境,他用的是 nginx ,我用的是 apache。这样的问题百度了一下没有答案,那就只能我本身去找问题的答案咯。通过不懈的努力,终于找到在 fpdf.php 这个文件下的 function Image 函数下一段代码:html

/*************************此段代码有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 下就能够正常导出了。nginx

最终由于fpdf不支持html导出PDF,我选用了 mpdf 这个库,很方便的就实现了 html 导出 pdf 的功能。apache

$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(互联网项目帮) ,一块儿讨论交流学习。app

原创做者:动雪飞飞,QQ:282130106 。函数

若有转载,敬请注明原创做者与出处,谢谢。学习

相关文章
相关标签/搜索