php扩展 ---mpdf/fpdf
最近用到pdf扩展,需求是生成合同与简历的pdf,可供下载打印php
首先接触的是mpdf,从源码能够看出mpdf是基于fpdf与html2fpdf的成果。
优势:css
但应用中发现不足的部分html
若是对时间要求不高的话能够考虑,三部便可实现输出前端
$mpdf=new mPDF(); $mpdf->WriteHTML($html);//$html 为所要输出的html内容 $mpdf->Output();
能够实现页面的不一样样式的页眉页脚,快速实现封面目录等,具体能够参见demoweb
PS:虽然mpdf基于fpdf,但对其部分方法进行了改写;直接使用fpdf语法可能报错,详见mpdf源码。测试
既然mpdf基于fpdf,直接转战到fpdf研究,相比与mpdf,fpdf更像积木,全部想要实现的功能,须要使用基础的方法进行构造。优势:字体
相比于mpdf代码量确定明显提高,本身构造所需的功能,能够参考mpdf源码进行改造哦this
简单输出democode
$pdf = new FPDF(); $pdf->AddPage(); //添加页面 $pdf->SetFont('Arial','B',16); //设置字体 $pdf->Cell(40,10,'Hello World!'); //添加单元 $pdf->Output(); //输出
PS:默认fpdf是不支持中文字符集的,方法详见fpdf中文字符集htm
能够经过 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坐标。
还有不少设置颜色,连接等方法详情见 http://www.fpdf.org/
PS:因为fpdf是用cell实现单元生成,在表格生成时不会有影响,mpdf会出现丢失上下border的状况,或设置表格boder会有像素不一的问题。