最有效的php生成pdf文件的方法,html转pdf文件方法

之前有个客户需要把一些html页面生成pdf文件,然后我就找一些用php把html页面围成pdf文件的类。方法是可谓是找了很多很多,什么html2pdf,pdflib,FPDF这些都试过了,但是都没有达到我要的求。

pdflib,FPDF这两个方法是需要编写程序去生成pdf的,就也是讲不支持直接把html页面转换成pdf;html2pdf这个虽然可以把html页面转换成pdf文件,但是它只能转换一般简单的html代码,如果你的html内容要的是通过后台新闻编辑器排版的那肯定不行的。

纠结了半天,什么百度,谷歌搜索都用了,搜索了半天,功夫不负有心人,终于找到一个非常好用的方法了,下面就隆重介绍。

它就是:wkhtmltopdf,wkhtmltopdf可以直接把任何一个可以在浏览器中浏览的网页直接转换成一个pdf,首先说明一下它不是一个php类,而是一个把html页面转换成pdf的一个软件,但是它并不是一个简单的桌面软件,而且它直接cmd批处理的。而且php有个shell_exec()函数。下面就一步一步介绍如何用php来让它生成pdf文件的方法。

一,下载并安装pdf
下载地址:http://code.google.com/p/wkhtmltopdf/downloads/list
上面有各种平台下安装的安装包,英文不好的直接谷歌翻译一下。下面以 windows平台上使用举例,我的下载的是wkhtmltopdf-0.9.9-installer.exe这个版本,我在win7 32位64位和windows 2003上安装测试都没有问题的。下载好以后直接安装就可以了,注意安装路径要知道,下面会用到的。
安装好以后需要在系统环境变量变量名为"Path"的后添加:;C:Program Files (x86)wkhtmltopdf 也就是你安装的目录。安装好以后重启电脑。

二,测试使用效果
直接在cmd里输入:wkhtmltopdf http://www.shwzzz.cn/ F:website1.pdf
第一个是:运行软件名称(这个是不变的) 第二个是网址 第三个是生成后的路径及文件名。回车后是不是看生一个生成进度条的提示呢,恭喜您已经成功了,到你的生成目录里看看是不是有一个刚生成的pdf文件呢。

三,php里调用
php里调用是很简单的,用shell_exec这个函数就可以了,如果shell_exec函数不能用看看php.ini里是否补禁用了。
举例:<?php shell_exec("wkhtmltopdf http://www.shwzzz.cn/ 1.pdf") ?>

三,解决分页问题
wkhtmltopdf 很好用,但也有些不尽人意。就是当一个html页面很长我需要在指定的地方分页那怎么办呢? wkhtmltopdf 开发者在开发的时候并不是没有考虑到这一点,
例如下面这个html页面:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><title>pdf</title><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head><style type="text/css">*{ margin:0px; padding:0px;}div{ width:800px; height:1362px;margin:auto;}</style><body><div style=" background:#030"></div><div style=" background:#033"></div><div style=" background:#369"></div><div style=" background:#F60"></div><div style=" background:#F3C"></div><div style=" background:#F0F"></div><div style=" background:#0FF"></div><div style=" background:#FF0"></div><div style=" background:#00F"></div><div style=" background:#0F0"></div><div style=" background:#033"></div><div style=" background:#369"></div><div style=" background:#F60"></div><div style=" background:#030"></div><div style=" background:#033"></div><div style=" background:#369"></div><div style=" background:#F60"></div><div style=" background:#F3C"></div><div style=" background:#F0F"></div><div style=" background:#0FF"></div><div style=" background:#FF0"></div><div style=" background:#00F"></div><div style=" background:#0F0"></div></body></html>

当我把它生成pdf的时候我想让每个块都是一页,经过无数次调试pdf的一页大约是1362px,但是越往后值就不对了,目前还不知道pdf一页是多少像素。

但是wkhtmltopdf 有个很好的方法,就是在那个div的样式后添加一个:page-break-inside:avoid;就ok了。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><title>pdf</title><link href="css/style.css" rel="stylesheet" type="text/css" /><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /></head><style type="text/css">*{ margin:0px; padding:0px;}div{ width:800px; min-height:1362px;margin:auto;page-break-inside:avoid;}</style><body><div style=" background:#030"></div><div style=" background:#033"></div><div style=" background:#369"></div><div style=" background:#F60"></div><div style=" background:#F3C"></div><div style=" background:#F0F"></div><div style=" background:#0FF"></div><div style=" background:#FF0"></div><div style=" background:#00F"></div><div style=" background:#0F0"></div><div style=" background:#033"></div><div style=" background:#369"></div><div style=" background:#F60"></div><div style=" background:#030"></div><div style=" background:#033"></div><div style=" background:#369"></div><div style=" background:#F60"></div><div style=" background:#F3C"></div><div style=" background:#F0F"></div><div style=" background:#0FF"></div><div style=" background:#FF0"></div><div style=" background:#00F"></div><div style=" background:#0F0"></div></body></html>

最有效的php生成pdf文件的方法,html转pdf文件方法

时间: 2024-12-29 05:26:50

最有效的php生成pdf文件的方法,html转pdf文件方法的相关文章

允许嵌入到PDF,Word文档和其他文件的条形码控件UPC/EAN Barcode Font Advantage Package

