用PHP将html转成PDF

作者: JONE 分类: 编程 发布时间: 2021-07-04 11:11

目前尝试过

tecnickcom/tcpdf、dompdf/dompdf 这两种php工具包,虽然能将html转成pdf,但是都有个致命的问题就是对css支持的不好,构建的html样式在被转换成pdf之后样式都变形了,并未完全生效,查了一下百度,说是这种方案对css的支持有限,支持全部的css样式。

解决Dompdf中文乱码问题

 

另一种解决方案

wkhtmltopdf安装部署,php调用的方法

  • 安装wkhtmltopdf
  • php调用wkhtmlpdf
    • composer安装
    • 安装mikehaertl/phpwkhtmltopdf依赖
    • php调用wkhtmltopdf

1.官网安装软件 https://wkhtmltopdf.org/downloads.html

2.设置软件环境变量,wkhtmltopdf -V 查看环境变量是否设置成功

3.创建一个简单的html,命名为test.html ,内容如下(参考),在cmd命令行中打开test.html所在文件夹然后使用命令wkhtmltopdf test.html test.pdf就会发现当前文件夹下出现了test.pdf的文件

<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
</head>
<body>
    <p>hello, you are succeed</p>
</body>
</html>

4.php调用wkhtmlpdf,使用composer中的mikehaertl/phpwkhtmltopdf包

5.php调用wkhtmltopdf

use mikehaertl\wkhtmlto\Pdf;

// You can pass a filename, a HTML string, an URL or an options array to the constructor
$pdf = new Pdf('/path/to/page.html');

// On some systems you may have to set the path to the wkhtmltopdf executable
// $pdf->binary = 'C:\...';

if (!$pdf->saveAs('/path/to/page.pdf')) {
$error = $pdf->getError();
// ... handle error here
}

使用教程 https://www.jianshu.com/p/823dea67b6b9

 

但是即使使用wkhtmltopdf可以直接解决字体和样式问题。但是生成的pdf的宽高比,不是我想要的。

 

wkhtmltopdf用php调用的时候发生 未知错误,”Failed without error message: wkhtmltopdf “C:\Users\PC\AppData\Local\Temp\tmpDDE1.tmp.html” “C:\Users\PC\AppData\Local\Temp\tmpDDF1.tmp.pdf” (Exit code: 1)“

找不到解决愿意。已放弃pdf调试

各种尝试,还是没找到完美的解决方案