安装wkhtmltopdf
官网https://wkhtmltopdf.org/
windows系统安装
进入官网,点击downloads,选择相应的版本,下载安装包,安装过程中一直点下一步就安装好了
打开cmd,进入安装路径下的bin目录,运行以下命令生成一个pdf测试是否正常
test.html是自行编写的测试页面
wkhtmltopdf D:test.html D:baidu.pdf
linux系统安装
centos为例
安装 wkhtmltopdf
yum install wkhtmltopdf
安装 Xvfb
yum install Xvfb
运行
//生成图片
/usr/bin/wkhtmltoimage.sh www.baidu.com test.png
//生成pdf
/usr/bin/wkhtmltopdf.sh www.baidu.com test.pdf
在php中使用
可以使用命令调用也可以用一些第三方的包
我这里在tp6框架下使用的phpwkhtmltopdf
composer安装
composer require mikehaertl/phpwkhtmltopdf
引入
//生成图片
use mikehaertl\wkhtmlto\Image;
//生成PDF
use mikehaertl\wkhtmlto\Pdf;
使用
//生成HTML和CSS
$html = <<<EOD
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<style>
table {
border-collapse: collapse;
width: 100%;
max-width: 600px;
margin: 0 auto;
}
th, td {
border: 1px solid #ddd;
padding: 10px;
text-align: center;
}
th {
background-color:#f2f2f2;
}
</style>
<body>
<table>
<tr>
<th>姓名</th>
<th>年龄</th>
<th>性别</th>
</tr>
<tr>
<td>张三</td>
<td>20</td>
<td>男</td>
</tr>
<tr>
<td>李四</td>
<td>25</td>
<td>女</td>
</tr>
</table>
</body>
</html>
EOD;
//$html可以是文件路径也可以直接放html
$image = new Image($html);
// 懒得设置环境变量,直接把wkhtmltopdf安装路径写到这里就好
$image->binary = 'C:\Program Files\wkhtmltopdf\bin\wkhtmltoimage';
//在linux下的路径
//$image->binary = '/usr/bin/wkhtmltoimage.sh';
$image->saveAs('test.png');
踩坑
1.在linux中生成图片乱码,缺少中文字体
解决办法:把windows系统下的 C:\Windows\Fonts\simsun.ttc字体文件上传到linux /usr/share/fonts
2.xvfb-run: error: xauth command not found
解决办法:将报错忽略
vi /usr/bin/xvfb-run
-if ! which xauth >/dev/null; then
- error "xauth command not found"
- exit 3
-fi
+#if ! which xauth >/dev/null; then
+# error "xauth command not found"
+# exit 3
+#fi