博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mpdf与fpdf的使用比较
阅读量:4921 次
发布时间:2019-06-11

本文共 1596 字,大约阅读时间需要 5 分钟。

php扩展 ---mpdf/fpdf

最近用到pdf扩展,需求是生成合同与简历的pdf,可供下载打印

mpdf

首先接触的是mpdf,从源码可以看出mpdf是基于fpdf与html2fpdf的成果。

优点:

  • 使用方便,代码简单。可以完全由HTML代码直接转化成PDF格式输出到web前端或直接下载。

但应用中发现不足的部分

  • css样式支持不足
  • 生成时间过长(硬伤)简单测试下,当生成3页纯文字版时,所占内存25M-28M,输入html转化pdf的时间为4s-5s,输出到页面的时间为4-5s;将近10s,时间太长。

如果对时间要求不高的话可以考虑,三部即可实现输出

$mpdf=new mPDF(); $mpdf->WriteHTML($html);//$html 为所要输出的html内容$mpdf->Output();

可以实现页面的不同样式的页眉页脚,快速实现封面目录等,具体可以参见demo

PS:虽然mpdf基于fpdf,但对其部分方法进行了改写;直接使用fpdf语法可能报错,详见mpdf源码。

fpdf

既然mpdf基于fpdf,直接转战到fpdf研究,相比与mpdf,fpdf更像积木,所有想要实现的功能,需要使用基础的方法进行构造。优点:

  • 生成速度明显提升

相比于mpdf代码量肯定明显提升,自己构造所需的功能,可以参考mpdf源码进行改造哦

简单输出demo

$pdf = new FPDF();$pdf->AddPage();  //添加页面$pdf->SetFont('Arial','B',16); //设置字体 $pdf->Cell(40,10,'Hello World!');  //添加单元$pdf->Output();  //输出

PS:默认fpdf是不支持中文字符集的,方法详见

可以通过 header footer方法设置页眉页脚

function Header(){       //引入图片 参数(文件,x距,y距,宽,高)    $this->Image('images/plan/12.png',90,150,100);    //实现单双页不同页眉 pageNo可获取当前页数    if($this->PageNo()%2==0)    {        $this->Image('images/plan/title.png',6,3,200);        $this->Cell(80);        $this->Cell(30,10,double,1,0,'C');        $this->Ln(20);    }else    {        $this->Image('images/plan/12.png',10,6,25);        $this->Cell(80);        $this->Cell(30,10,single,1,1,'C');        $this->Ln(20);    }    }function Footer(){    $this->SetY(-15);    $this->SetFont('Arial','I',8);    $this->Cell(0,10,'Page '.$this->PageNo(),0,0,'C');}

通常页面中会有根据A,B两种情况做不同调整,需要经常使用 getX,getY,setX,setY来获取当前所在位置,跳转到位置的X,Y坐标。

还有很多设置颜色,链接等方法详情见

PS:由于fpdf是用cell实现单元生成,在表格生成时不会有影响,mpdf会出现丢失上下border的情况,或设置表格boder会有像素不一的问题。

转载于:https://www.cnblogs.com/attitudeY/p/7297948.html

你可能感兴趣的文章
C++编写Node.js插件(Addon)
查看>>
Excel-漏斗图分析(差异分析)
查看>>
ansible使用5-Variables
查看>>
SpringBoot2.0源码分析(二):整合ActiveMQ分析
查看>>
pickle 模块
查看>>
eclipse中的项目Java build path (Java创建路径)详解
查看>>
Codeforces Round #439 (Div. 2) 题解
查看>>
awk运用
查看>>
python socket 编程之三:长连接、短连接以及心跳
查看>>
小米手机无限重启,两清与三清
查看>>
web.xml加载顺序
查看>>
Error和Exception的区别?
查看>>
Ceph osd 替换
查看>>
Google BigQuery——企业级大数据分析工具
查看>>
解决@@SERVERNAME丢失的问题.sql
查看>>
Android多屏幕适配
查看>>
SQL 行转列
查看>>
对CSS中的Position、Float属性的一些深入探讨
查看>>
前端UI
查看>>
喵哈哈村的括号序列
查看>>