php使用wkhtmltopdf html转为ptf或图片

本文详细介绍了如何在Windows和Linux系统上安装wkhtmltopdf,包括从官网下载、在Linux中使用yum和Xvfb,以及在PHPTP6框架中通过Composer集成。还提到了处理字体问题和xauth错误的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

安装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
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值