TCPDF
还是存在缺点的,我在上面的文章中也说明了,比如 :
不支持 html5 , 只支持 xhtml ,无法完整的复制整个页面的内容
style支持弱,对于表单的样式无法进行更改,就是有背景色,无法去掉等
因此我寻求另外一种更好的转变方式,将用户编辑完的HTML页面直接生成PDF,一模一样,即使是样式也一模一样。
各种试,各种查找,最终选择了 wkhtmltpdf
这个神一样的 软件
wkhtmltopdf
不是程序,而是 软件。能够安装在 linux 或者 windows 服务器上通过命令行将任意html页面转pdf。
基本上样式是一样的,不会有很大的偏差。
wkhtmltopdf
对页面代码没有什么要求,只要是html的页面即可,比 TCPDF
要强大很多(毕竟是一款软件)
wkhtmltopdf
官网地址: https://wkhtmltopdf.org/
wkhtmltopdf
命令手册:https://wkhtmltopdf.org/usage/wkhtmltopdf.txt
把安装单独拿出来是因为,wkhtmltopdf
最麻烦的地方不是使用,而是安装。
关于安装和使用报错,推荐一篇文章,说的很详细(也说了如何源码编译安装):
ubuntu-16 64位
推荐使用,不会有什么错误,只要安装了依赖库即可,不推荐直接用二进制。
依赖安装:
$ sudo apt-get install openssl build-essential xorg libssl-dev libxrender-dev
安装 wkhtmltopdf
$ sudo apt-get install wkhtmltopdf
安装其实很简单,并且 apt-get install
自动增加环境变量,可以直接使用
$ sudo wkhtmltopdf https://www.baidu.com 1.pdf
QXcbConnection: Could not connect to display
Aborted (core dumped)
解决方法:
stackoverflow 上给出的最简单的解决方案是 安装 xvfb
答案地址:
安装之后使用新的方式运行即可 原来的基础上加上 xvfb-run :
$ sudo xvfb-run wkhtmltopdf --enable-forms https://www.baidu.com baidu.pdf
需要注意的是,新版本命令行参数已经变化,百度的那些所谓的中文参考已经不能用,新的参数说明:
如果需要支持input表单,则 加上 --enable-forms
$ sudo xvfb-run wkhtmltopdf --enable-forms https://www.baidu.com baidu.pdf
将百度首页进行pdf转换:
如果需要使用代码操作,则直接使用 php 执行 shell 命令即可.我以前写过一个文章,使用php操作shell:
如果中文变成了空白,则很好弄,Linux 系统不支持中文
1、下载微软雅黑字体:
2、配置linux服务器的字体
一篇文章参考(只需要看下面的即可):
备注:
如何get提交数据到页面上
function build\_query($query\_data, $encoding = false) {
$res = '';
$count = count ( $query\_data );
$i = 0;
foreach ( $query\_data as $k => $v ) {
if ($encoding === true) {
$v = urlencode ( $v );
}
if ($i < $count - 1) {
$res .= $k . '=' . urlencode($v) . '\\&';//这边必须为\\&否则linux解析会出错
} else {
$res .= $k . '=' . urlencode($v);
}
$i ++;
}
return $res;
}
$url = "www.test.com/test.php?";
$params\['name'\] = "(1S,4R)-4,7,7-Trimethyl-3-oxo-2-oxabicyclo\[2.2.1\]heptane-1-carbonyl chloride";
$params\['cas'\] = "39637-74-6";
$params\['appearance'\] = "White crystal";
$params\['purity'\] = "≥98%";
$string = build\_query($params);
$url = $url.$string;
$commond = 'xvfb-run --server-args="-screen 0, 1024x768x24" wkhtmltopdf '.$url." /var/www/html/erpToFiles/1.pdf";
// echo $commond;die();
exec($commond, $report);
//p($report);
本文为wjw原创文章,转载无需和我联系,但请注明来自wjw博客http://wjiawen.cn
最新评论