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會有像素不一的問題。