使用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 相关文章推荐
让PHP支持页面回退的两种方法[转]
Feb 14 PHP
PHP 强制性文件下载功能的函数代码(任意文件格式)
May 26 PHP
php flv视频时间获取函数
Jun 29 PHP
php printf输出格式使用说明
Dec 05 PHP
深入PHP获取随机数字和字母的方法详解
Jun 06 PHP
curl实现站外采集的方法和技巧
Jan 31 PHP
PHP判断浏览器、判断语言代码分享
Mar 05 PHP
php实现转换ubb代码的方法
Jun 18 PHP
PHP MYSQL实现登陆和模糊查询两大功能
Feb 05 PHP
详解PHP中foreach的用法和实例
Oct 25 PHP
PHP+Redis开发的书签案例实战详解
Jul 09 PHP
PHP实现微信公众号验证Token的示例代码
Dec 16 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
php防注入,表单提交值转义的实现详解
2013/06/10 PHP
TNC vs RR BO3 第一场 2.14
2021/03/10 DOTA
使用js获取地址栏中传递的值
2013/07/02 Javascript
动态加载script文件的两种方法
2013/08/15 Javascript
读取input:file的路径并显示本地图片的方法
2013/09/23 Javascript
利用cookie记住背景颜色示例代码
2013/11/04 Javascript
IE下window.onresize 多次调用与死循环bug处理方法介绍
2013/11/12 Javascript
JavaScript判断访问的来源是手机还是电脑,用的哪种浏览器
2013/12/12 Javascript
分步解析JavaScript实现tab选项卡自动切换功能
2016/01/25 Javascript
详解vue.js的devtools安装
2017/05/26 Javascript
基于jstree使用AJAX请求获取数据形成树
2017/08/29 Javascript
关于预加载InstantClick的问题解决方法
2017/09/12 Javascript
浅谈Angular 中何时取消订阅
2017/11/22 Javascript
Nuxt.js实战详解
2018/01/18 Javascript
vue.js实现只弹一次弹框
2018/01/29 Javascript
Vue多种方法实现表头和首列固定的示例代码
2018/02/02 Javascript
详解vue2.0监听属性的使用心得及搭配计算属性的使用
2018/07/18 Javascript
vue 下列表侧滑操作实例代码详解
2018/07/24 Javascript
vue.js 添加 fastclick的支持方法
2018/08/28 Javascript
Vue父组件向子组件传值以及data和props的区别详解
2020/03/02 Javascript
python自然语言编码转换模块codecs介绍
2015/04/08 Python
在Python的Django框架中包装视图函数
2015/07/20 Python
Python金融数据可视化汇总
2017/11/17 Python
python pandas dataframe 行列选择,切片操作方法
2018/04/10 Python
python递归全排列实现方法
2018/08/18 Python
Python正则表达式匹配日期与时间的方法
2019/07/07 Python
Python re正则表达式元字符分组()用法分享
2020/02/10 Python
Python如何省略括号方法详解
2020/03/21 Python
阿迪达斯丹麦官网:adidas丹麦
2016/10/01 全球购物
致裁判员加油稿
2014/02/08 职场文书
主办会计岗位职责
2014/03/13 职场文书
质检员岗位职责范本
2015/04/07 职场文书
幼儿园小班班务总结
2015/08/03 职场文书
2016教师廉洁教育心得体会
2016/01/13 职场文书
小公司融资,商业计划书的8切记
2019/07/15 职场文书
QT与javascript交互数据的实现
2021/05/26 Javascript