使用PHP生成PDF方法详解


Posted in PHP onJanuary 23, 2015

利用PHP编码生成PDF文件是一个非常耗时的工作。在早期,开发者使用PHP并借助FPDF来生成PDF文件。但是如今,已经有很多函数库可以使用了,并且能够从你提供的HTML文件生成PDF文档。这让原先耗时的工作变得非常简单了。

FPDF

FPDF是一个允许使用纯PHP生成PDF文档的PHP类,换句话说,没有使用PDFlib 函数库。FPDF中的F代表免费和自由:你可以在任何情况下使用,并且支持自定义,来满足你特定的需求,特点:

1、可以选择单元、页面格式和边距

2、可以管理页眉和页脚

3、自动分页

4、自动换行和文本对齐

5、支持图片(JPEG,PNG,gif)

6、色彩丰富,支持链接

顺便也介绍一些可以直接从HTML生成PDF的函数库。

DomPDF

domPDF将HTML转换为PDF。DomPDF遵循CSS2.1的HTML布局,它是用PHP编写的渲染引擎。DomPDF以样式为主导:它会下载并读取外链样式表,内联样式和HTML元素的style属性值。并且还支持大部分的HTML可见属性。

特点:

1、处理大部分CSS2.1和少许CSS3属性,包括@import, @media & @page 规则

2、支持大部分HTML 4.1的可见属性

3、支持外部样式表,包括本地或者http/ftp链接的(通过fopen-wrappers)

4、支持复杂的表结构,包括行和列的span,separate & collapsed border models和独立的cell样式

5、支持图片(gif, png, bmp & jpeg)

6、不依赖于其他的PDF函数库

TCPDF

TCPDF也可以用于生成PDF文档,并且它是一个开源的PHP类库。

TCPDF项目开始于2002年,现在已经被成千上万的人自由使用。TCPDF is a Free Libre Open Source Software (FLOSS).

特点:

1、基本功能不依赖于其他PDF函数库

2、标准页面格式、支持页面格式自定义、边距自定义和单元计量

3、支持UTF-8编码和文字方向从右到左的语言。

4、支持TrueTypeUnicode, OpenTypeUnicode, TrueType, OpenType, Type1 and CID-0等字体

5、支持字体子集,并提供方法发布一些XHTML + CSS code, Javascript and Forms

6、支持图片和图形的转换

7、支持页面压缩(需要php-zlib扩展)

8、自动管理页眉和页脚

更多特点请戳:more

从原文的评论列表中,我也搜罗了相关的站点和开源项目:

wkhtmltopdf(评论说是HTML生成PDF的标准了):https://code.google.com/p/wkhtmltopdf/

https://github.com/mreiferson/php-wkhtmltox

pdfservices(这个你解释了,戳开就知道):http://www.pdfservices.net/

PHP 相关文章推荐
Windows下的PHP5.0安装配制详解
Sep 05 PHP
php中获得视频时间总长度的另一种方法
Sep 15 PHP
PHP URL参数获取方式的四种例子
Feb 28 PHP
php使用反射插入对象示例分享
Mar 11 PHP
必须收藏的php实用代码片段
Feb 02 PHP
linux下为php添加iconv模块的方法
Feb 28 PHP
php显示页码分页类的封装
Jun 08 PHP
LaravelS通过Swoole加速Laravel/Lumen详解
Mar 02 PHP
PHP排序算法之简单选择排序(Simple Selection Sort)实例分析
Apr 20 PHP
微信小程序发送订阅消息的方法(php 为例)
Oct 30 PHP
使用PHP开发留言板功能
Nov 19 PHP
PHP Web表单生成器案例分析
Jun 02 PHP
C# WinForm中实现快捷键自定义设置实例
Jan 23 #PHP
对PHP PDO的一些认识小结
Jan 23 #PHP
smarty模板引擎中自定义函数的方法
Jan 22 #PHP
smarty模板引擎中内建函数if、elseif和else的使用方法
Jan 22 #PHP
smarty模板引擎使用内建函数foreach循环取出所有数组值的方法
Jan 22 #PHP
smarty模板引擎从配置文件中获取数据的方法
Jan 22 #PHP
smarty模板引擎从php中获取数据的方法
Jan 22 #PHP
You might like
经典的PHPer为什么被认为是草根?
2007/04/02 PHP
Thinkphp搜索时首页分页和搜索页保持条件分页的方法
2014/12/05 PHP
php session的应用详细介绍
2017/03/22 PHP
PHP使Laravel为JSON REST API返回自定义错误的问题
2018/10/16 PHP
jquery pagination插件实现无刷新分页代码
2009/10/13 Javascript
JavaScript 类型的包装对象(Typed Wrappers)
2011/10/27 Javascript
jQuery中对未来的元素绑定事件用bind、live or on
2014/04/17 Javascript
JavaScript实现同步于本地时间的动态时间显示方法
2015/02/02 Javascript
js实现改进的仿蓝色论坛导航菜单效果代码
2015/09/06 Javascript
JavaScript jquery及AJAX小结
2016/01/24 Javascript
移动端网页开发调试神器Eruda的介绍与使用技巧
2017/10/30 Javascript
使用D3.js创建物流地图的示例代码
2018/01/27 Javascript
剖析Angular Component的源码示例
2018/03/23 Javascript
基于Vue组件化的日期联动选择器功能的实现代码
2018/11/30 Javascript
15分钟深入了解JS继承分类、原理与用法
2019/01/19 Javascript
vue.js基于v-for实现批量渲染 Json数组对象列表数据示例
2019/08/03 Javascript
在vue中实现echarts随窗体变化
2020/07/27 Javascript
[01:27:44]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Aster BO3 第一场 1月24日
2021/03/11 DOTA
python使用urllib2模块获取gravatar头像实例
2013/12/18 Python
python 3.0 模拟用户登录功能并实现三次错误锁定
2017/11/01 Python
python实现读取excel写入mysql的小工具详解
2017/11/20 Python
学习python可以干什么
2019/02/26 Python
python 多进程共享全局变量之Manager()详解
2019/08/15 Python
python基于三阶贝塞尔曲线的数据平滑算法
2019/12/27 Python
Python : turtle色彩控制实例详解
2020/01/19 Python
解决Jupyter NoteBook输出的图表太小看不清问题
2020/04/16 Python
英国足球店:UK Soccer Shop
2017/11/19 全球购物
美国网上书店:Barnes & Noble
2018/08/15 全球购物
求高于平均分的学生学号及成绩
2016/09/01 面试题
.NET面试题:什么是反射
2016/09/30 面试题
高二生物教学反思
2014/01/27 职场文书
2014年公务员思想汇报范文:全心全意为人民服务
2014/03/06 职场文书
国庆节标语大全
2014/10/08 职场文书
祝酒词范文
2015/08/12 职场文书
2016年校长新年寄语
2015/08/17 职场文书
Windows server 2012 R2 安装IIS服务器
2022/04/29 Servers