サンプル・プログラムの実行例
サンプル・プログラム
pdfsamp.php | サンプル・プログラム本体 |
準備
0036: //PDF化するテキスト(デフォルト)(HTML文)
0037: define('DEF_SOUR', 'PHPを使って、入力したテキストをPDFファイルとして出力するプログラムを作ってみる。<br />PHP 4.3以降には<a href="https://www.pdflib.jp/">PDFlib lite</a>が組み込まれていたが、その後、組み込まれなくなった。そこで、オープンソースのクラスライブラリ<a href="https://github.com/tecnickcom/tcpdf">TCPDF</a>を利用するようプログラムを改訂した。');
0038:
0039: //TCPDFクラス:include_pathが通ったディレクトリに配置
0040: //https://github.com/tecnickcom/tcpdf
0041: require_once('TCPDF/tcpdf.php');
解説:PDF出力
まず、TCPDFインスタンスを作成する。続いて、タイトルや余白を設定する。
フォントの指定は SetFont メソッドを利用する。TCPDFで利用可能な日本語フォントは限られている。
PDF化したいテキストはHTML文としてレイアウト可能で、このHTML文をwriteHTMLメソッドに渡す。
Outputメソッドを使ってPDFデータを取得したら、あとは header 関数を使って画面に表示する。
この際、ブラウザ側で PDF のアプリケーション紐付けが行われていない(Acrobatがインストールされていない、等)と、ファイルとしてダウンロードすることになる。
0146: /**
0147: * PDF出力する
0148: * @param string $str出力文字列
0149: * @param string $errmsgエラー・メッセージ格納用
0150: * @return bool TRUE=成功/FALSE=失敗
0151: */
0152: function putPDF($str, &$errmsg) {
0153: $orientation = 'Horizontal'; //用紙の向き
0154: $unit = 'mm'; //使用単位
0155: $format = 'A4'; //用紙サイズ
0156: $unicode = TRUE; //テキストはUnicodeかどうか
0157: $encoding = 'UTF-8'; //文字コード
0158: $diskcache = FALSE; //ディスクキャッシュを使用するかどうか
0159:
0160: try {
0161: //TCPDFインスタンスを作成
0162: $tcpdf = new TCPDF($orientation, $unit, $format, $unicode, $encoding, $diskcache);
0163: //PDFファイルのタイトル
0164: $tcpdf->SetTitle('pdfsample');
0165: //PDFファイルのサブタイトル
0166: $tcpdf->SetSubject('subtitle');
0167: //PDFファイルの作成者を設定
0168: $tcpdf->SetAuthor('studio pahoo');
0169: //余白設定:左, 上, 右
0170: $tcpdf->SetMargins(20, 20, 20);
0171: //日本語フォントの指定
0172: $tcpdf->SetFont('kozminproregular', '', 12);
0173: //新規ページ作成
0174: $tcpdf->addPage();
0175: //PDF化するHTMLテキストを作成
0176: $html =<<< EOT
0177: {$str}
0178:
0179: EOT;
0180: //HTMLを書き込む
0181: $tcpdf->writeHTML($html);
0182: //PDFデータ出力
0183: $fname = 'sample.pdf';
0184: $pdfData = $tcpdf->Output(rawurlencode($fname), 'S');
0185: $pdfLength = strlen($pdfData);
0186: } catch (Exception $e) {
0187: $errmsg = $e->getMessage();
0188: return FALSE;
0189: }
0190:
0191: //PDF出力処理
0192: header('Content-type: application/pdf');
0193: header('Content-Length:' . $pdfLength);
0194: header('Content-Disposition: inline; filename=' . $fname);
0195: echo $pdfData;
0196:
0197: $tcpdf = NULL;
0198:
0199: return TRUE;
0200: }
参考サイト
- TCPDF :GitHub
- TCPDFマニュアル(勝手訳)
PHP 4.3以降には PDFlib lite が組み込まれていたが、その後、組み込まれなくなった。そこで、オープンソースのクラスライブラリ TCPDF を利用するようプログラムを改訂した。
(2022年3月26日)TCPDF対応のため大幅改訂,PHP8対応