PHPプログラミング

最終更新日:
公開日:

レシピ

mPDFライブラリ

mPDFライブラリでPDFファイルを作成する

mPDFライブラリを使ったPDFファイルの出力について、mPDFのインストールから簡単な日本語テキストの入ったPDFファイルを出力するところまでを解説します。2018年9月時点で最新バージョンのmPDF v7.1zzzを使います。

この記事のポイント

  • mPDFライブラリをインストールする
  • とりあえずPDFファイルを出力してみる
  • 日本語テキストを使ったPDFファイルを出力する

目次

mPDFライブラリとは

mPDFライブラリはFPDFライブラリをベースにして作成された、PHPからHTMLを使ってPDFファイルを作成するライブラリです。
UTF-8に対応し、日本語のテキストも扱うことができます。

GNU General Public Licenseのため、ライブラリの改修・再配布ができ、このライブラリを使って構築したシステムに対しても特に制限は設けられていません。
商用利用ももちろん大丈夫です。

2018年9月時点の最新版はv7.1、動作に必要な要件は次の通りです。

  • PHP v5.6以上、またはPHP v7.2以下
  • PHPの拡張機能「mbstring」「gd」が有効であること

以前はmPDF公式サイトがありましたが、今はリニューアル中とかでGithubのページが実質的な公式サイトになっています。
使い方ドキュメントはこちら。
mPDF Manual

今回はmPDFライブラリをインストールするところから、簡単なテキストをPDFファイルとして出力するまでを解説していきます。

mPDFライブラリをインストールする

mPDFライブラリはComposerを使ってインストールします。
Composerを使わずにGithubからファイルをダウンロードしてきてファイルを設置する方法でもインストールすることはできますが、mPDFライブラリは「DeepCopy」「random_compat」など他のライブラリをいくつか使って構築されているため、これらも手動でインストールする必要があります。

今回の解説でもComposerを使ってインストールしていきます。

なお、インストールに関しては公式ドキュメントにはInstallationページに記載があります。
Installation – mPDF Manual

Mac/Linux系ではターミナル、WindowsではPowerShellやコマンドプロンプトを起動してください。

今回は「test」というディレクトリにmPDFライブラリをインストールすることを前提とします。
Composerを実行する前に、cdコマンドなどでライブラリをインストールする場所に移動しておいてください。

インストールするディレクトリへ移動

# cd /test

インストールするディレクトリへ移動したら、次のcomopserのコマンドを入力して実行します。

composerを実行

# composer require mpdf/mpdf

うまくインストールが実行されると、次のような表示になります。

インストールが成功した時の表示例

Composer実行は次のようなファイルが生成されます。

インストールされたファイル

ライブラリの本体は「vendor/mpdf/mpdf」ディレクトリ内にあります。

ライブラリの本体ファイル一覧

以上でインストール完了です。

とりあえずPDFファイルを出力してみる

続いて、簡単なPDFファイルを出力してみます。
インストールしたディレクトリにindex.phpを作成し、次のコードを入力してください。

index.php

<?php
require_once __DIR__.'/vendor/autoload.php';

$mpdf = new \Mpdf\Mpdf();
$mpdf->WriteHTML('<h1>Hello, world!</h1>');
$mpdf->Output();

このコードを実行すると、次のように「Hello, world!」だけが書かれたPDFファイルが表示されます。

実行結果

コードを上から順に解説します。

2行目のrequire_once関数は、mPDFライブラリの読み込みを行います。
ここで名前空間の設定や関連するファイルの読み込みが全て自動的に行われます。

require_once __DIR__.'/vendor/autoload.php';

4行目はmPDFクラスのインスタンスを作成し、$mpdfに格納します。

$mpdf = new \Mpdf\Mpdf();

これで、mPDFクラスのメソッドが使用できるようになりました。
続く2行で出力するメッセージの設定と、出力を行います。

$mpdf->WriteHTML('<h1>Hello, world!</h1>');
$mpdf->Output();

WriteHTMLメソッドは出力するHTMLをセットします。
今回はシンプルにh1要素のソースをそのまま渡しています。
続くOutputメソッドで、セットしたHTMLをPDF出力します。

短いコードで最低限ではありますが、以上がPDFファイルを出力する基本的な流れになります。

日本語が扱えるように設定する

標準のまま日本語を出力することができません。
試しに、上記コードのWriteHTMLメソッドを次のように変更して実行してみます。

$mpdf->WriteHTML('<h1>日本語を出力する</h1>');

こちらを実行すると、次のように文字化けしてしまいます。

日本語が文字化けして読めない

これはmPDFが標準で使用するフォントが日本語に対応していないことが原因です。
そこで、mPDFクラスのインスタンスを作成するタイミングで日本語に対応したフォントを指定してみましょう。

<?php
require_once __DIR__.'/vendor/autoload.php';

$mpdf = new \Mpdf\Mpdf([
	'fontdata' => [
	    'sun-exta' => [
	        'R' => 'Sun-ExtA.ttf'
	    ]
	]
]);
$mpdf->WriteHTML('<h1>日本語を出力する</h1>');
$mpdf->Output();

フォントの設定がうまく行くと、日本語がしっかり表示されます。

日本語がちゃんと表示される

一見大丈夫そうですが、このフォントは「統合漢字」という中国の簡体字や日本語の新字体が同じ文字コードとして扱われているため、一部の漢字がやや違う形になります。

一部の漢字の表示がおかしい例

「坂」の上の棒が斜めだったり、「残」の傍線が1本足りなかったり、「変」の跳ねるところが跳ねてなかったり。
読めなくはないですが、ちょっと気になるところ。

そこで、これらの漢字も含めてしっかりと表示できるよう新しいフォントをダウンロードしてきて設定します。
IPA(情報処理推進機構)が用意している、IPAフォントを下記のページからダウンロードします。

IPAフォントのダウンロードページ
※一応IPAフォントライセンスを確認してください。

こちらのページの「IPAサイトからダウンロード」にある「TTFファイル」から、「4書体パック(Ver.003.03)」をダウンロードしてください。

ダウンロードしたzipファイルを解凍し、中に入っている4つの「ttf」拡張子がついたファイルを、mPDFのフォントフォルダ「vendor/mpdf/mpdf/ttfonts/」に入れます。

続いて、フォントが読み込まれるように設定します。

<?php
require_once __DIR__.'/vendor/autoload.php';

$mpdf = new \Mpdf\Mpdf([
	'fontdata' => [
	    'ipa' => [
		    'R' => 'ipag.ttf'
		]
	]
]);
$mpdf->WriteHTML('<h1>日本語を出力する</h1>');
$mpdf->Output();

改めて実行すると、次のようなPDFが出力されます。

漢字が正しく表示される

ちゃんと漢字が表示されるようになりました。

今回は「IPAゴシック」というフォントを使いましたが、先ほど4種類ダウンロードしたフォントのどれを使っても大丈夫です。
また、日本語の漢字に対応したフォントファイルであれば、任意のフォントを設定することも可能です。

以上、mPDFのインストールと基本的なPDF出力についての解説でした。

こちらの記事は役に立ちましたか?

ありがとうございます。
もしよろしければ、あわせてフィードバックや要望などをご入力ください。

コメントありがとうございます!
運営の参考にさせていただきます。