IDAutomation的UPC/EAN Barcode Font Advantage Package是一个先进的字体产品,它所用的工具,宏和源代码可以使用一个单一的字体文件来创建UCC-12, UPCA, UPCE, EAN8, EAN13, JAN, ISBN 和Bookland条形码.该字体满足ANSI, ISO和IEC 2000规格说明要求(ISO 15420:2000). 具体功能: 为了创建合适的UPC和EAN条形码类型,打印的字符必须要从UPC/EAN条形码字体数据表上定义的表格上

【使用Itext处理PDF文档(新建PDF文件、修改PDF文件、PDF中插入图片、将PDF文件转换为图片)】

iText简介 iText是著名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库.通过iText不仅可以生成PDF或rtf的文档,而且可以将XML.Html文件转化为PDF文件. iText的安装非常方便,下载iText.jar文件后,只需要在系统的CLASSPATH中加入iText.jar的路径,在程序中就可以使用iText类库了. 1.包的引用 1 import java.io.FileNotFoundException; 2 import java.i

pdf文件怎么编辑 如何编辑pdf文件的三种方法

pdf文件越来越流行,工作中经常遇到需要修改pdf文件的情况.一般人的电脑上都为pdf文件安装了一个pdf阅读器,可它只能用来阅读查看pdf文件,并不能满足人们的编辑需求.那么pdf文件怎么编辑?下面小编给大家讲讲关于如何编辑pdf文件的三种方法.     方法一:直接编辑,一步到位     如果要对pdf文件进行编辑,我们则需要安装pdf编辑器.最新版的迅捷pdf编辑器可以编辑pdf文件中的任何内容,包括文字.图片.页眉页脚.添加注释等等.迅捷pdf编辑器如何编辑pdf文件?     首先需要

如何用PDF打印机打印出没有杂质的文件

以前碰到好的技术文章会选择右击然后选择打印,可是最后的打印结果是不令人满意的,众多的广告以及各种垃圾信息都在上面的,这一点给我印象最好的是脚本之家,因为它提供了打印功能,当你点击打印后它就会出现你想要打印的内容,点击右上角的打印后它就会给你打印一份没有杂质的PDF(你也可以选择别的打印机)文件:今天在看技术文章时发现PDF阅读器(因为用的是福昕所以这里以它作为例子)带有一个功能,这个功能在打开阅读器的顶端的中间->名字叫[从剪切板创建]: 当你有想要打印的文章时,就把它复制到剪切板,然后点击PD

C#利用NPOI生成具有精确列宽行高的Excel文件

前言 NPOI是操作Excel的神器,导出导入快如闪电, 但是SetColumnWidth函数个人感觉不会用,怎么弄都无法控制好,因为他是以字符数量去设置宽度,实际上Excel列宽还有个像素的概念,更搞不懂了 //附带SetColumnWidth的用法和注释 [csharp] view plaincopy IWorkbook hssfworkbook = new HSSFWorkbook(); ISheet sheet1 = hssfworkbook.CreateSheet("Sheet1&qu

增加PDF文件对比度的粗浅原理,及方法

  上边这张照片不是异形,而是著名的鹦鹉螺.下边这张照片,是送给研究生同学的毕业纪念,向龙同学帮我激光雕刻的. 最近的照片在[http://www.douban.com/photos/album/134230762/]. 电子书扫描版跟照片差不多,一个可能的问题是看起来乌突突的,黑的不够黑,白的不够白,像是蒙了一层雾.用picasa的luck功能或者snapseed的automatic功能,都能把图片上的雾去掉.但是同样的功能用在PDF上的软件我没有找到. 但是如果弄懂了原理--让我想起 倚天屠

[PDF文件怎么编辑]如何在PDF文档中插入图片

收到一份PDF格式文档需要进行编辑,文件中只有文本内容,需要在页面中为对应的配图,也就是在PDF中添加图片,作为一个只懂得用阅读器来查看文档人来说,编辑PDF文件可谓是一件难事,这种格式的文件是如何编辑的呢? 首先对PDF文档内容的修改需要用到对应的PDF编辑器,所以先进行下载安装. 打开PDF编辑器,选择"文件-打开"命令,打开需要编辑的PDF文档. 文档打开后切换到需要添加图片的页面,选择"文档-添加图像"命令,会弹出打开文件对话框. 在对话框中选择需要添加的图

利用PDF.JS插件解决了本地pdf文件在线浏览问题(根据需要隐藏下载功能,只保留打印功能)

我是在IE11和谷歌上做的测试,都可以显示,把做出的东西记录下来,方便大家还有自己学习! 可以在IIS7服务器上也可以下载Tomcat来做服务器 Tomcat下载地址   http://pan.baidu.com/s/1dEEUFQD 根据百度经验安装和配置Tomcat   http://jingyan.baidu.com/article/870c6fc33e62bcb03fe4be90.html 有关pdf.js的介绍在如下网址   https://github.com/mozilla/pdf

C#基于NPOI生成具有精确列宽行高的Excel文件的方法

本文实例讲述了C#基于NPOI生成具有精确列宽行高的Excel文件的方法,是非常具有实用价值的技巧分享给大家供大家参考.具体方法如下:. 一.前言 NPOI是操作Excel的神器,导出导入快如闪电, 但是SetColumnWidth函数个人感觉不会用,怎么弄都无法控制好,因为他是以字符数量去设置宽度,实际上Excel列宽还有个像素的概念,更难搞懂了. //附带SetColumnWidth的用法和注释 IWorkbook hssfworkbook = new HSSFWorkbook(); ISh