LaravelでPDF出力したいけど結局何がベストなのか

LaravelでPDF出力したいけど結局何がベストなのか

LaravelでPDF出力したいけど結局何がベストなのか

まぁそんなPDF出力を伴う案件でのお話。

技術DよりMTGでご教授伊t抱いた内容を多分に含みます。

LaravelでPDF出力する方法は何種類もある

『種類』なのでプラグインでという話ですが、一般的に検索に挙がるものを列挙してみます。

  1. Dompdf(ドムPDF)
  2. Snappy(スナッピー)

  3. TCPDF(ティーシーPDF)

  4. mpdf(エムPDF)

それぞれに其々の癖があるので、適材適所に運用するのが良さそうです。

Dompdfの特徴

  • 導入も利用方法も簡単
  • HTMLで記載したページをPDF化してくれる
  • PhpSpreadsheetと連携して運用できる

  • 利用できるCSSが少ない
  • デザイン的なページはCSSの規制でページ作成が困難

インストールコマンド

導入参考ページ

Snappyの特徴

  • 導入が大変(必要なパッケージが多く最初が大変)
  • HTMLで記載したページをPDF化してくれる
  • 利用できるCSSが多いのでデザイン的なページ作成にも耐える
  • Dompdfと比べてWeb上の資料が少ない
  • PhpSpreadsheetとの連携は不明

インストールコマンド

導入参考ページ

TCPDFの特徴

  • 導入は簡単
  • テンプレートPDFを用意し【座標】指示にて【記載内容】をプロットしていくのがセオリーな使い方の様子
  • 座標の指示が難易度高め
  • 座標指定なのでデザイン的な帳票なども再現性が高い
  • かつてはPHPでPDFといえばTCPDFで確定だったらしい
  • PhpSpreadsheetと連携して運用できる
  • すでにメンテナンスされなくなっている事が最大の懸念点

インストールコマンド

導入参考ページ

mpdfの特徴

  • 導入は簡単
  • HTMLで記載したページをPDF化してくれる
  • Dompdfよりも利用できるCSSが多く意図したページを作成しやすい
  • Dompdfと比べてWeb上の資料が少ない
  • PhpSpreadsheetと連携して運用できる
  • 最近人気が高いらしい

インストールコマンド

導入参考ページ

まとめ

MTGの結果、今回はdompdfを利用することになりました。
理由は「ほぼテーブルで記載できて、難しいCSSを使わなくて済みそうだから」
それくらいdompdfで利用できるCSSには難があるんですね。
多分この様な背景があって、mpdfに注目が集まっているのでしょう。

ということで、ほぼ表で終わる様なものであればネット記事も多いdompdfが扱いやすそうです。
細かなデザインが存在するものはPDFでテンプレを用意しつつそこに座標でプロットするTCPDFが勝手な次ページ送りなどを回避してくれるでしょう。
HTMLからそれなりにデザインし出力したいのであればmpdfが初級者の選択肢の筆頭になりそうです。

PhpSpreadsheetから直接PDF出力できる日は来ないものかなぁ。