Laravelでpdf作成:dompdfのインストールと日本語の表示方法

Laravelと連携:Excel・PDF・Google

Laravelでpdfを作成できるdompdfのインストール方法と使い方を解説します。

インストール自体はラクですが、面倒なのは日本語フォントを入れる部分。

ひとつずつ手順を解説していきますね。

じゅんこ
じゅんこ

なお、わたしの環境はWindows。

dompdfの機能はLaravel6と8で確認済みです。

Laravelでpdf作成:dompdfのインストールと日本語化

まずはインストールをした後に、日本語用の設定をしていきましょう。

① dompdfのインストール

下記コマンドでインストールを行います。

② load_font.phpダウンロード

次に日本語化の準備です。

下記より、ファイルを一式ダウンロードして解凍します。

この中の load_font.phpファイルをプロジェクトフォルダの直下にいれてください。

他のファイルは、プロジェクトフォルダ内に【temp】フォルダを作り、その中にいれておきます。

③ 日本語フォントダウンロード

次に日本語フォントのダウンロードです。

お好きなものでOKですが、今回はIPAexフォントを下記よりダウンロードさせてもらいます。

ページ下の【IPAサイトからダウンロード】より、お好きな書体を選んでダウンロード・解凍してください。

解凍したフォルダの中には、ipaexm.ttf フォントファイルが入っています。

このファイルを、②で作成したtempフォルダの中にいれておきます。

④ load_font.phpの実行

load_font.phpを実行し、③のフォントをdompdfにインストールします。

さらに、【プロジェクトフォルダ/vendor/dompdf/dompdf/lib/fonts】の中の次の3つのファイルをコピーしてください。

  • ipaexm.ttf
  • ipaexm.ufm
  • dompdf_font_family_cache.php

【プロジェクトフォルダ/storage】の中にfontsフォルダを作り、この3つのファイルを貼り付けます。

これで日本語ファイル設定OKです。

Laravelでpdf作成:dompdfを使ってPDFダウンロード機能設置

準備が完了したので、ここからはPDFをダウンロードできる機能を設置してみましょう。

次のようなボタンを作成します。

ボタンを押すと、データベーステーブルの内容が組み込まれたPDFファイルがダウンロードできます。

① ルート設定

まずはroutes/web.phpファイルに、表示用とPDFダウンロード用のルートを作成します。

② コントローラー作成

Dangoコントローラーを作成します。

app/Http/Controllersの中のDangoControllerを開きます。

一番上に、use PDFを入れておきます。

使いたいモデルもuse宣言に入れておきます。

表示用のメソッドはこちら。

ダウンロード用のメソッドはこちら。

今回はdangosテーブルの内容を使います。

$dangosにテーブルの中身を代入して、これをcompact関数を使ってビューファイルに受け渡します。

じゅんこ
じゅんこ

使いたいテーブルによって、モデル名などは変えてくださいね。

③ 表示用ビューファイル作成

次はビューファイルの作成です。

resources/viewsのなかに dango.blade.phpファイルを作成します。

次のようにPDFダウンロード用のボタンを設置します。

【dango.blade.php】

④ ダウンロード用ファイル作成

次にダウンロード用のファイルを作成します。

resources/viewsの中にdango_pdf.blade.phpファイルを新規作成します。

HTMLを使って内容を入れていきます。

【dango_pdf.blade.php】

ポイントは、<style></style>の中でフォント名を設定しておくこと。

これがないと、日本語のファイルを表示できません。

⑤ テスト

それでは実際に表示してみます。

サーバーを立ち上げ、 http://127.0.0.1:8000/dango を表示します。

ボタンが表示されました。

ボタンをクリックすると、次のようなPDFをダウンロードできます。

ということで、無事表示成功!

もし「Undefined Index」というエラーがでたら

プロジェクトフォルダ/storage/fontsの中にコピーした下記ファイルを削除してみてください。

  • dompdf_font_family_cache.php

ハッキリ分かりませんが、Laravelのバージョンによって、エラーになるようです。

上記ファイルを消すと、dompdfを使ったときに、storage/fonts フォルダの中にcacheファイルが生成されます。

さいごに

ただ「dompdfだと必要な機能がない」と感じたら、snappy pdfというパッケージもおすすめ。

dompdfとsnappy pdfの比較はこちら。

snappy pdfのインストールなどはこちら。

じゅんこ
じゅんこ

snappy pdfはインストールにクセがあります!

苦労した部分をすべて書き綴っております。

 

コメント

タイトルとURLをコピーしました