Image_Barcode 1.1.0 (stable)
http://pear.php.net/package/Image_Barcode
バーコードは何気に個人でも発行することが出来ます。
JAN企業コード(JANメーカーコード)利用の手引き
http://www.amazon.co.jp/dp/B000VPKMAW
まあ本格的にバーコードを利用しようとしている人がここを参考になんて間違ってもしないでしょうけれど、非常に簡単にバーコードを作成できるライブラリ、Image_Barcodeを使ってバーコードを作成してみます。
ちなみに日本で使用されているJANコードは、EANコードと同じものです。
Code39、Code128、EAN13、INT25、PostNet、UPCAと各種バーコードに対応していますが、Code128以外はintしか扱えません。
下手にstringとかを入れるとエラーが山ほど帰ってきてしまいますので、ラッパークラスでどうにかします。
ついでにエラーになりそうなところを片端からチェックしておきます。
おかげでなにやら無駄に長くなっていますが、特にエラーのこととかを考える必要がないのであれば直接呼んだ方が早いです。
barcode.class.php
<?php define('CURRENT_DIR',getcwd().'/'); define('PEAR_DIR',$_SERVER['DOCUMENT_ROOT'].'/src/php/pear/'); ini_set('include_path',PEAR_DIR.PATH_SEPARATOR.ini_get('include_path')); require_once(PEAR_DIR.'Image/Barcode.php'); class pearBarcodeModel { //メンバ変数 private $barcode=''; private $string=''; private $code='ean13'; private $ext='jpg'; //コンストラクタ public function __construct(){ $this->barcode=new Image_Barcode(); } //文字セット public function setString($str){ $this->string=$str; } //バーコード体系セット public function setCode($str){ if(stripos($str,'39')!==false){ $this->code='Code39'; }else if(stripos($str,'128')!==false){ $this->code='code128'; }else if(stripos($str,'int')!==false){ $this->code='int25'; }else if(stripos($str,'post')!==false){ $this->code='postnet'; }else if(stripos($str,'up')!==false){ $this->code='upca'; }else{ $this->code='ean13'; } } //拡張子セット public function setExt($str){ if(stripos($str,'j')===0){ $this->ext='jpg'; }else if(stripos($str,'g')===0){ $this->ext='gif'; }else{ $this->ext='png'; } } //表示 public function printBarcode(){ if($this->_checkArg()==false){return false;} $ret=$this->barcode->draw($this->string,$this->code,$this->ext); } //ファイルに保存 public function saveBarcode($filename){ if(!$filename || ($image=$this->getBarcode())===false){return false;} switch ($this->ext) { case 'gif': $ret=imagegif($image,$filename); imagedestroy($image); break; case 'jpg': $ret=imagejpeg($image,$filename); imagedestroy($image); break; default: $ret=imagepng($image,$filename); imagedestroy($image); break; } return $ret; } //GDオブジェクトとして取得 public function getBarcode(){ if($this->_checkArg()==false){return false;} return $this->barcode->draw($this->string,$this->code,$this->ext,false); } //引数チェック private function _checkArg(){ //code128以外は数値のみ if($this->code!='code128' && preg_match('/^[0-9]+$/',$this->string)==0){ return false; } //upcaは数値12桁 if($this->code=='upca' && strlen($this->string)!=12){ return false; } return true; } #↓クラスのおわり } |
barcode.php
<?php /* |
printBarcodeを呼べばそのまま画像ファイルとして出力します。
saveBarcodeでファイルとして保存されます。
getBarcodeでGDオブジェクトとして取得できるので、取得したバーコードを更に変更を加える場合はこちらを使用します。
このクラス最大の問題点は、使用者がいないということでしょう。