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会有像素不一的问题。
mpdf与fpdf的使用比较的更多相关文章
- ThinkPHP3.2.3扩展之生成PDF文件(MPDF)
目前是PHP生成PDF文件最好的插件了,今天介绍下在ThinkPHP3.2.3里如何使用. 先安照路径放好如图. 下面是使用方法 public function pdf(){ //引入类库 Vendo ...
- mpdf部署到linux环境中遇到的问题
首先遇到的问题未:Error - mPDF requires mb_string functions. Ensure that PHP is compiled with php_mbstring.dl ...
- php 采用fpdf乱码问题
步骤1.首先下载fpdf http://www.fpdf.org/en/download.php(本人用的是1.7版本) 步骤2.下载中文包 http://www.fpdf.org/download/ ...
- 解决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 ...
- fpdf使用標楷體
<? require('chinese-unicode.php'); $pdf=new PDF_Unicode(); $pdf->Open(); $pdf->AddPage(); $ ...
- php生成PDF文件(FPDF)
首先要下载FPDF http://www.fpdf.org/ 附件可以在我的资源里下载http://yunpan.cn/c3RJ5BpPfX6dL 访问密码 f1f2 FPDF文档:http:// ...
- mpdf中文开发使用文档附demo实例
官网URL:http://www.mpdf1.com/mpdf/index.php github:https://github.com/mpdf/mpdf 官方开发手册,英文的:http://www. ...
- php使用MPDF导出PDF文件自定义字体
最近公司要生成一个PDF文件,网上找了很多类库,使用mpdf最方便,通过HTML输入调整样式,官方地址:http://www.mpdf1.com/,更改字体这个问题困扰了我很久,网上找的方法都不适用, ...
- PHP使用FPDF pdf添加水印中文乱码问题 pdf合并版本问题
---恢复内容开始--- require_once('../fpdf/fpdf.php');require_once('../fpdi/fpdi.php'); 使用此插件 pdf 合并 并添加水印 期 ...
随机推荐
- koa源码阅读[1]-koa与koa-compose
接上次挖的坑,对koa2.x相关的源码进行分析 第一篇.不得不说,koa是一个很轻量.很优雅的http框架,尤其是在2.x以后移除了co的引入,使其代码变得更为清晰. express和koa同为一批人 ...
- Coursera在线学习---第六节.构建机器学习系统
备: High bias(高偏差) 模型会欠拟合 High variance(高方差) 模型会过拟合 正则化参数λ过大造成高偏差,λ过小造成高方差 一.利用训练好的模型做数据预测时,如果效果不好 ...
- [Leetcode] Combination Sum 系列
Combination Sum 系列题解 题目来源:https://leetcode.com/problems/combination-sum/description/ Description Giv ...
- Codeforces Round #434 (Div. 2)
Codeforces Round #434 (Div. 2) 刚好时间对得上,就去打了一场cf,发现自己的代码正确度有待提高. A. k-rounding 题目描述:给定两个整数\(n, k\),求一 ...
- python3.6升级及setuptools、pip安装
升级python3.6 1.打开官网www.python.org,找到最新3.6.3版本,复制下载链接 2.创建/app目录,wget下载到该目录下,编译安装 mkdir /app cd /app w ...
- JSP基础与提高(一).md
JSP基础 JSP的由来 1.1. 为什么有JSP规范 Servlet技术产生以后,在使用过程中存在一个很大的问题,即为了表现页面的效果而需要输出大量的HTML标签,这些标签在Servlet中表现为一 ...
- ASP.NET Core 2.0 MVC 发布部署--------- SUSE 16 Linux Enterprise Server 12 SP2 X64 具体操作
.Net Core 部署到 SUSE 16 Linux Enterprise Server 12 SP2 64 位中的步骤 1.安装工具 1.apache 2..Net Core(dotnet-sdk ...
- C语言调用正则表达式
标准的C和C++都不支持正则表达式,但有一些函数库可以辅助C/C++程序员完成这一功能,其中最著名的当数Philip Hazel的Perl-Compatible Regular Expression库 ...
- CSS Sprites的原理(图片整合技术)(CSS精灵)/雪碧图
CSS Sprites的原理(图片整合技术)(CSS精灵)/雪碧图 一.将导航背景图片,按钮背景图片等有规则的合并成一张背景图,即将多张图片合为一张整图,然后用background-positio ...
- jmeter-----GUI运行和非GUI运行的区别
gui:界面会消耗很多资源,并且运行的结果是保存在Jmeter运行的内存中.当时间一长,内存增长到一定程度,就会报错,甚至假死. 非gui:实时的将运行log文件保存到本地文件中,不会撑爆内存.并且对 ...