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会有像素不一的问题。

mpdf与fpdf的使用比较的更多相关文章

  1. ThinkPHP3.2.3扩展之生成PDF文件(MPDF)

    目前是PHP生成PDF文件最好的插件了,今天介绍下在ThinkPHP3.2.3里如何使用. 先安照路径放好如图. 下面是使用方法 public function pdf(){ //引入类库 Vendo ...

  2. mpdf部署到linux环境中遇到的问题

    首先遇到的问题未:Error - mPDF requires mb_string functions. Ensure that PHP is compiled with php_mbstring.dl ...

  3. php 采用fpdf乱码问题

    步骤1.首先下载fpdf http://www.fpdf.org/en/download.php(本人用的是1.7版本) 步骤2.下载中文包 http://www.fpdf.org/download/ ...

  4. 解决FPDF报错:FPDF error: Not a JPEG file / FPDF error: Not a PNG file

    最近有个项目需要用到FPDF,但是输出的时候报错: FPDF error: Not a JPEG file: http://***/data/attachment/forum/201603/19/10 ...

  5. fpdf使用標楷體

    <? require('chinese-unicode.php'); $pdf=new PDF_Unicode(); $pdf->Open(); $pdf->AddPage(); $ ...

  6. php生成PDF文件(FPDF)

    首先要下载FPDF http://www.fpdf.org/  附件可以在我的资源里下载http://yunpan.cn/c3RJ5BpPfX6dL  访问密码 f1f2 FPDF文档:http:// ...

  7. mpdf中文开发使用文档附demo实例

    官网URL:http://www.mpdf1.com/mpdf/index.php github:https://github.com/mpdf/mpdf 官方开发手册,英文的:http://www. ...

  8. php使用MPDF导出PDF文件自定义字体

    最近公司要生成一个PDF文件,网上找了很多类库,使用mpdf最方便,通过HTML输入调整样式,官方地址:http://www.mpdf1.com/,更改字体这个问题困扰了我很久,网上找的方法都不适用, ...

  9. PHP使用FPDF pdf添加水印中文乱码问题 pdf合并版本问题

    ---恢复内容开始--- require_once('../fpdf/fpdf.php');require_once('../fpdi/fpdi.php'); 使用此插件 pdf 合并 并添加水印 期 ...

随机推荐

  1. 超级ping(多线程版)

    发现学校公共wifi的ip段是10.1.0-255.0-255段的,还是之前的思路批量ping一波. 其实可以使用nmap的.但是脚本写都写了.是吧.你懂的. #!/usr/bin/env pytho ...

  2. .NET Framework 4安装失败

    #刚装系统遇到之前所遇到的问题.之前因为这个事情还被困扰了好一阵子.特此写出来分享给大家. 环境:WIN10 企业版 在使用一些需要较高.net版本的时候无法更新.你可以试一下.在服务里面开启再更新. ...

  3. linux和windows共享文件,通过samba

    SAMBA共享1.安装samba:可以先检查下是否已经安装:rpm -qa | grep samba,没有的话自己安装下,这里介绍下基于RPM包的一种在线安装模式yumyum是一种快速安装模式,它会自 ...

  4. 【UOJ#38】【清华集训2014】奇数国

    考虑欧拉函数的性质,60很小,压位存下线段树每个节点出现质数. #include<bits/stdc++.h> ; ; typedef long long ll; using namesp ...

  5. C 中级 - SO_REUSEPORT 和 SO_REUSEADDR

    引言 - 问题由来 刚开始学习网络编程时候, 常听到一个词, 先开启 "端口复用 SO_REUSEADDR". 那时很一知半解, 就知道该那么写了. 心里一直有些奇怪, 语义不通呀 ...

  6. 增加Android模拟器空间(Internal Storage)

    转载 http://vase.iteye.com/blog/2114664   初学Android,发现模拟器上有不少限制,譬如标题中的存储限制,无论用ADT Manager如何设置,内部存储空间不会 ...

  7. Java多线程之赛跑游戏(含生成exe文件)

    在JavaSE中,多线程是一个重要的内容. 我们要了解多线程的概念,就要先了解进程的概念:要了解进程的概念,就离不开操作系统的概念. 在一台正常运行的电脑中,计算机硬件(如CPU.内存.硬盘.网卡.显 ...

  8. 安全控制 iptables

    转自:http://www.opsers.org/linux-home/videos/chapter-netfilter-iptables-raiders.html 内容简介防火墙的概述iptable ...

  9. shell视频

    本帖最后由 Shell_HAT 于 2014-04-18 16:51 编辑 尚观全套RHCE视频http://pan.baidu.com/s/1pJvzVR1 马哥网络班-中级视频内容http://p ...

  10. leetcode 之Permutation(七)

    首先是next permutation的算法的描述和分析如下: 这题一是要知道思路,编程中注意STL的用法 void nextPermutaion(vector<int> &num ...