使用前提:wkhtmltopdf
https://wkhtmltopdf.org/downloads.html
安装:
composer require barryvdh/laravel-snappy
config中的app.js中
providers中添加
Barryvdh\DomPDF\ServiceProvider::class,
aliases中添加
'PDF' => Barryvdh\Snappy\Facades\SnappyPdf::class,
'SnappyImage' => Barryvdh\Snappy\Facades\SnappyImage::class,
配置文件生成,config/snappy.php,生成后修改文件中的 binary 的值为wkhtmltopdf的安装位置,对应修改为bin/xxx
php artisan vendor:publish --provider="Barryvdh\Snappy\ServiceProvider"
实际使用
public function html2pdf(){
// 转pdf,转图片的时候使用snappy.image.wrapper
$pdf = App::make('snappy.pdf.wrapper');
// html中的meta必须使用utf-8,否则可能出现中文乱码
$str = <<<EOD
<!DOCTYPE html>
<html>
<head>
<title></title>
<meta http-equiv='Content-Type' content='text/html; charset=utf-8'/>
</head>
<style>
</style>
<body>
<p>来源:中国证券报·中证网</p>
<p>中证网讯(记者 崔小粟 实习记者金一丹)7月17日,<strong class="ql-size-large"><u>民航局批准第二批国际客运奖励航班。日本航空JL829/0、老挝航空QV815/6、海南航空HU491/</u></strong>2、海南航空HU7975/6四个国际往返航班每周从1班增至2班。</p>
<p>其中,7月21日至10月24日,新<span style="background-color: rgb(255, 255, 204);">增日本航空JL829/0(东京-大连-东京</span>)每周二的往返客运航班;7月18日至10月24日,新增老挝航空QV815/6(万象-昆明-万象)每周四的往返客运航班;7月20日至10月24日,新增海南航空H<s>U491/2(北京-布鲁塞尔-北京,第</s>一入境点为西安)每周五(去程)、每周日(回程)的往返客运航班;7月18日至10月24日,新增海南航空HU7975/6(北京-多伦多-北京,第一入境点为西安)每周六(去程)<span style="color: rgb(230, 0, 0);">、每周一(回程)的往返客运航班。</span></p><p><span style="color: rgb(230, 0, 0);">根据《民航局关于调整国际客运航班的通知》,航空公司同一航线航班,入境后核酸检测结果为阳性的旅客人数连</span>续3周为零的,可在航线经营许可规定的航班量范围内增加每周1班,最多达到每周2班。</p>
<p><img src="https://pics2.baidu.com/feed/a50f4bfbfbedab64ceb3b09d941953c578311e64.jpeg?token=ad8a3fbaadf795e4f5d78fa116c50cdb"></p>
</body>
</html>
EOD;
// 转图片的时候不需要后面2个链式操作,只写到loadHtml
// 为了防止纸张分页导致dom截断,可以设置成单页纸张,高度由前端传进来动态修改
// 宽度因为后端为A4的宽(单位mm),所以前端给的长度要按照比例处理后再给
// ->setOption('page-width', '210')->setOption('page-height', '2000')
$pdf->loadHTML($str)->setPaper('a4', 'landscape')->setWarnings(false);
// 直接页面预览
// return $pdf->stream();
// 下载,命名可以自定义,转图的时候后缀改成图片后缀格式
return $pdf->download('test.pdf');
}