プロが教える店舗&オフィスのセキュリティ対策術

お世話になります。

PHPで入力フォームを作成し、送信ボタンを押下した後に
入力内容の確認画面を表示するようにしています。

その入力確認画面をそのままPDFで生成したいんです。
調べた所、TCPDFやmPDFなどPDF生成ライブラリがあるみたいですが
file_get_contentsでHTMLを取得する場合は実際にそのページにアクセスして
そのレスポンスを利用しているんですよね。
なので確認画面等の前画面で入力した情報を元に作成したHTMLには使えないんでしょうか。

確認画面をそのまま利用してPDF生成することはできないのでしょうか。
実現するにはフォームから入力された情報を元に別途PDF生成用のHTML等を組む・・・のようなことをしないと駄目なんでしょうか。

分かりづらい質問で申し訳ありませんがよろしくお願いします。

A 回答 (2件)

Ano1 語弊があるので一応訂正


>html出力前にバッファリングを開始
>HTMLが終了したら

出力の前後に限らず、PDFにしたい箇所で適宜 ob_start()~ob_end_flush()でかまいません。
    • good
    • 0
この回答へのお礼

返事が遅くなって申し訳ありません。

回答ありがとうございました。

なるほど、たしかにそうすればいけますね。
考えつきませんでした。

プログラムの例示もしていただいてありがとうございました!

お礼日時:2013/03/27 11:16

バッファを利用するとよいでしょう。

ざっくりとこんな感じ
---------------------------------------
//html出力前にバッファリングを開始します。出力先は画面ではなく内部のメモリになります。
ob_start();

//通常通りHTML出力(この段階ではブラウザには送信されません)
echo "<html><body>testtesttest</body></html>";

//HTMLが終了したら、バッファの内容をPDF用に取得しておいて…
$html = ob_get_contents();

//溜まったHTMLを一気に送信、出力してバッファリング終了
ob_end_flush();

//あとは$htmlの内容をPDFにするだけ
require "mpdf.php";
$mpdf=new mPDF('utf-8', 'A4');
$mpdf->WriteHTML($html);
$mpdf->Output("./test.pdf", 'F');

※ファイルではなく画面にPDFとして出力したいのなら、ob_end_flush()ではなく、ob_cleanして
$mpdf->Output();
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!