これは、使いやすく、肥大化せず、フレームワークに依存しない、PHP のバーコード ジェネレーターです。これはコンポーザーへの依存関係をまったく使用せず (!)、ほんの少数のファイルだけです。おそらくこれが、Packagist で最もダウンロードされた PHP 用バーコード ジェネレーターである理由です。 ;)
最も使用されている 1D バーコード標準から SVG、PNG、JPG、および HTML 画像を作成します。
QR コードなどの2Dバーコードはサポートされていません。
バーコードの「バー」部分のみを生成し、バーコードの下のテキストは生成しません。バーコードの下にコードのテキストが必要な場合は、後でこのパッケージの出力に追加できます。
Composer を通じてインストールします。
composer require picqer/php-barcode-generator
PNG または JPG 画像を生成したい場合は、GD ライブラリまたは Imagick もシステムにインストールする必要があります。 SVG または HTML レンダリングの場合、依存関係はありません。
特定の画像形式 (PNG や SVG など) で特定の「タイプ」(Code 128 や UPC など) のバーコードが必要です。
まず、バーコードにしたい文字列を、いずれかのバーコード タイプを使用してBarcode
オブジェクトにエンコードします。
次に、レンダラーの 1 つを使用して、 Barcode
オブジェクト内のバーのイメージをレンダリングします。
「タイプ」は、どの文字をエンコードできるか、どのバーがどの文字を表すかを定義する標準です。最もよく使用されるタイプはコード 128 と EAN/UPC です。すべての文字を各バーコード タイプにエンコードできるわけではなく、すべてのバーコード スキャナーがすべてのタイプを読み取れるわけではありません。
<?phprequire 'vendor/autoload.php';// Code128 エンコーディングのバーコード オブジェクトを作成します。$barcode = (new PicqerBarcodeTypesTypeCode128())->getBarcode('081231723897');// バーコードをブラウザに HTML として出力します。 HTML レンダラー$レンダラー = 新しいPicqerBarcodeRenderersHtmlRenderer();echo $renderer->render($barcode);
この美しさは次のようになります。
各レンダラーには独自のオプションがあります。たとえば、PNG の高さ、幅、色を設定できます。
<?phprequire 'vendor/autoload.php';$colorRed = [255, 0, 0];$barcode = (new PicqerBarcodeTypesTypeCode128())->getBarcode('081231723897');$renderer = new PicqerBarcodeRenderersPngRenderer();$renderer->setForegroundColor($colorRed);// widthFactor 3 (バーコードの幅 x 3)、高さ 50 ピクセルの PNG をファイルシステムに保存しますfile_put_contents('barcode.png', $renderer->render ($barcode, $barcode->getWidth() * 3, 50));
利用可能な画像レンダラー: SVG、PNG、JPG、および HTML。
これらはすべて RendererInterface に準拠しており、同じrender()
メソッドを持ちます。一部のレンダラーには、set*() メソッドを介した追加のオプションもあります。
render() メソッドには、Barcode オブジェクト、幅と高さが必要です。 JPG/PNG 画像の場合、Barcode オブジェクトの幅の係数である幅を指定した場合にのみ、有効なバーコードが得られます。このため、例では$barcode->getWidth() * 2
使用して、画像の幅をバーコード データの幅のピクセル単位で 2 倍にしています。幅として任意の数値を指定すると、画像は可能な限り最適に拡大縮小されますが、アンチエイリアシングを使用しない場合、完全には有効ではありません。
HTML および SVG レンダラーは、任意の幅と高さ (浮動小数点も含む) を処理できます。
各レンダラーのすべてのオプションは次のとおりです。
ベクターベースの SVG 画像。最高の印刷品質を実現します。
$renderer = 新しい PicqerBarcodeRenderersSvgRenderer();$renderer->setForegroundColor([255, 0, 0]); // バーの色を赤にします。デフォルトは黒です。赤、緑、青の 0 ~ 255 の値の 3 倍として与えます。 $renderer->setBackgroundColor([0, 0, 255]); // 背景色を青にします。デフォルトは透明です。赤、緑、青の 0 ~ 255 の値の 3 倍として与えます。 $renderer->setSvgType($renderer::TYPE_SVG_INLINE); // スタンドアロンの SVG 画像ではなく、HTML ドキュメント内でインラインで使用されるように出力を変更します (デフォルト)$renderer->setSvgType($renderer::TYPE_SVG_STANDALONE); // デフォルトを強制したい場合は、スタンドアロンの SVG image$renderer->render($barcode, 450.20, 75); // 幅と高さはフロートをサポートします
PNG と JPG のすべてのオプションは同じです。
$renderer = 新しい PicqerBarcodeRenderersPngRenderer();$renderer->setForegroundColor([255, 0, 0]); // バーの色を指定します。デフォルトは黒です。赤、緑、青の 0 ~ 255 の値の 3 倍として与えます。 $renderer->setBackgroundColor([0, 255, 255]); // 背景の色を指定します。デフォルトは透明 (PNG) または白 (JPG) です。赤、緑、青の 0 ~ 255 の値の 3 倍として与えます。 $renderer->useGd(); // Imagick と GD がインストールされているが、GD$renderer->useImagick() を使用したい場合。 // Imagick と GD がインストールされているが、Imagick$renderer->render($barcode, 5, 40); を使用したい場合。 // 幅係数 (各バーの幅は何ピクセルか) と高さ (ピクセル単位)
完全な HTML ドキュメントでインラインで使用する HTML を提供します。
$renderer = 新しい PicqerBarcodeRenderersHtmlRenderer();$renderer->setForegroundColor([255, 0, 0]); // バーの色を赤にします。デフォルトは黒です。赤、緑、青の 0 ~ 255 の値の 3 倍として与えます。 $renderer->setBackgroundColor([0, 0, 255]); // 背景色を青にします。デフォルトは透明です。赤、緑、青の 0 ~ 255 の値の 3 倍として与えます。 $renderer->render($barcode, 450.20, 75); // 幅と高さはフロートをサポートします
ここで HTML を指定すると、バーコードは全幅と高さを使用して、固定サイズのコンテナ/div 内に配置されます。
$renderer = 新しい PicqerBarcodeRenderersDynamicHtmlRenderer();$renderer->setForegroundColor([255, 0, 0]); // バーの色を赤にします。デフォルトは黒です。赤、緑、青の 0 ~ 255 の値の 3 倍として与えます。 $renderer->setBackgroundColor([0, 0, 255]); // 背景色を青にします。デフォルトは透明です。赤、緑、青の 0 ~ 255 の値の 3 倍として与えます。 $renderer->render($barcode);
次のように、レンダリングされた HTML を div 内に置くことができます。
<div style="width: 400px; height: 75px"><?php echo $renderedBarcode; ?></div>
これらのバーコード タイプがサポートされています。すべてのタイプは異なる文字セットをサポートしており、一部の長さは必須です。サポートされている文字とタイプごとの長さについては、wikipedia を参照してください。
サポートされているすべてのタイプは、src/Types フォルダーにあります。
最も使用されるタイプは TYPE_CODE_128 と TYPE_CODE_39 です。最高のスキャナ サポート、可変長、およびほとんどの文字がサポートされているためです。
TYPE_CODE_32 (イタリアの医薬品コード「MINSAN」)
TYPE_CODE_39
TYPE_CODE_39_CHECKSUM
TYPE_CODE_39E
TYPE_CODE_39E_CHECKSUM
TYPE_CODE_93
タイプ_スタンダード_2_5
TYPE_STANDARD_2_5_CHECKSUM
TYPE_INTERLEAVED_2_5
TYPE_INTERLEAVED_2_5_CHECKSUM
TYPE_CODE_128
タイプコード_128_A
タイプコード_128_B
タイプコード_128_C
TYPE_EAN_2
TYPE_EAN_5
TYPE_EAN_8
TYPE_EAN_13
TYPE_ITF14 (GTIN-14 とも呼ばれます)
TYPE_UPC_A
TYPE_UPC_E
TYPE_MSI
TYPE_MSI_CHECKSUM
TYPE_POSTNET
TYPE_PLANET
TYPE_RMS4CC
TYPE_KIX
TYPE_IMB
TYPE_CODABAR
TYPE_CODE_11
TYPE_PHARMA_CODE
TYPE_PHARMA_CODE_TWO_TRACKS
サポートされているすべてのバーコード タイプのサンプル画像を参照してください。
PNG または JPG 画像を使用する場合は、Imagick または GD ライブラリをインストールする必要があります。このパッケージは、Imagick がインストールされている場合はそれを使用します。そうでない場合は、GD にフォールバックします。両方がインストールされているが、特定の方法が必要な場合は、 $renderer->useGd()
または$renderer->useImagick()
使用して好みの方法を強制することができます。
$barcode = (new PicqerBarcodeTypesTypeCode128())->getBarcode('081231723897');$renderer = new PicqerBarcodeRenderersPngRenderer();echo '<img src="data:image/png;base64,' .base64_encode($renderer->render) ($バーコード、 $barcode->getWidth() * 2)) ;
$barcode = (new PicqerBarcodeTypesTypeCodabar())->getBarcode('081231723897');$renderer = new PicqerBarcodeRenderersJpgRenderer();file_put_contents('barcode.jpg', $renderer->render($barcode, $barcode->getWidth() * 2));
file_put_contents('barcode.svg', (new PicqerBarcodeRenderersSvgRenderer())->render((new PicqerBarcodeTypesTypeKix())->getBarcode('6825ME601')));
v2 から v3 にアップグレードする場合は、何も変更する必要はありません。上記では、v3 以降、このライブラリを使用する新しい推奨方法を示しています。しかし、古いスタイルは今でも機能します。
レンダラーに同じインターフェイスを提供するために、色の設定は常に RGB カラーの配列を使用するようになりました。古い BarcodeGenerator* クラスを使用し、名前 (「red」) または 16 進数コード (#3399ef) を持つ色を使用する場合、これらは ColorHelper を使用して変換されます。すべての 16 進コードがサポートされていますが、色の名前については基本色のみがサポートされています。
新しいスタイルに変換する場合の例は次のとおりです。
// 古いスタイル$generator = new PicqerBarcodeBarcodeGeneratorSVG();echo $generator->getBarcode('081231723897', $generator::TYPE_CODE_128);// 新しいスタイル$barcode = (new PicqerBarcodeTypesTypeCode128())->getBarcode('081231723897' );$レンダラー = new PicqerBarcodeRenderersSvgRenderer();echo $renderer->render($barcode);
レンダラの幅は、widthFactor ではなく、最終結果の幅になりました。動的な幅を維持したい場合は、エンコードされたバーコードの幅を取得し、それに widthFactor を乗算すると、以前と同じ結果が得られます。 widthFactor が 2 の例を参照してください。
// 古いスタイル$generator = new PicqerBarcodeBarcodeGeneratorSVG();echo $generator->getBarcode('081231723897', $generator::TYPE_CODE_128, 2. 30);// 新しいスタイル$barcode = (new PicqerBarcodeTypesTypeCode128())->getBarcode('081231723897');$renderer = new PicqerBarcodeRenderersSvgRenderer();echo $renderer->render($barcode, $barcode->getWidth() * 2, 30);
バージョン 3 では、バーコード タイプのエンコーダーと画像レンダラーは完全に分離されています。これにより、独自のレンダラーの構築がはるかに簡単になります。古い方法は「ジェネレーター」を使用していました。以下はこれらのジェネレーターの古い例であり、v3 でも同様に機能します。
必要な出力に対してバーコード ジェネレーターを開始し、必要なだけ ->getBarcode() ルーチンを呼び出します。
<?phprequire 'vendor/autoload.php';// これにより、ブラウザに表示する HTML 出力としてバーコードが出力されます$generator = new PicqerBarcodeBarcodeGeneratorHTML();echo $generator->getBarcode('081231723897', $generator::TYPE_CODE_128) );
この美しさは次のようになります。
getBarcode()
メソッドは次のパラメータを受け入れます。
$barcode
バーコードでエンコードするために必要な文字列
$type
バーコードのタイプ。クラスで定義された定数を使用します。
$widthFactor
幅はデータの長さに基づきます。この係数を使用すると、バーコード バーをデフォルトよりも広くすることができます
$height
バーコードの合計の高さ (ピクセル単位)
$foregroundColor
バーの色 (前景色) の文字列または RGB 配列としての 16 進コード
すべてのパラメータの使用例:
<?phprequire 'vendor/autoload.php';$redColor = [255, 0, 0];$generator = new PicqerBarcodeBarcodeGeneratorPNG();file_put_contents('barcode.png', $generator->getBarcode('081231723897', $generator) ::TYPE_CODE_128、3、50、 $redColor));
$generatorSVG = 新しい PicqerBarcodeBarcodeGeneratorSVG(); // ベクトルベースの SVG$generatorPNG = new PicqerBarcodeBarcodeGeneratorPNG(); // ピクセルベースの PNG$generatorJPG = new PicqerBarcodeBarcodeGeneratorJPG(); // ピクセルベースの JPG$generatorHTML = new PicqerBarcodeBarcodeGeneratorHTML(); // ピクセルベースの HTML$generatorHTML = new PicqerBarcodeBarcodeGeneratorDynamicHTML(); // ベクターベースの HTML
$generator = new PicqerBarcodeBarcodeGeneratorPNG();echo '<img src="data:image/png;base64,' .base64_encode($generator->getBarcode('081231723897', $generator::TYPE_CODE_128)) . '">';
$generator = new PicqerBarcodeBarcodeGeneratorJPG();file_put_contents('barcode.jpg', $generator->getBarcode('081231723897', $generator::TYPE_CODABAR));
file_put_contents('barcode.svg', (new PicqerBarcodeBarcodeGeneratorSVG())->getBarcode('6825ME601', PicqerBarcodeBarcodeGeneratorSVG::TYPE_KIX));
コードベースは、Nicola Asuni による TCPDF バーコード ジェネレーターに基づいています。したがって、このコードは LGPLv3 に基づいてライセンスされています。