忍者ブログ

VB.NET-TIPS などプログラミングについて

VB.NETのTIPS(小技集)を中心に、Javascript、PHP その他のプログラミングについて少し役に立つ情報を発信します。いわゆる個人的な忘備録ですが、みなさんのお役に立てれば幸いです。

PHP TCPDFの一次元バーコードの表示方法について(write1DBarcodeメソッド)

今回は write1DBarcode メソッドを使って 一次元バーコード を表示する方法について説明します。

一次元バーコード といえば商品などに付いている「JAN」「CODE39」「CODE128」のバーコードです。 ちなみに「JAN」は日本のみの呼称で「EAN」または「UPC」と呼ばれるそうです。

ここで write1DBarcode メソッドの引数について説明を記します。

// write1DBarcodeメソッド
public function write1DBarcode($code, $type, $x=null, $y=null, $w=null, $h=null, 
                               $xres=null, $style=array(), $align='')
// $code    : 印刷するコード
// $type    : バーコードのタイプ("C39", "C93", "C138", "EAN13", "EAN8"など)
// $x       : X位置(指定されたユーザの単位)(NULL:カレントのX位置)
// $y       : Y位置(指定されたユーザの単位)(NULL:カレントのY位置)
// $w       : 横幅(指定されたユーザの単位)(NULL:カレントのX位置から用紙出力の横幅MAXまで)
// $h       : 縦幅(指定されたユーザの単位)(NULL:カレントのX位置から用紙出力の縦幅MAXまで)
// $xres    : バーの最小幅(NULL:デフォルトで「0.4mm」)
// $style   : 出力オプションを配列で指定
//            $style['border']:boolean:trueでボーダー出力
//            $style['padding']:int:バーコード周囲の余白('auto':自動設定)
//            $style['hpadding']:int:水平方向の余白('auto':自動設定)
//            $style['vpadding']:int:垂直方向の余白('auto':自動設定)
//            $style['fgcolor']:color array:バーと文字色
//            $style['bgcolor']:color array:背景色
//            $style['text']:boolean:trueでバーコードの下にテキスト出力
//            $style['label']:string:デフォルトのラベル
//            $style['font']:string:テキストのフォント名
//            $style['fontsize']:int:テキストのフォントサイズ
//            $style['stretchtext']:int:出力テキストの伸縮(ストレッチ)モード
//                [0]: 不可
//                [1]: 水平方向(必要な場合)
//                [2]: 水平方向(強制的)
//                [3]: 空白文字(必要な場合)
//                [4]: 空白文字(強制的)
//            $style['position']:string:横幅で指定されるセル上での水平配置
//                ['L']: 左寄せ
//                ['C']: 中央揃え
//                ['R']: 右寄せ
//            $style['align']:string:横幅で指定されるセル上での水平配置
//                ['L']: 左寄せ
//                ['C']: 中央揃え
//                ['R']: 右寄せ
//            $style['stretch']:boolean:trueでバー最小幅を計算上のMAXにする
//            $style['fitwidth']:boolean:trueでバーコードと余白幅を含めてフィットとさせる
//                (この指定がtrueの場合は$style['stretch']がfalseとなる)
//            $style['cellfitalign']:バーコードセルの位置指定
//                ($style['fitwidth']がtrueで$style['position']が未設定の場合のみ有効)
//                ['L']: 左寄せ
//                ['C']: 中央揃え
//                ['R']: 右寄せ
// $align   : 出力後のカーソルの移動方法を指定
//            [T]: 右上へ移動
//            [M]: 右中央へ移動(既定)
//            [B]: 右下へ移動
//            [N]: 次の行へ移動




それでは write1DBarcode メソッドを使用したバーコードの表示の簡単な例を以下に記します。

write1DBarcode メソッドを使用したバーコードの表示

以下の例では CODE39, CODE39 + CHECKSUM, CODE128, EAN8, EAN13, CODABAR のバーコードを表示しています。

<?php
require_once('../tcpdf/tcpdf.php');

// クラス生成
$pdf = new TCPDF();

// デフォルトで用意されている日本語フォント[小塚ゴシックPro M]
$strFont = "kozgopromedium";
// ヘッダ・フッタ出力設定(特にいらないが)
$pdf->setPrintHeader(false);
$pdf->setPrintFooter(false);
// 本文の日本語フォント[小塚ゴシックPro M]
$pdf->SetFont($strFont, "", 10);

