バグ解消法、お役立ち情報など

mPDFでテンプレートを使用してPDFを出力する方法

image

はじめに

mPDFは、PHPでPDFを出力する際に使用されるライブラリです。

https://mpdf.github.io/

インストール方法などはマニュアルをご参照ください。

本記事は、すでにmPDFクラスを使用できる状態になっている前提で進めます。

結論

テンプレートのPDFを使用する場合、以下のように実装します。

1. インスタンス生成

まずはmPDFクラスのインスタンスを生成します。

今回は、OutputPDFControllerというファイルでPDFを生成するという想定で進めます。

OutputPDFController.php
$mpdf = new Mpdf();

2. テンプレートPDFを配置

今回は、下記のパスにテンプレートのPDFを配置します。

├── OutputPDFController.png └── PDF └── template.pdf

3. テンプレートPDFのパスを指定

OutputPDFController.php
$template = $mpdf->setSourceFile(__DIR__ . '/PDF/template.pdf');

4. importPageメソッドを呼び出す

OutputPDFController.php
$tplId = $mpdf->importPage($template);

5. UseTemplateメソッドを呼び出す

OutputPDFController.php
$mpdf->UseTemplate($tplId);

6. Outputメソッドを呼び出す

今回は、コントローラーのactionからreturnしてやることでPDFを出力します。

OutputPDFController.php
return $this->response->withType('pdf') ->withHeader('Content-Disposition', "attachment;filename*=UTF-8''test.pdf") ->withStringBody($mpdf->Output('', 'S'));

ここまでで、以下のようなコードになります。

├── OutputPDFController.png └── PDF └── template.pdf
OutputPDFController.php
$mpdf = new Mpdf(); $template = $mpdf->setSourceFile(__DIR__ . '/PDF/template.pdf'); $tplId = $mpdf->importPage($template); $mpdf->UseTemplate($tplId); return $this->response->withType('pdf') ->withHeader('Content-Disposition', "attachment;filename*=UTF-8''test.pdf") ->withStringBody($mpdf->Output('', 'S'));

mPDFのドキュメントでは、下記のページに記載されています。

https://mpdf.github.io/reference/mpdf-functions/usetemplate-v8.html

お役に立てれば幸いです!

それでは。

バグ解消法、お役立ち情報など