PHPプログラミング

ベストプラクティス

出力

mPDFの出力形式を指定する

  • このエントリーをはてなブックマークに追加

mPDFライブラリで作成したPDFファイルの出力形式を指定する方法を解説します。

目次

  1. #  必要に応じて使い分けられる出力形式
  2. #  mPDFで指定できる4種類の出力形式
  3. #  プレビュー表示せずに保存(ダウンロード)のみ実行する
  4. #  少し毛色が違うパラメータ「S」

必要に応じて使い分けられる出力形式

mPDFを使って作成したPDFファイルは、その用途に応じて出力形式を指定することができます。mPDFを使っている次のような方を対象に解説していきます。

  • 作成したPDFファイルの出力形式を調整したい
  • 作成したPDFファイルサーバーに保存したい
  • 作成したPDFファイルをメールの添付して送信したい

mPDFライブラリがすでにインストールされていることを前提にしています。インストールから基本的な使い方については「mPDFライブラリでPDFファイルを作成する」をご覧ください。

英語になりますが、mPDFライブラリのリファレンスをご覧になりたい場合はこちら。
Output() – mPDF Manual(英語)

mPDFで指定できる4種類の出力形式

出力形式はOutputメソッドから指定することができ、次の4種類から選択することができます。

  • I – ブラウザに出力。初期値。
  • D – ブラウザでプレビューをしないで保存(ダウンロード)を実行する。(クライアント側)
  • F – ブラウザでプレビューをしないで、サーバー側の指定したフォルダへ保存。
  • S – 文字列として出力。メールの添付などに利用。

Outputメソッドの第1パラメータに任意のファイル名を指定し、第2パラメータに上記の4種類のうちから1つを選んで指定します。
何も指定しなかった場合は「I」になります。

例えば、「I」を指定する場合は次のようなコードになります。

mpdf.php

// ファイル名を指定
$mpdf->Output("MyPDF.pdf","I");

作成されたPDFファイルがブラウザでプレビュー表示されます。
保存(ダウンロード)時はOutputメソッドで指定したファイル名で保存することができます。

実行結果

パラメータ「I」を指定して出力した例

作成したPDFファイルをプレビュー表示しつつ、サーバーにも同じファイルを保存したい場合は次のようにOutputメソッドを2度実行します。

mpdf.php (2度実行した例)

// ファイル名を指定
$mpdf->Output("MyPDF.pdf","I");

// サーバーにも保存(tempディレクトリに保存)
$mpdf->Output("temp/MyPDF_2219955828.pdf","F");

実行結果

パラメータ「F」を実行した結果

Outputメソッドを2回呼び出しているので、ファイル名も別々のものを指定することが可能です。

プレビュー表示せずに保存(ダウンロード)のみ実行する

作成したPDFファイルをブラウザ上でプレビューする必要がなく、保存(ダウンロード)のみ実行したい場合は「D」パラメータを指定します。

// ファイル名を指定
$mpdf->Output("MyPDF.pdf","D");

実行結果

パラメータに「D」を指定した例

少し毛色が違うパラメータ「S」

指定できるパラメータのうち、「S」は少し使い方が特別です。
こちらはPDFファイルを表示したり保存するものではなく、PDFファイルを文字列の形で返します。

具体的な用途は、作成したPDFファイルをそのままメールに添付して送信したい場合です。

次のコードは、mb_send_mail関数と組み合わせて使っている例になります。

<?php
//-------------------------------------------------------
// PDFファイル作成
//-------------------------------------------------------

// ライブラリの読み込み
require_once 'mpdf60/mpdf.php';

$pdf_file = null;
$pdf_title = 'テスト.pdf';

// mPDFクラス作成
$mpdf = new mPDF("ja");

// ファイル名を指定
$mpdf->setTitle($pdf_title);

// PDFの内容を設定
$mpdf->WriteHTML("<p>Document</p>");

// PDFファイルを出力
$pdf_file = $mpdf->Output( $pdf_title, "S");

//-------------------------------------------------------
// メール作成
//-------------------------------------------------------

//日本語の使用宣言
mb_language("ja");
mb_internal_encoding("UTF-8");

// 宛先、件名、本文の設定
$to = 'koheiishido@gmail.com';
$subject = 'mPDFライブラリの出力テスト';
$text = 'テストメールです。';

// 送信元の設定
$sender_email = 'noreply@gray-code.com';
$org = 'GRAYCODE';
$from = 'GRAYCODE ';

// ヘッダー設定
$header = '';
$header .= "Content-Type: multipart/mixed;boundary=\"__BOUNDARY__\"\n";
$header .= "Return-Path: " . $sender_email . " \n";
$header .= "From: " . $from ." \n";
$header .= "Sender: " . $from ." \n";
$header .= "Reply-To: " . $sender_email . " \n";
$header .= "Organization: " . $org . " \n";
$header .= "X-Sender: " . $org . " \n";
$header .= "X-Priority: 3 \n";

// テキストメッセージを記述
$body = "--__BOUNDARY__\n";
$body .= "Content-Type: text/plain; charset=\"ISO-2022-JP\"\n\n";
$body .= $text . "\n";
$body .= "--__BOUNDARY__\n";

// ファイルを添付
$body .= "Content-Type: application/octet-stream; name=\"{$pdf_title}\"\n";
$body .= "Content-Disposition: attachment; filename=\"{$pdf_title}\"\n";
$body .= "Content-Transfer-Encoding: base64\n";
$body .= "\n";
$body .= chunk_split(base64_encode($pdf_file)) . "\n";
$body .= "--__BOUNDARY__--";

//メール送信
$res = mb_send_mail( $to, $subject, $body, $header);

実行結果

上記コードを実行すると、PDFファイルが添付されたメールが届きます。

受信したメールの表示例

上部の「// PDFファイル作成」ではPDFファイルを作成して$pdf_fileへ格納しています。
そして、下部の「// メール作成」で$pdf_fileを添付ファイルとして指定し、mb_send_mail関数で送信します。

メールへファイルを添付する方法については、別記事「メールにファイルを添付して送信する」をご覧ください。

以上、mPDFライブラリで指定可能な出力形式についてでした。
実装する用途に応じて出力形式を選択してください。

  • このエントリーをはてなブックマークに追加