Laravel-dompdf でPDF領収書発行システムをA5横書きを指定して作成する
- 2020.03.29
- php備忘録
- A5, ECシステム, Laravel, Laravel-dompdf, PDF, PHP, スクリプト備忘録, 向き変更, 提案書作成システム, 横書き, 用紙サイズ変更, 用紙横向き, 領収書発行システム
Laravel-dompdf でPDF領収書発行システムをA5横書きを指定して作成する
Laravel-dompdf、超便利です。
なんといっても、bladeを読み込んでそのままPDF化してくれるというこの機能!
ただ、私が四苦八苦したのは『横書き』の設定方法についての参考記事の少なさでした。
という事で、今後の為にも備忘録です。
Laravel-dompdfで出力用紙サイズの指定と向きを指示する方法
ノーマル状態だとA4縦書きになります。
1 2 3 4 |
$pdf = \PDF::loadView('pdf/receipts', compact('billing') ); return $pdf->stream('領収書.pdf'); |
compact()で渡しているのは領収書用blade(pdf/receipts)に送る変数です。
この中に税率10%の商品合計とかお支払とかそんな情報を入れてblade側でいつも通りに{{$billing->total}}とかで呼んであげればサクッとPDFが作れます。
用紙のサイズを指定したいときは【PDF::】にもう一つ値を加えてやります。
1 2 3 4 |
$pdf = \PDF::loadView('pdf/receipts', compact('billing') )->setPaper('a4', 'landscape'); return $pdf->stream('領収書.pdf'); |
上の例だと、A4横書きのPDFが作成できます。setPaperという指標で用紙サイズと向きを指定するだけという超簡単さ。
setPaperでの指示について今調べた範囲の情報まとめ
- setPaper(‘a4’, ‘landscape’) => A4横書き
- setPaper(‘A5’, ‘landscape’) => A5横書き ※Aは大文字小文字どちらでも問題なし
- setPaper(‘landscape’) => A4縦書きで出力 ※横書きにならない。横書きにする場合用紙サイズの指定が必要
- setPaper([0, 0, 396.85, 685.98], ‘landscape’) => 用紙サイズを指示して出力 [横開始位置,縦開始位置,用紙縦サイズ,用紙横サイズ]となっている※’landscape’を忘れると強制的に縦書きになる
- setPaper([0, 0, 396.85, 685.98]) => ‘landscape’を忘れると強制的に縦書きになるため、[0, 0, 685.98, 396.85]と同じ状態で出力される
setPaper(‘A5’, ‘portrait’)という指標を使っている方がいたが、この意味についてはわからなかった。
portraitがついていてもいなくても縦書きになるので、基本的にはなくても良いのだと勝手に解釈する事にしました。
URLにアクセスしたらブラウザで開かずダウンロードさせたい
その場合はreturnでダウンロード指示すればOKです。
1 2 3 4 |
$pdf = \PDF::loadView('pdf/receipts', compact('billing') ); return $pdf->download('領収書.pdf'); |
これだけで『ファイル名:領収書.pdf』でアクセス時にダウンロードを行います。いやぁ~簡単便利。
縦書きと横書きを場合分けしたい
今回私が作成したかったのは2つありました。
某企業様用の『提案書作成ツール』と自社用の『領収書発行システム』。
自社用だけであれば領収書ですから場合分けは不要です。
しかし、受注したシステムの顧客要望は『縦書きと横書きの提案書がある』でしたからどうしても場合分けが必要。
そんな時は提案書テンプレートを格納するデータベースに縦横の指標を入れておけば簡単に解決します。
1 2 3 4 5 6 7 8 9 |
$proposal = Proposal::find($proposal_id); if($proposal->direction === 1){ $pdf = \PDF::loadView('pdf/proposals',compact('proposal'))->setPaper('a4', 'landscape'); return $pdf->download('ご提案書.pdf'); }else{ $pdf = \PDF::loadView('pdf/proposals',compact('proposal')); return $pdf->download('ご提案書.pdf'); } |
上の例では、提案書を格納しているテーブルに『direction 』という項目(Flag)を加えて、1の時は横書きとして動作します。
まとめ
Laravel-dompdf、横書きも用紙指定も出来るとなればLaravelでは最強かもしれません。
-
前の記事
見つめ直す必要がある『価格』と『価値』について 2020.03.26
-
次の記事
領収書発行システム実装してしまいました。 2020.03.30
コメントを残す