この記事では、Windows環境のPHPでCreate!Form Cast(PDF帳票出力ランタイム)を呼び出し、帳票を出力する方法をご紹介します。(Linuxからの呼び出し方法は、体験版同梱のサンプルコードをご覧下さい。)
サンプルを動作させるために、Webサーバー、PHPを予めインストールしておきます。なお、この記事では以下の環境で動作を確認しています。
Create!Form Designの体験版をダウンロードします。以下からお申し込みください。
ダウンロード後、Create!Form DesignをWebサーバが導入された環境にインストールします。(サンプルコードがそのまま利用できるため、インストール先などは初期値をお勧めします。)
以下はCreate!Formを使ってPDF帳票を生成する手順です。
※ Create!Form体験版では、Create!Form Designの中にあるテスト実行用のCreate!Form Castを使用してPDF帳票を出力します。そのためこのサンプル実行においては、帳票開発環境とアプリケーションサーバーが同一環境内にあるイメージになります。
HTMLの入力フォームに入力された「名前」をPDFの帳票に反映させる簡単なサンプルコードです。このサンプルは以下の3つのファイルで構成されます。
これらのファイルをWebサーバを通して閲覧できるフォルダに配置し、 入力用HTMLファイル(index.html)にブラウザよりアクセスしてください。 表示されるHTML画面の「帳票生成」ボタンをクリックすると、PDF帳票が出力されます。
名前を入力する画面です。
帳票の名前部分のデータをpostデータとして送信します。
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html lang="ja"> <head> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <title>PHPからの帳票出力</title> </head> <body> <h1>PHPからの帳票出力サンプル</h1> <form action="makeForm.php" method="post"> 名前:<input type="text" name="name" value="名前" size="50" maxlength="20"><br> <input type="submit" name="" value="帳票作成"> </form> </body> </html>
帳票のデータファイルを作成するサンプルコードです。 ここでは単純化するために大部分を固定情報とし、postデータとして受信した「名前」の部分のみを可変情報としてCSVファイルを作成しています。
<?php function outputData($arg){ $outputFileName = "sample.csv"; $data = array( array("見積番号,見積先会社名,金額,見積件名,受渡場所,納期,有効期限,支払条件,発行日"), array("M2100125,".$arg.",205300,化粧箱デザイン,貴社ご指定場所,受注後3営業日,本見積発行日より2ヶ月,締め日:末日、支払日:翌末日、手形サイト:120日、20万円以下の場合は銀行振込(手数料お客様負担)、手形郵送の場合は送料負担願います。,2012/12/12") ); $output = ""; foreach( $data as $key1 => $val1 ){ foreach( $val1 as $key2 => $val2 ){ $output.= $val2.","; } $output.= "\r\n"; } file_put_contents($outputFileName,$output); return $outputFileName; } ?>
実行パラメータに、作業ディレクトリ、スタイルファイル、出力ファイル名、入力データファイル名を設定し、Create!Form Castを呼び出します。
<?php include "outputData.php"; /*Postデータの受信*/ $name = mb_convert_encoding($_POST["name"], "SJIS", "UTF-8"); /*帳票生成用データの作成(outputDataメソッドは引数で渡したデータを含むCSVを作成します。)*/ $datafile = outputData($name); /*帳票PDFの作成*/ /*Create!Form:実行ファイルの設定*/ $cfInstDir = "C:\\CreateV10"; /*作業ディレクトリ*/ $cfworkdir = "C:\\CreateV10\\tut\\mitsumori\\fin"; /*スタイルファイル*/ $stylefile = "mitsumori.sty"; /*入力データファイル名*/ $datafile = realpath($datafile); /*出力ファイル名(ディレクトリに書き込み権限必要)*/ $outputdir = dirname($datafile); $outputfile = date("YmdHis").".pdf"; /*Create!FormCast実行*/ /*実行コマンドライン(ランタイムガイド参照)*/ $execmd = "C:\\CreateV10\\CCast.exe -D".$cfworkdir." -s".$stylefile." -o".$outputdir."/".$outputfile." ".$datafile; /*実行(ランタイムガイド参照)*/ $cfret = 0; system($execmd, $cfret); // PDFのクライアントへの表示 if($cfret!=1){ /*Create!Form実行エラー*/ print("** Create!Form Execution Error.
"); print("
"); print("Error:".$cfret); print("
"); print("Command:".$execmd); print("
"); }else{ /*出力ファイルのリダイレクト*/ header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); header("Content-type: application/pdf"); header("Location: http://".$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF'])."/".$outputfile); } ?>
帳票の出力後、そのPDF帳票のURLにリダイレクトすることでWebクライアントに表示されます。
帳票定義を確認してみましょう。サンプルで呼び出している「見積書」の帳票レイアウトを確認します。