wkhtmltopdfhtml php生成pdf快照,网页截图,网页快照完整版 (原)
首先,安装(linux安装为例)
1、下载wkhtmltopdf
wget http://download.gna.org/wkhtmltopdf/obsolete/linux/wkhtmltopdf-0.10.0_rc2-static-amd64.tar.bz2
2、解压压缩包
tar jxvf wkhtmltopdf-0.10.0_rc2-static-amd64.tar.bz2 -C /opt
3、重命名文件夹,移动文件夹
## For RHEL/CentOS/Fedora 64-Bit OS ##
# cd /opt
# mv wkhtmltopdf-amd64 wkhtmltopdf
# mv wkhtmltopdf /usr/local/bin
4、测试是否安装成功
wkhtmltopdf http://www.baidu.com /home/wwwroot/baidu.pdf
程序代码调用wkhtmltopdf生成PDF(php为例)
$pdf_file_name = 'test.pdf'; //生成文件名 $pdf_url = "/web/Public/img_sync/"; //生成文件存储路徑(服务器绝对路径) $url = "http://test.com.cn/index.php?s=/Business/Pcvisa/showlist_test/list.html"; //源网页(需要生成pdf的网页地址,外网能访问的页面地址) $h = ''; $h = " -O landscape "; //pdf横向页面不够,该设置是把页面纵向变横向,不需要则不设置即可 shell_exec("wkhtmltopdf " . $h . $url . " " . $pdf_url.$pdf_file_name);
实践中可能遇到的问题(博主遇到的问题及解决办法)
1.源网页需要验证登录状态
调用wkhtmltopdf程序,实际就是通过代码程序调用linux的应用程序(我是这么理解,有错误可以提),所以对于源网页是一些需要验证登录的页面,直接生成会因为登录问题生成失败,我们系统进入网页没有登录会直接一个
弹窗然后跳去登录,所以我生成出来的pdf就是页面中间一个您未登录请先登录的弹窗,解决办法就是看怎么把这个源网页跳过登录页吧,移出去无需验证登录的控制器或者自己配跳过登陆验证,不解释太多
2.缺字,少字,字体不统一,乱码
缺字少字字体空白八九不离十就是字体问题,比如源网页字体设置是宋体,而我们linux服务器字体包没有宋体,就会导致这些问题(我导出的时候是先遇到了缺字,缺字解决后,又遇到了字体不统一),以下看解决办法:
linux 下 fc-list //查看字体列表,确实发现并没有楷体(源网页html字体设置是楷体)
- yum -y install fontconfig //我的机器已经安装过
- 查看 /usr/shared/ 下有 fonts、fontconfig两个目录
- 将window下的字体复制出来,在C:\Windows\Fonts目录下。
我复制了两个字体,“楷体 常规”,“宋体 常规”,复制到桌面后,文件名分别为“simkai.ttf”、“simsun.ttf” - 在 /usr/shared/fonts 下新建目录chinese,将两个字体文件导入
- yum -y install ttmkfdir //这个也是已经安装过了
- 执行命令 ttmkfdir -e /usr/share/X11/fonts/encodings/encodings.dir
- 配置文件
3.由于页面默认是正A4大小,有的表格过长,生成不完整
上面代码写了,加参数配置让生成pdf纸张横向 wkhtmltopdf -O landscape www.baodu.com bd.pdf