CodeIgniter Archive
CodeIgniter 2.0.3 で TCPDF
- 2012-04-23 (月)
- CodeIgniter
CodeIgniter 2.0.1ja以上2.0.3jaなら全部OK。
2.0.1jaでインストールして今2.0.3jaで使ってるから
- TCPDFのダウンロード
http://sourceforge.net/projects/tcpdf/files/
ここから最新のzip アーカイブをダウンロードする。 - Codeigniterへのインストール
執筆時点のバージョンは5.9.158なんで
tcpdf_5_9_158.zipをダウンロード。
ダウンロードしたファイルを展開。
展開すると「tcpdf」フォルダがあります。この「tcpdf」フォルダを「/application/third_party」フォルダにコピーします。
今回は「third_party」へのコピーという方法をとっていますが、「/application/libraries」にコピーする方法もあるかと - ユーザーライブラリの作成
「/application/libraries」にユーザーライブラリファイルを作成。
「pdf.php」というファイルを追加しました。
ファイルの内容は次のとおり1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950<?php (defined('BASEPATH')) OR exit('No direct script access allowed');# include TCPDFrequire_once(APPPATH.'third_party/tcpdf/config/lang/jpn.php');require_once(APPPATH.'third_party/tcpdf/tcpdf.php');/*** TCPDF - CodeIgniter Integration*/class pdf extends TCPDF {/*** Initialize**/function __construct($params = array()){$orientation = 'P';$unit = 'mm';$format = 'A4';$unicode = true;$encoding = 'UTF-8';$diskcache = false;if (isset($params['orientation'])) {$orientation = $params['orientation'];}if (isset($params['unit'])) {$unit = $params['unit'];}if (isset($params['format'])) {$format = $params['format'];}if (isset($params['encoding'])) {$encoding = $params['encoding'];}if (isset($params['diskcache'])) {$diskcache = $params['diskcache'];}# initialize TCPDFparent::__construct($orientation, $unit, $format, $unicode, $encoding, $diskcache);}}// END pdf Class/* End of file pdf.php *//* Location: ./application/libraries/pdf.php */これで、使用する準備は完了。
あとはコントローラーで、呼び出して使うだけ。
呼び出しサンプル
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
class samplepdf extends CI_Controller {
function __construct()
{
parent::__construct();
}
function index()
{
$this->printPdf();
}
private function printPdf()
{
// PDFライブラリ呼出
$this->load->library('pdf');
// ページ向き(横)
$pageOrientation = 'L';
// ページフォーマット
$pageFormat = 'A4';
$pdf = new TCPDF($pageOrientation, 'pt', $pageFormat, true, 'UTF-8', false);
ここにTCPDFのロジック
$pdf->Close();
$pdf->Output("ファイル名".'.pdf','I');
exit;
}
} |
Codeigniter で PHPExcel
- 2011-12-13 (火)
- CodeIgniter
Codeigniterの使用バージョン 2.0.3 ja
PHPExcelをサイトからダウンロード
PHPExcel
PEAR版もあるが、使っていないので通常版 PHPExcel 1.7.6 (ダウンロード時のバージョン)
ダウンロードファイルを解凍し、以下のファイルをCodeigniterの application/libraries にコピー
PHPExcel1.7.6\Classes\PHPExcel
PHPExcel1.7.6\Classes\PHPExcel.php
とあるサイトには、
|
1 2 3 4 5 6 7 |
$this->load->library("PHPExcel");
$this->load->library("PHPExcel/IOFactory");
・
・
$objWriter = IOFactory::createWriter($objPHPExcel, "Excel5");
・
・ |
とこのように書かれていましたが、動きません。エラーとなります。
PHPExcelのバージョンも1.7.6と書かれていますが・・・
まず、「PHPExcel/IOFactory」ですが
ファイルの中を見るとクラス名は、「PHPExcel_IOFactory」となっています。
また、「__construct」は「private」です。
ロードできるわけがない。
たぶん、動かしてないんだろう。
実際ダウンロードしたファイルにサンプルが入っているんだが
「IOFactory」をロードする必要なんかないし・・・
実際Codeigniterで動作させたサンプルコードは以下。
ダウンロードするのが目的なんで
test\01simple-download-xls.php を Codeigniter に組み込みました。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
class Sampleexcel extends CI_Controller {
function __construct()
{
parent::__construct();
}
function index()
{
$this->downloadExcel();
}
private function downloadExcel()
{
$this->load->library("phpexcel");
// Create new PHPExcel object
$objPHPExcel = new PHPExcel();
// Set properties
$objPHPExcel->getProperties()->setCreator("Maarten Balliauw")
->setLastModifiedBy("Maarten Balliauw")
->setTitle("Office 2007 XLSX Test Document")
->setSubject("Office 2007 XLSX Test Document")
->setDescription("Test document for Office 2007 XLSX, generated using PHP classes.")
->setKeywords("office 2007 openxml php")
->setCategory("Test result file");
// Add some data
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue('A1', mb_convert_encoding('日本語','UTF-8', mb_internal_encoding()))
->setCellValue('B2', mb_convert_encoding('テストです。','UTF-8', mb_internal_encoding()))
->setCellValue('C1', mb_convert_encoding('文字エンコード','UTF-8', mb_internal_encoding()))
->setCellValue('D2', mb_convert_encoding('EUCなんですけど','UTF-8', mb_internal_encoding()));
// Miscellaneous glyphs, UTF-8
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue('A4', 'Miscellaneous glyphs')
->setCellValue('A5', 'éàèùâêîôûëïüÿäöüç');
// Rename sheet
$objPHPExcel->getActiveSheet()->setTitle('Simple');
// Set active sheet index to the first sheet, so Excel opens this as the first sheet
$objPHPExcel->setActiveSheetIndex(0);
// Redirect output to a client’s web browser (Excel5)
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="01simple.xls"');
header('Cache-Control: max-age=0');
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save('php://output');
exit;
}
} |
これをVIEWからリンクなどで呼び出すと「01simple.xls」ファイルとしてダウンロードできます。
日本語テストも兼ねてます。
Codeigniter 2.0.1 でxajaxを使用する
- 2011-06-26 (日)
- CodeIgniter
以前、xajax をCodeigniter 1.7.1に組み込んだのだが
その時はpluginとして組み込んでみたのだが
2.0でpluginは無くなっているのでlibraryとして組み込む。
xajaxのバージョンは「0.5 Final」
0.6では、PHP 5.3に対応しているようだが
今回のPHPは、5.2系なので「xajax 0.5 Final」を使用する。
xajax-projectのダウンロードページから「xajax 0.5 minimal」をダウンロード。(これはおこのみやね)
ダウンロードして圧縮ファイルを展開
展開された「xajax_core」フォルダごと「/application/libraries」へコピー。
「xajax_core」フォルダを「xajax」へリネーム
「xajax」フォルダの中にある「xajax.inc.php」を「xajax.php」にリネーム。
「xajax_js」フォルダはドキュメントルートへフォルダごとコピー。
これで準備は完了。
あとは、コントローラーファイルでライブラリをロードするだけ。
|
1 |
$this->load->library( 'xajax' ); |
Codeigniterの「クロスサイトリクエストフォージェリ (CSRF)」をconfigで有効にしている
xajaxは動作しません。
configでは「FALSE」に設定し、各コントローラーで個別に実装する必要があります。
jqueryでは、対応サンプルが公開されているようですが。
AJAX with CSRF Protection in Codeigniter 2.0
今回は、「クロスサイトリクエストフォージェリ (CSRF)」に関しては自動化ではなく、個別実装の方法をとっています。
CodeIgniterで複数ファイルを同時アップロード
- 2009-06-13 (土)
- CodeIgniter
イメージファイルや文書ファイルを複数同時にアップロードする機能が必要なので
調べたら、あっさりと見つかった。
やっぱ、いるよなぁ、複数ファイルのアップロードって
日本CodeIgniterユーザ会のメーリングリストにログがあって
KuniTsujiのPHP開発日記 サイトにソースがあった。
対象記事はCodeIgniterで複数のファイルをアップする
MY_Upload.phpファイルをsystem/application/libraries/に作成し、こちらのソースをコピーしてクラス名を「MY_Upload」に変更。
で、サンプルフォームを作成して動かしてOKだった。
サンプルソースは、めんどいので$_FILESなんかを使って確認しただけなんで、載せれんな。
それにサムネイル機能もサンプルでやってるんで長いしなぁ。
イメージファイルのサムネイル化なんやけど、KuniTsujiのPHP開発日記にもイメージファイルのリサイズに関する記事が載ってた。
もう既に phpThumbnailer を組み込んだあとに知った・・・・。
必要な機能
- 2009-05-28 (木)
- CodeIgniter
今度の案件では、必要な機能は次の通り
- ファイルアップロード
- PDF出力
- AJAX(あればちょっと便利)
- Excel(ついでに)
これらの機能をCodeIgniterで実装する。
1.のファイルアップロード機能はCodeIgniterに標準である。
けど、どうも1ファイルのアップロードっぽい。
必要なのは複数ファイルの同時アップロード。
2のPDF出力は、「tcPDF」の予定
3のAJAXは探して試したところ、簡単だった「xajax」
4は・・・まあ、今のところたち消えたけど、とりあえずライブラリを組み込んでおくことにしよう。
Excel_Reviser or PHPExcel
CodeIgniterで開発
- 2009-05-27 (水)
- CodeIgniter
PHPのフレームワークは過去にEthnaだけ使ったことあり。
んで、軽量フレームワークを探しててCodeIgniterにたどり着いた。
Kohanaも併せて試用したけど、CodeIgniterに決定。
次はKohanaでやってみるか
- コメント: 0
- Trackbacks: 0
- 検索
- フィード
- メタ情報