Laravelでpdfファイルを作成したい場合には、snappy pdfが便利。
ただ、インストールが面倒なのが難点。
Windowsユーザーのわたしは、最初、しくじりました。
本記事ではWindowsユーザー用にインストール方法を解説します。
本番環境では変更が必要ですが、どのように変更するか、最後に説明します。
Laravelでpdf作成:snappy pdf のインストールと使い方【Windows】
まずはインストールから進めていきましょう。
① wkhtmltopdf-windowsのインストール
snappyをインストールする歳、wkhtmltopdfというパッケージも入れる必要があります。
これはHTMLをPDFに変換するためのコマンドラインツールです。
Windows用のwkhtmltopdfは、下記コマンドでインストールします。
composer require wemersonjanuario/wkhtmltopdf-windows "0.12.2.3"
② snappy pdf のインストール
下記コマンドで Laravel-snappyをインストールします。
composer require barryvdh/laravel-snappy
app/config/app.phpファイルのプロバイダーとエイリアスに登録しておきます。
【providers】
Barryvdh\Snappy\ServiceProvider::class,
【aliases】
'PDF' => Barryvdh\Snappy\Facades\SnappyPdf::class,
'SnappyImage' => Barryvdh\Snappy\Facades\SnappyImage::class,
③ 設定ファイル作成
snappy pdfの設定ファイルを作成します。
php artisan vendor:publish --provider="Barryvdh\Snappy\ServiceProvider"
app/configの中にsnappy.phpファイルができます。
ファイルを開き、pdfのbinary部分を下記のように変更します。
'binary' => base_path('vendor\wemersonjanuario\wkhtmltopdf-windows\bin\64bit\wkhtmltopdf'),
imageのbinaryはこちら。
'binary' => 'vendor\wemersonjanuario\wkhtmltopdf-windows\bin\64bit\wkhtmltoimage',
変更の後のファイルは、次のようになります。

④ ルート設定
あとはルート設定・コントロール設定・ビューファイルの作成などすすめていきましょう。
ルート設定はこちら。
表示用とPDFダウンロード用の2つを作っておきます。
Route::get('/dango', 'DangoController@dango')->name('dango');
Route::get('/pdf', 'DangoController@pdf')->name('pdf');
⑤ コントローラーの作成
下記コマンドでコントローラーを作成します。
php artisan make:controller DangoController
DangoControllerファイルを開き、一番上にuse PDF を入れておきます。
使用したいデータベースのモデル名も入れておきます。
use App\Models\Dango; use PDF;
さらに表示用のメソッドを次のようにいれます。
public function dango(){
return view('dango');
}
PDFダウンロード用のメソッドはこちら。
public function pdf(){
$dangos=Dango::all();
$pdf=PDF::loadView('dango_pdf', compact('dangos'));
return $pdf->download('dangofile.pdf');
}
dangosデータベースの中身を$dangosに代入し、これをcompactでビューに引き渡しています。

ご利用になりたいデータベースによって、このあたりは変更してください。
⑥ ダウンロードボタンの作成
resources/viewsの中にdango.blade.phpファイルを作成。
次のようにPDFダウンロードボタンを作ります。
<a href="{{ route('pdf') }}">
<button class="btn btn-success">PDF作成</button>
</a>
⑦ PDFファイルの中身を作成
resources/viewsの中にdango_pdf.blade.phpファイルを作ります。
次のようにPDFの内容を作ります。
こちらの中身も、ご利用になるデータベース等によって変更してください。
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>お団子プロジェクト</title>
</head>
<body>
お団子プロジェクト
@foreach($dangos as $dango)
{{$dango->dango}}
@endforeach
</body>
⑧ テスト
これで準備OKです。
サーバーを立ち上げ、http://127.0.0.1:8000/dangoを表示させます。

PDF作成ボタンをクリックすると、PDFファイルをダウンロードできます。
本番環境では設定を変えましょう。
これで完了ですが、開発環境はWindowsでも、本番環境は違います。
本番環境用には、異なるwkhtmltopdfをインストールする必要があります。
また設定ファイルも変更しておきましょう。
本番用wkhtmltopdfのインストール
64bit環境用には、こちらのコマンドでwkhtmltopdfとwkhtmltoimageをインストール。
composer require h4cc/wkhtmltopdf-amd64 0.12.x composer require h4cc/wkhtmltoimage-amd64 0.12.x
本番用設定ファイル
app/configの中のsnappy.phpのbinaryは、次のように設定します。
【PDF】
'binary' => base_path('vendor\wemersonjanuario\wkhtmltopdf-windows\bin\64bit\wkhtmltopdf'),
【image】
'binary' => 'vendor\wemersonjanuario\wkhtmltopdf-windows\bin\64bit\wkhtmltoimage',
編集後のsnappy.phpファイルは次のとおりです。

本場環境にデプロイ後、composer install を行うと、インストールしたパッケージが反映されます。


コメント
>⑥ ダウンロードボタンの作成
>resources/viewsの中にdango.blade.pdfファイルを作成。
これは「dango.blade.php」の誤りですね。
ですね。修正しました。
ご指摘ありがとうございます!