header

PHP でPDFファイルを作成する

(1/2)

PHP で PHP ファイルを出力するために、PDFLib というライブラリが用意されている。 幸い、PHP 4.4 以降ではフリー版が組み込まれている。今回は、これを使うことにする。

サンプル・プログラム

サンプル・プログラムは、フォームから入力された1行のテキストを PDF に出力するという簡単なものである。

0001: <?php
0002: /** pdfsamp.php
0003:  * PDFLibのサンプル
0004:  *
0005:  * @copyright (c)studio pahoo
0006:  * @author     パパぱふぅ
0007:  * @version     1.0 2007/07/15
0008: */
0009: mb_internal_encoding("SJIS");
0010: mb_regex_encoding("SJIS");
0011: $myself = basename($_SERVER["SCRIPT_NAME"]);
0012: 
0013: /**
0014:  * PDF出力する
0015:  * @param string $str 出力文字列
0016:  * @return bool TRUE=成功/FALSE=失敗
0017: */
0018: function put_pdf($str) {
0019:     //PDF出力準備
0020:     $pdf = pdf_new();
0021:     pdf_open_file($pdf);
0022:     $font = pdf_findfont($pdf, 'HeiseiKakuGo-W5', '90ms-RKSJ-H', 0); //フォント指定
0023: 
0024:     //PDFページを作成する
0025:     pdf_begin_page($pdf, 595, 842);     //A4判縦
0026:     pdf_setfont($pdf$font, 14);       //フォントサイズ 14pt
0027:     pdf_set_text_pos($pdf, 40, 792);    //描画開始位置指定
0028:     pdf_continue_text($pdf$str);
0029:     pdf_end_page($pdf);
0030: 
0031:     //PDFファイルを閉じる
0032:     if (pdf_close($pdf) == FALSE)    return FALSE;
0033:     $buf = pdf_get_buffer($pdf);          //生成されたPDFデータを取得
0034: 
0035:     //PDF出力処理
0036:     $pdf_length = strlen($buf);
0037:     $pdf_name = "keisan.pdf";
0038:     header("Content-type: application/pdf");
0039:     header("Content-Length:" . $pdf_length);
0040:     header("Content-Disposition: inline; filename=" . $pdf_name);
0041:     echo $buf;
0042: 
0043:     pdf_delete($pdf);
0044: 
0045:     return TRUE;
0046: }
0047: 
0048: // メイン・プログラム =======================================================
0049: if (isset($_GET["sour"])) {
0050:     put_pdf($_GET["sour"]);
0051: else {
0052: 
0053: // 表示処理 =================================================================
0054: echo <<< EOF
0055: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
0056:  "http://www.w3.org/TR/html4/loose.dtd">
0057: <html lang="ja">
0058: <head>
0059: <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS" />
0060: <title>PDF出力サンプル</title>
0061: <meta name="ROBOTS" content="NOINDEX,NOFOLLOW" />
0062: </head>
0063: <body>
0064: <h1>■PDF出力サンプル</h1>
0065: <form name="myForm" method="get" enctype="multipart/form-data" action="$myself">
0066: 文字列 
0067: <input type="text" name="sour" size="60" />
0068: <input type="submit"value="作成" /> 
0069: <input type="reset" value="リセット" />
0070: <hr />
0071: <b>【使い方】</b>
0072: <ol>
0073: <li>[文字列]に出力したいテキストを入力してください。</li>
0074: <li>[作成]ボタンを押してください。</li>
0075: <li>PDFファイルが出力されます。</li>
0076: <li>[リセット]ボタンを押すと、表示がクリアされます。</li>
0077: </ol>
0078: </form>
0079: </body>
0080: </html>
0081: EOF;
0082: 
0083: }
0084: ?>

プログラムを実行する

プログラムをダウンロードする

(この項つづく)