[PHP]PHP-BarcodeとgenbarcodeでCODE128Cのバーコードを生成する

PHP-Barcodeはバーコードを生成するPHPのライブラリですが、これ単体ではEAN-13、またはISBNのエンコードしかできません。

今手をつけている案件では32桁の数値からなるコードをCODE128のスタートコードCで吐き出す必要があったため、このPHP-Barcodeとgenbarcodeというエンコーダーを連携させて対応しました。

PHP-Barcodeはbarcode_print関数に引数を渡すだけなので割愛するとして、今回苦労したgenbarcodeの設定方法をメモします。

GUN-barcodeのインストール

genbarcodeのインストールファイルをダウンロードしたらREADMEにGNU-barcodeというライブラリが必要だと書いてあったので、まずこちらをインストールします。

ただしここで注意しなければならないのが、最新のv0.99だと、genbarcode0.4がインストールできませんでした。
なので、v0.98を利用しましょう。

http://ftp.gnu.org/gnu/barcode/barcode-0.98.tar.gz

$ wget http://ftp.gnu.org/gnu/barcode/barcode-0.98.tar.gz
$ tar xfvz barcode-0.98.tar.gz
$ ./configure
$ make
become root ( $ su )
# make install
# ldconfig

genbarcodeのREADMEのとおりですね。

ちなみにmacにインストールしたい場合は、OSX向けにこんなファイルがありました。
Download GNU Barcode for Mac Free
僕はCentOSだったので利用しませんでしたが参考までに。

genbarcodeのインストール

続けてgenbarcodeのインストールです。

$ wget http://www.ashberg.de/php-barcode/download/files/genbarcode-0.4.tar.gz
$ tar xfvz genbarcode-0.4.tar.gz
$ make
become root ( $ su )
# make install

これでインストール完了です。

バーコードの生成

genbarcodeをインストールすると、EAN-13、ISBNに加え、

ANY choose best-fit (default)
EAN 8 or 13 EAN-Code
UPC 12-digit EAN
ISBN isbn numbers (still EAN-13)
39 code 39
128 code 128 (a,b,c: autoselection)
128C code 128 (compact form for digits)
128B code 128, full printable ascii
I25 interleaved 2 of 5 (only digits)
128RAW Raw code 128 (by Leonid A. Broukhis)
CBR Codabar (by Leonid A. Broukhis)
MSI MSI (by Leonid A. Broukhis)
PLS Plessey (by Leonid A. Broukhis)

以上の形式のエンコードができるようになります。

説明は必要無さそうですが、サンプルソースを記しておきます。

require("php-barcode.php");

$code = '12345678901234567890123456789012';
$encoding = '128C';
$scale = 2;
$mode = 'png';

barcode_print($code, $encoding, $scale, $mode);

barcode.phpを利用する場合は、

http://example.net/barcode.php?code=1234….&encoding=128C&scale=2&mode=png

のようにGETでパラメータを渡せば取得できます。

PHP-Barcodeについて

PHP-Barcodeは古いライブラリでしばらくメンテナンスされていないようなので、今回の利用は悩んだのですが他にCODE128Cを出力できるライブラリを見つけられなかったのと、今回の案件が既存システムのカスタマイズ案件だったため元々利用していたPHP-Barcodeをそのまま利用しました。

PHPのライブラリだけでCODE128のスタートコードにも対応できるライブラリが見つかれば良かったんですが、もしご存知の方がいましたら教えて下さい。

スポンサーリンク
336x280_1
336x280_1

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク
336x280_1