インストール
- 下記のパッケージはHTMLをPDFに変換するライブラリです。 github.com
composer require barryvdh/laravel-dompdf
設定ファイル
'providers' => [
Barryvdh\DomPDF\ServiceProvider::class,
],
'aliases' => [
'PDF' => Barryvdh\DomPDF\Facade::class,
],
ルーティングの設定
Route::get('/pdf', [PdfController::class, 'index'])->name('pdfs.index');
コントローラー
- このパスapp \ Http \ Controllers \ PdfController.phpに新しいコントローラーを作成し、以下のコマンドをコピーします。
- PDF::loadViewに指定したViewで出力された内容がPDFになる
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Models\User;
use PDF;
class PdfController extends Controller
{
public function index(Request $request){
$user = User::latest()->paginate(5);
if($request->has('download'))
{
$pdf = PDF::loadView('pdfs.index',compact('user'));
return $pdf->download('pdfview.pdf');
}
return view('pdfs.index',compact('user'));
}
}
View
@extends('layouts.app')
<div class="container">
<div class="row">
<div class="col-lg-12" style="margin-top: 15px ">
<div class="pull-right">
<a class="btn btn-primary" href="{{route('pdfs.index',['download'=>'pdf'])}}">Download PDF</a>
</div>
</div>
</div><br>
<table class="table table-bordered">
<tr>
<th>Name</th>
<th>Email</th>
</tr>
@foreach ($user as $user)
<tr>
<td>{{ $user->name }}</td>
<td>{{ $user->email }}</td>
</tr>
@endforeach
</table>
</div>
実行結果
- 右がブラウザの画面で左が生成されたPDFファイルとなります。
