安装方法:
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 字体,也可用雅黑字体,【雅黑字体会导致导出文档过大】下载链接 https://www.zitijia.com/downloadpage?itemid=337320219770899513
安装字体,将字体传到服务器目录下,在命令行运行以下命令:
php vendor/dompdf/dompdf/load_font.php 'Droid' public/static/font/DroidSansFallback.ttf
[root@iZ2ze11yurly2auu4pnwqbZ yzjy-live] php vendor/dompdf/dompdf/load_font.php 'Droid' public/static/font/DroidSansFallback.ttf\Unable to find bold face file.Unable to find italic face file.Unable to find bold_italic face file.Copying public/static/font/DroidSansFallback.ttf to /www/wwwroot/yzjy-live/vendor/dompdf/dompdf/lib/fonts/DroidSansFallback.ttf...Generating Adobe Font Metrics for /www/wwwroot/yzjy-live/vendor/dompdf/dompdf/lib/fonts/DroidSansFallback...
注意上面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
