使用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 相关文章推荐
一次编写,随处运行
Oct 09 PHP
如何在PHP中使用Oracle数据库(6)
Oct 09 PHP
PHP 引用文件技巧
Mar 02 PHP
PHP中利用substr_replace将指定两位置之间的字符替换为*号
Jan 27 PHP
php的zip解压缩类pclzip使用示例
Mar 14 PHP
非常好用的Zend Framework分页类
Jun 25 PHP
PHP中的Session对象如何使用
Sep 25 PHP
PHP实现QQ空间自动回复说说的方法
Dec 02 PHP
PHP动态生成指定大小随机图片的方法
Mar 25 PHP
php远程下载类分享
Apr 13 PHP
thinkPHP5框架auth权限控制类与用法示例
Jun 12 PHP
PHP预定义接口――Iterator用法示例
Jun 05 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同时支持GIF、png、JPEG
2006/10/09 PHP
php文章内容分页并生成相应的htm静态页面代码
2010/06/07 PHP
php不写闭合标签的好处
2014/03/04 PHP
PHP检测用户语言的方法
2015/06/15 PHP
屏蔽PHP默认设置中的Notice警告的方法
2016/05/20 PHP
thinkPHP5框架导出Excel文件简单操作示例
2018/08/03 PHP
显示、隐藏密码
2006/07/01 Javascript
jquery JSON的解析方式
2009/07/25 Javascript
JS 图片缩放效果代码
2010/06/09 Javascript
jquery制作弹窗提示窗口代码分享
2014/03/02 Javascript
DOM基础教程之使用DOM控制表单
2015/01/20 Javascript
Ajax中解析Json的两种方法对比分析
2015/06/25 Javascript
jQuery实现大转盘抽奖活动仿QQ音乐代码分享
2015/08/21 Javascript
浅谈Node.js:Buffer模块
2016/12/05 Javascript
TypeScript学习之强制类型的转换
2016/12/27 Javascript
微信小程序 flex实现导航实例详解
2017/04/26 Javascript
Vue路由守卫及页面登录权限控制的设置方法(两种)
2020/03/31 Javascript
javascript实现点击按钮切换轮播图功能
2020/09/23 Javascript
Vue用mixin合并重复代码的实现
2020/11/27 Vue.js
[55:03]LGD vs EG 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
Python读取和处理文件后缀为.sqlite的数据文件(实例讲解)
2017/06/27 Python
在VS Code上搭建Python开发环境的方法
2018/04/06 Python
对Python3中bytes和HexStr之间的转换详解
2018/12/04 Python
在scrapy中使用phantomJS实现异步爬取的方法
2018/12/17 Python
更新修改后的Python模块方法
2019/03/03 Python
Jacobi迭代算法的Python实现详解
2019/06/29 Python
python 实现快速生成连续、随机字母列表
2019/11/28 Python
如何理解python对象
2020/06/21 Python
详解python logging日志传输
2020/07/01 Python
PyTorch安装与基本使用详解
2020/08/31 Python
经典c++面试题四
2015/05/14 面试题
实习教师自我鉴定
2013/09/27 职场文书
校园活动策划书范文
2014/01/10 职场文书
倡导文明标语
2014/06/16 职场文书
2015年“我们的节日·重阳节”活动总结
2015/07/29 职场文书
python DataFrame中stack()方法、unstack()方法和pivot()方法浅析
2022/04/06 Python