// 新しいpdfページを追加
$pdf->AddPage();

$pdf->Write(0, '一元バーコード表示テスト', '', false, '', true);
$pdf->Ln();

// define barcode style
$style = array(
	'border'       => true,         //枠線有
	'hpadding'     => 'auto',       //水平空白埋め自動
	'vpadding'     => 'auto',       //垂直空白埋め自動
	'fgcolor'      => array(0,0,0), //テキスト色黒
	'bgcolor'      => false,        //背景色指定無し
	'text'         => true,         //テキスト表示
	'font'         => 'helvetica',  //
	'fontsize'     => 8,            //
	'stretchtext'  => 4 ,           //
	'position'     => '',           //位置は現在位置
	'align'        => 'C',          //中央揃え
	'stretch'      => false,        //ストレッチ無し
	'fitwidth'     => true,         //横幅にフィット
	'cellfitalign' => '',           //バーコードセルの位置指定無し
);

// 各種の代表的なバーコード出力

// CODE 39 
$pdf->Cell(0, 0, '[CODE39]のテスト : CODE39 TEST', 0, 1);
$pdf->write1DBarcode('CODE39 TEST', 'C39', '', '', '', 18, 0.4, $style, 'N');
$pdf->Ln();

// CODE 39 + CHECKSUM
$pdf->Cell(0, 0, '[CODE39チェックサム付]のテスト : CODE39 CHECKSUM', 0, 1);
$pdf->write1DBarcode('CODE39 CHECKSUM', 'C39+', '', '', '', 18, 0.4, $style, 'N');
$pdf->Ln();

// CODE 128
$pdf->Cell(0, 0, '[CODE128]のテスト : CODE128 TEST', 0, 1);
$pdf->write1DBarcode('CODE128 TEST', 'C128', '', '', '', 18, 0.4, $style, 'N');
$pdf->Ln();

// EAN 8
$pdf->Cell(0, 0, 'EAN8 : 4901234', 0, 1);
$pdf->write1DBarcode('4901234', 'EAN8', '', '', '', 18, 0.4, $style, 'N');
$pdf->Ln();

// EAN 13
$pdf->Cell(0, 0, 'EAN13 : 490123456789', 0, 1);
$pdf->write1DBarcode('490123456789', 'EAN13', '', '', '', 18, 0.4, $style, 'N');
$pdf->Ln();

// CODABAR
$pdf->Cell(0, 0, 'CODABAR : 123456789', 0, 1);
$pdf->write1DBarcode('123456789', 'CODABAR', '', '', '', 18, 0.4, $style, 'N');
$pdf->Ln();

// pdf表示設定
$pdf->Output('pdf-barcode-1.pdf', 'I');
?>

これの実行結果は以下の通りです。



バーコードの種類は TCPDF のソースから以下のものが在ることが分かります。

C39     : CODE 39 - ANSI MH10.8M-1983 - USD-3 - 3 of 9.
C39+    : CODE 39 with checksum
C39E    : CODE 39 EXTENDED
C39E+   : CODE 39 EXTENDED + CHECKSUM
C93     : CODE 93 - USS-93
S25     : Standard 2 of 5
S25+    : Standard 2 of 5 + CHECKSUM
I25     : Interleaved 2 of 5
I25+    : Interleaved 2 of 5 + CHECKSUM
C128    : CODE 128
C128A   : CODE 128 A
C128B   : CODE 128 B
C128C   : CODE 128 C
EAN2    : 2-Digits UPC-Based Extension
EAN5    : 5-Digits UPC-Based Extension
EAN8    : EAN 8
EAN13   : EAN 13
UPCA    : UPC-A
UPCE    : UPC-E
MSI     : MSI (Variation of Plessey code)
MSI+    : MSI + CHECKSUM (modulo 11)
POSTNET : POSTNET
PLANET  : PLANET
RMS4CC  : RMS4CC (Royal Mail 4-state Customer Code) - CBC (Customer Bar Code)
KIX     : KIX (Klant index - Customer index)
IMB     : Intelligent Mail Barcode - Onecode - USPS-B-3200
CODABAR : CODABAR
CODE11  : CODE 11
PHARMA  : PHARMACODE
PHARMA2T: PHARMACODE TWO-TRACKS











PR

コメント

コメントを書く