用PHP将html转成PDF

357次阅读
没有评论

目前尝试过

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 调试

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

正文完
有偿技术支持加微信
post-qrcode
 0
评论(没有评论)
验证码