Ethnaで販売管理システムを部分的に開発してみる(その6)PDFファイルの出力
PDF出力処理概要
受注一覧のチェックシートボタンでPDFファイルを出力しています。出力内容は、受注内容のヘッダ部分(受注テーブル)と明細部分(受注明細テーブル)の情報の一部分です。処理としては、受注テーブルと受注明細テーブルのそれぞれから、受注番号をキーにして関連するマスタの情報も含めてデータを取得しています。その情報をPDFに出力しています。
受注一覧画面

受注チェックシート

PDF出力処理実装
実装としては、appディレクトリ配下にfpdf.php、mbfpdf.phpとfontディレクトリを配置しています。それから、Salesmgr_OrderManager.php(アプリケーションマネージャ)で受注チェックシートをmbfpdfを使ってPDFファイルで出力しています。アクションでこのアプリケーションマネージャを呼び出しています。
Salesmgr_OrderManager.php(アプリケーションマネージャ)の表示
以下は、Ethnaからのmbfpdfの呼び出しのポイントと思われた項目についてです。
グローバル編集の取得エラー
今回、単純にEthnaからmbfpdfを使ってみたのですが、まず、mbfpdfのAddMBFontのメソッドでグローバル変数が取得出来ませんでした。その部分を新規にメソッドを追加して対応しました。
修正後のAddMBFontメソッド
function AddMBFont($family='',$enc='')
{
//これは取得出来ないので修正
//global $MBTTFDEF,$MBCMAP;
//$gt=$MBTTFDEF;
//$gc=$MBCMAP;
$gt=$this->setMBTTFDEF();
$gc=$this->setMBCMAP();
if ($enc == '' || isset($gc[$enc]) == false) {
die("AddMBFont: ERROR Encoding [$enc] Undefine.");
}
if (isset($gt[$family])) {
$ut=$gt[$family]['ut'];
$up=$gt[$family]['up'];
$cw=$gt[$family]['cw'];
$cm=$gc[$enc]['CMap'];
$od=$gc[$enc]['Ordering'];
$sp=$gc[$enc]['Supplement'];
$registry=array('ordering'=>$od,'supplement'=>$sp);
$this->AddCIDFont($family,'' ,"$family" ,$cw,$cm,$registry,$ut,$up);
$this->AddCIDFont($family,'B' ,"$family,Bold" ,$cw,$cm,$registry,$ut,$up);
$this->AddCIDFont($family,'I' ,"$family,Italic" ,$cw,$cm,$registry,$ut,$up);
$this->AddCIDFont($family,'BI',"$family,BoldItalic",$cw,$cm,$registry,$ut,$up);
} else {
die("AddMBFont: ERROR FontName [$family] Undefine.");
}
}
追加したメソッド
//
//追加したメソッド
//
function setMBTTFDEF(){
require('font/mbttfdef.php'); // Multi-Byte TrueType Font Define
return $MBTTFDEF;
}
function setMBCMAP(){
// Encoding & CMap List (CMap information from Acrobat Reader Resource/CMap folder)
$MBCMAP['BIG5'] = array ('CMap'=>'ETenms-B5-H' ,'Ordering'=>'CNS1' ,'Supplement'=>0);
$MBCMAP['GB'] = array ('CMap'=>'GBKp-EUC-H' ,'Ordering'=>'GB1' ,'Supplement'=>2);
$MBCMAP['SJIS'] = array ('CMap'=>'90msp-RKSJ-H' ,'Ordering'=>'Japan1','Supplement'=>2);
$MBCMAP['UNIJIS'] = array ('CMap'=>'UniJIS-UTF16-H','Ordering'=>'Japan1','Supplement'=>5);
$MBCMAP['EUC-JP'] = array ('CMap'=>'EUC-H' ,'Ordering'=>'Japan1','Supplement'=>1);
return $MBCMAP;
}
この問題については、以下のページを参考にさせていただきました。参考にというかそのまま利用させていただきました。ありがとうございました。"PDFファイルをPHPで即、生成" フォーラム - CakePHP Users in Japan
PDFファイルの出力先
上記の内容を修正後、PDFファイルを画面に出力しようとしたのですが出力出来ませんでした。それで、以下のように、一旦ファイルに出力した後に、リダイレクトでファイルのURLを指定して出力させると出力出来ました。なぜ直接画面に出力出来ないのかは今のところ分かりません。ファイルに出力出来るのでいいといえばいいのですが、ファイルが残るのでその点が問題です。
Salesmgr_OrderManager.phpのfunction checksheet($orderId)の最後の部分
//ファイルへ出力してリダイレクト
$pdf->Output('../pdf/orderchecksheet.pdf','f');
header('location: ../pdf/orderchecksheet.pdf');
以上が、「Ethnaで販売管理システムを部分的に開発してみる」でのPDFファイル出力についてです。
今回作成したプロジェクト一式は以下からダウンロードしてご覧いただけます。
「Ethnaで販売管理システムを部分的に開発してみる」のプロジェクト一式
今回で、「Ethnaで販売管理システムを部分的に開発してみる」は、とりあえず終了です。また時間が取れれば続きを書きたいと思っています。
当サイトでのEthna関連記事一覧
- Ethnaで販売管理システムを部分的に開発してみる(その6)PDFファイルの出力 [2007/10/25]
- Ethnaで販売管理システムを部分的に開発してみる(その5)受注業務処理 [2007/10/25]
- Ethnaで販売管理システムを部分的に開発してみる(その4)マスタメンテ実装 [2007/10/21]
- Ethnaで販売管理システムを部分的に開発してみる(その3)データベース関連 [2007/10/21]
- Ethnaで販売管理システムを部分的に開発してみる(その2)ログインとセッション [2007/10/20]
- 「Ethnaで販売管理システムを部分的に開発してみる」のEthnaプロジェクト一式 [2007/10/20]
- Ethnaで販売管理システムを部分的に開発してみる(その1)概要 [2007/10/20]
- Ethnaの導入(その4)アプリケーションオブジェクトの利用その2 [2007/01/08]
- Ethnaの導入(その3)アプリケーションオブジェクトの利用 [2007/01/02]
- Ethnaの導入(その2)セッションの利用と簡単な認証 [2006/12/03]
- Ethnaの導入 [2006/11/30]
参考書籍
Ethna×PHP [LLフレームワークBooks] (LLフレームワークBOOKS # 2)
藤本 真樹一井 崇鶴岡 直也新井 啓太
技術評論社
¥ 1,980 (定価)
¥ 1,980 (Amazon価格)
19pt (Amazonポイント)
(Amazonおすすめ度)
単行本(ソフトカバー)
通常24時間以内に発送
(価格・在庫状況は1月6日 17:39現在)
藤本 真樹一井 崇鶴岡 直也新井 啓太
技術評論社
¥ 1,980 (定価)
¥ 1,980 (Amazon価格)
19pt (Amazonポイント)
(Amazonおすすめ度)
単行本(ソフトカバー)
通常24時間以内に発送
(価格・在庫状況は1月6日 17:39現在)
グラス片手にデータベース設計~販売管理システム編 (DBMagazine SELECTION)
梅田 弘之
翔泳社
¥ 2,520 (定価)
¥ 2,520 (Amazon価格)
25pt (Amazonポイント)
★★★★☆ (Amazonおすすめ度)
単行本
通常24時間以内に発送
(価格・在庫状況は1月6日 17:39現在)
梅田 弘之
翔泳社
¥ 2,520 (定価)
¥ 2,520 (Amazon価格)
25pt (Amazonポイント)
★★★★☆ (Amazonおすすめ度)
単行本
通常24時間以内に発送
(価格・在庫状況は1月6日 17:39現在)
Posted by nishida at 17:02:10
![Ethna×PHP [LLフレームワークBooks] (LLフレームワークBOOKS # 2)](http://images.amazon.com/images/P/4774131393.09._SCMZZZZZZZ_.jpg)



