見出し画像

Laravel8でpdfを作成してみる

簡単にpdfの作成ができたのメモ

まずはライブラリインストール

composer require barryvdh/laravel-dompdf

composer.jsonにこちらが設定されていることを確認してください。

ドキュメント

githubにいろいろ書いてあるので、公式もぜひ見てください。

フォントを準備

日本語を出力するためには日本語フォントが必要です。
こちらからさくっとダウンロードして storage/fonts に入れてください。

configの設定を確認

config/dompdf.phpで条件を設定できます。
こちらのコマンドを打って、configファイルを作成してください。

php artisan vendor:publish --provider="Barryvdh\DomPDF\ServiceProvider"

詳細は公式を見ていただければと思います。
多すぎて書ききれぬのです。

ビューの準備

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <title>Ticket</title>
    <style>
        @font-face {
            font-family: ipag;
            font-style: normal;
            font-weight: normal;
            src: url('{{ storage_path('fonts/ipag.ttf') }}');
        }

        @font-face {
            font-family: ipag;
            font-style: bold;
            font-weight: bold;
            src: url('{{ storage_path('fonts/ZenKakuGothicNew-Bold.ttf') }}');
        }

        body {
            font-family: ipag;
            margin: 0px;
        }
    </style>
</head>

<body>
    <div class="container">
        <div class="content">
            <div>
                <b>テストテストテスト</b>
            </div>
            <div>
                ああああああああああ
            </div>
        </div>
    </div>
</body>

</html>

適当に準備してくださいました。
@font-faceでは通常と太字を出力するために2つ設定されています。

使ってみる!

use PDF;

public function exsample()
{
    $filename = 'filename.pdf';
    $pdf = PDF::loadView('view_file_name');
    return $pdf->stream($filename);
}

これで出力されます。
簡単ですね!

setPaperメソッドを使えば大きさも変えられます。

$pdf = PDF::loadView('view_file_name')->setPaper('a4', 'landscape');

大きさはカスタムで指定することができます。

$customPaper = [0, 0 , 100, 200];
$pdf = PDF::loadView('view_file_name')->setPaper($customPaper, 'landscape');

最後に

簡単にpdfができるのは嬉しいですね。
帳票とか出さないといけないなど多々あるかと思いますので、ぜひ使ってみてはいかがでしょうか。
また、便利なライブラリがあれば書いていきます。

この記事が気に入ったらサポートをしてみませんか?