记php使用wkhtmltopdf生成pdf文件
环境:centos7 + php7.3(thinkphp6)
wkhtmltopdf: https://wkhtmltopdf.org/index.html
------------
坑点:
1.linux系统 html生成的pdf中文乱码(解决方法参考:https://juejin.cn/post/7069749157329633311)
主要就是将windows中文字体复制到 /usr/share/fonts/ 内,然后清理一遍字体缓存
2.wkhtmltopdf中访问的网址url中多个参数连接符&问题
使用英文双引号括起来
3.php使用exec()时,不支持中文文件名问题
在调用的时候添加下编码
示例代码:
// 使用 $set_charset 使 exec 支持中文
// $set_charset = 'export.UTF-8'; $set_charset = 'export LANG=en_US.UTF-8;';
$fileUrl = '/home/pdf/123/中文名.pdf';
// 访问的url中多个参数连接符 & 前后要用英文双引号包围起来(这里由于字符串用双引号括起来了,所以 & 前后使用了转义字符 \" ) exec($set_charset."wkhtmltopdf --javascript-delay 3000 http://www.test.com?param1=abc\"&\"param2=123 {$fileUrl} 2>&1", $out, $res);
// var_dump(mb_convert_encoding($out, 'UTF-8', 'UTF-8,GBK,GB2312,BIG5'));