安装方法:
thinkphp5.0以及laravel5.0以上可以通过composer安装 在命令行切换到项目根目录,运行以下命令:
composer require dompdf/dompdf
接下来在controller中新建方法:
public function pdf(){
$url = 'https://www.anzichen.com.cn';
$dompdf = new \Dompdf\Dompdf();
$str=file_get_contents($url);
$dompdf->loadHtml($str);
// 设置纸张尺寸
$dompdf->setPaper('A4');
// 把网页转换成pdf
$dompdf->render();
// 在浏览器输出pdf文件
$dompdf->stream('网页转换成pdf'.time('YmdHis').'.pdf');
}
此时访问次控制器对应的url,即可输出pdf文件 遇到坑: Q:中文字符无法识别,全部显示为????? A: 1、下载load_font.php,此文件的功能是安装中文字体,运行命令:
git clone https://github.com/dompdf/utils.git
2、复制 load_font.php到 dompdf目录中,与lib 和 src 目录同级。
3、下载中文字体,推荐下载 Droid Sans Fallback 字体,也可用雅黑字体,【雅黑字体会导致导出文档过大】下载链接 http://www.17ziti.com/info/71250.html
安装字体,将字体传到服务器目录下,在命令行运行以下命令:
php vendor/dompdf/dompdf/load_font.php ‘Droid‘ public/font//DroidSansFallback.ttf
注意上面vendor/dompdf/dompdf/load_font.php和public/font//DroidSansFallback.ttf都是相对于当前命令行所在目录的相对路径,具体路径请自己修改。
运行后,若没报错,则在 vendor/dompdf/dompdf/lib/fonts/下生了 Droid.ttf,Droid.ufm 这两个文件。
4、在前端模板css样式文件中设置
```
@font-face
{
font-family:Droid;
src: url(/public/font/DroidSansFallback.ttf)
}
body {
font-family:Droid;
}
```
注意 CSS 样式中的 font-family 设置为 之前运行load_font.php中设置的字体名。
此时再次访问该地址即可输出中文无乱码pdf
Q:图片无法显示 A:暂时未找到方法解决,推荐使用mpdf包,教程:http://www.anzichen.com.cn/article/phpmpdfpdf-ge31eyn
其它问题欢迎加入QQ群96094083讨论