インストール
- 下記のパッケージは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ファイルとなります。