• mpdf与fpdf的使用比较


    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是不支持中文字符集的,方法详见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坐标。
    还有很多设置颜色,链接等方法详情见 http://www.fpdf.org/

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

  • 相关阅读:
    【题解】 [yLOI2019] 梅深不见冬
    【题解】[CSP-S2019] Emiya 家今天的饭
    【题解】Acwing400. 太鼓达人
    【题解】[ZJOI2007]最大半连通子图
    【题解】Acwing395. 冗余路径
    【题解】CF487E Tourists
    “𣎴” 这个字存Mysql Incorrect string value: 'xF0xA3x8ExB4' for column 'msg' at row 1
    logminer分析异机db的归档日志(外部文件)
    logminer存储在外部文件(external file)
    logminer分析在线redo log
  • 原文地址:https://www.cnblogs.com/attitudeY/p/7297948.html
Copyright © 2020-2023  润新知