這是一個易於使用、不臃腫、獨立於框架的 PHP 條碼生成器。它使用零(!)作曲家依賴項,並且只有少數文件。這可能是 Packagist 上下載次數最多的 PHP 條碼產生器的原因。 ;)
它根據最常用的一維條碼標準來建立 SVG、PNG、JPG 和 HTML 圖片。
不支援任何二維條碼,例如 QR 碼。
我們僅產生條碼的「條」部分,條碼下方沒有文字。如果您想要條碼下方的程式碼文本,您可以稍後將其添加到此包的輸出中。
透過composer安裝:
composer require picqer/php-barcode-generator
如果您想產生 PNG 或 JPG 映像,您還需要在系統上安裝 GD 庫或 Imagick。對於 SVG 或 HTML 渲染,沒有依賴性。
您需要特定影像格式(例如 PNG 或 SVG)的特定「類型」(例如 Code 128 或 UPC)的條碼。
首先,使用其中一種條碼類型將您想要條碼的字串編碼到Barcode
物件中。
然後,使用渲染器之一渲染Barcode
物件中的條形影像。
「類型」是一個標準,它定義了可以編碼哪些字元以及哪些條代表哪個字元。最常用的類型是代碼 128 和 EAN/UPC。並非所有字元都可以編碼為每種條碼類型,並且並非所有條碼掃描器都可以讀取所有類型。
<?phprequire 'vendor/autoload.php';// 製作 Code128 編碼的 Barcode 物件。渲染器$renderer = new PicqerBarcodeRenderersHtmlRenderer();echo $renderer->render($barcode);
會產生這樣的美感:
每個渲染器都有自己的選項。例如,您可以設定 PNG 的高度、寬度和顏色:
<?phprequire 'vendor/autoload.php';$colorRed = [255, 0, 0];$barcode = (new PicqerBarcodeTypesTypeCode128())->getBarcode('081231723897');$renderer = new PicqerBarenderer) ->setForegroundColor($colorRed);// 將PNG 儲存到檔案系統,寬度因子為3(條碼的寬度x 3),高度為50 像素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 = new PicqerBarcodeRenderersSvgRenderer();$renderer->setForegroundColor([255, 0, 0]); // 為條形指定紅色,預設為黑色。將其指定為紅色、綠色和藍色的 3 倍 0-255 值。 $渲染器->setBackgroundColor([0, 0, 255]); // 為背景指定藍色,預設為透明。將其指定為紅色、綠色和藍色的 3 倍 0-255 值。 $renderer->setSvgType($renderer::TYPE_SVG_INLINE); // 變更在 HTML 文件中內嵌使用的輸出,而不是獨立的 SVG 圖片(預設)$renderer->setSvgType($renderer::TYPE_SVG_STANDALONE); // 如果您想要強制使用預設值,請建立一個獨立的 SVG 圖像$renderer->render($barcode, 450.20, 75); // 寬度和高度支援浮動
PNG 和 JPG 的所有選項都是相同的。
$renderer = new PicqerBarcodeRenderersPngRenderer();$renderer->setForegroundColor([255, 0, 0]); // 指定條形的顏色,預設為黑色。將其指定為紅色、綠色和藍色的 3 倍 0-255 值。 $渲染器->setBackgroundColor([0, 255, 255]); // 指定背景顏色,預設為透明(PNG)或白色(JPG)。將其指定為紅色、綠色和藍色的 3 倍 0-255 值。 $渲染器->useGd(); // 如果你安裝了Imagick和GD,但想使用GD$renderer->useImagick(); // 如果你安裝了 Imagick 和 GD,但想使用 Imagick$renderer->render($barcode, 5, 40); // 寬度因子(每個條形有多少像素寬)和高度(以像素為單位)
使 HTML 在完整的 HTML 文件中內聯使用。
$renderer = new PicqerBarcodeRenderersHtmlRenderer();$renderer->setForegroundColor([255, 0, 0]); // 為條形指定紅色,預設為黑色。將其指定為紅色、綠色和藍色的 3 倍 0-255 值。 $渲染器->setBackgroundColor([0, 0, 255]); // 為背景指定藍色,預設為透明。將其指定為紅色、綠色和藍色的 3 倍 0-255 值。 $渲染器->渲染($條碼, 450.20, 75); // 寬度和高度支援浮動
此處給出 HTML,條碼使用完整的寬度和高度,放入具有固定大小的容器/div 內。
$renderer = new PicqerBarcodeRenderersDynamicHtmlRenderer();$renderer->setForegroundColor([255, 0, 0]); // 為條形指定紅色,預設為黑色。將其指定為紅色、綠色和藍色的 3 倍 0-255 值。 $渲染器->setBackgroundColor([0, 0, 255]); // 為背景指定藍色,預設為透明。將其指定為紅色、綠色和藍色的 3 倍 0-255 值。 $渲染器->渲染($條碼);
您可以將渲染的 HTML 放入 div 中,如下所示:
<div style="width: 400px; height: 75px"><?php echo $renderedBarcode; ?
支援這些條碼類型。所有類型都支援不同的字元集,有些類型具有強制長度。請參閱維基百科以了解每種類型支援的字元和長度。
您可以在 src/Types 資料夾中找到所有支援的類型。
最常用的類型是 TYPE_CODE_128 和 TYPE_CODE_39。由於最好的掃描器支援、可變長度和支援的大多數字元。
TYPE_CODE_32(義大利藥品代碼「MINSAN」)
類型_代碼_39
TYPE_CODE_39_CHECKSUM
TYPE_CODE_39E
TYPE_CODE_39E_CHECKSUM
類型_代碼_93
TYPE_STANDARD_2_5
TYPE_STANDARD_2_5_CHECKSUM
TYPE_INTERLEAVED_2_5
TYPE_INTERLEAVED_2_5_CHECKSUM
類型_代碼_128
TYPE_CODE_128_A
TYPE_CODE_128_B
TYPE_CODE_128_C
TYPE_EAN_2
TYPE_EAN_5
TYPE_EAN_8
TYPE_EAN_13
TYPE_ITF14(也稱為 GTIN-14)
TYPE_UPC_A
TYPE_UPC_E
類型_MSI
類型_MSI_校驗和
類型_POSTNET
類型_PLANET
類型_RMS4CC
類型_KIX
類型_IMB
TYPE_CODABAR
類型_代碼_11
TYPE_PHARMA_CODE
TYPE_PHARMA_CODE_TWO_TRACKS
查看所有支援的條碼類型的範例圖像
如果要使用PNG或JPG映像,則需要安裝Imagick或GD庫。如果安裝了Imagick,這個套件將使用Imagick,或回退到GD。如果兩者都安裝了,但您想要特定的方法,則可以使用$renderer->useGd()
或$renderer->useImagick()
來強制您的偏好。
$barcode = (new PicqerBarcodeTypesTypeCode128())->getBarcode('081231723897');$renderer = new PicqerBarcodeRenderersPngRenderer();echo '<img src="data:image/png; ($barcode, $barcode->getWidth() * 2)) '">';
$barcode = (new PicqerBarcodeTypesTypeCodabar())->getBarcode('081231723897');$renderer = new PicqerBarcodeRenderersJpgRenderer();file_put_contents('barcode.jpg', $renderer->r.(bar); ) * 2));
file_put_contents('barcode.svg', (new PicqerBarcodeRenderersSvgRenderer())->render((new PicqerBarcodeTypesTypeKix())->getBarcode('6825ME601')));
從 v2 升級到 v3 時無需更改任何內容。在上面您可以找到自 v3 以來使用該庫的新首選方式。但舊的風格仍然有效。
為了給渲染器相同的介面,現在始終使用 RGB 顏色數組來設定顏色。如果您使用舊的 BarcodeGenerator* 類別並使用帶有名稱(“red”)或十六進位代碼(#3399ef)的顏色,這些顏色將使用 ColorHelper 進行轉換。支援所有十六進位代碼,但對於顏色名稱,僅支援基本顏色。
如果您想轉換為新樣式,這裡有一個範例:
// 舊樣式$generator = new PicqerBarcodeBarcodeGeneratorSVG();echo $generator->getBarcode('081231723897', $generator::TYPE_CODE_128);// 新樣式$barcode = (new Picqerator::TYPE_CODE_128);// 新樣式$barcode = (new Picqerator::TYPE_CODE_128);// 新樣式$barcode = (new Picqerator::TYPE_CODE_128);// 新樣式$barcode = (new Picqerator::TYPE_CODE_128); );$renderer = new PicqerBarcodeRenderersSvgRenderer();echo $renderer->render($barcode);
渲染器中的寬度現在是最終結果的寬度,而不是 widthFactor。如果您想保持動態寬度,您可以取得編碼條碼的寬度並將其乘以 widthFactor 以獲得與先前相同的結果。請參閱此處 widthFactor 為 2 的範例:
// 舊樣式$generator = new PicqerBarcodeBarcodeGeneratorSVG();echo $generator->getBarcode('081231723897', $generator::TYPE_CODE_128, 2. 30);// 新樣式$barcode ('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->getBarcode('081231723897', $generator_TYPE_CODE) ;
會產生這樣的美感:
getBarcode()
方法接受以下參數:
$barcode
條碼中編碼所需的字串
$type
條碼類型,使用類別中定義的常數
$widthFactor
寬度基於資料的長度,使用此因子可以使條碼條比預設值更寬
$height
條碼的總高度(以像素為單位)
$foregroundColor
十六進位代碼,作為條形顏色(前景色)的字串或 RGB 數組
所有參數的使用範例:
<?phprequire 'vendor/autoload.php';$redColor = [255, 0, 0];$generator = new PicqerBarcodeBarcodeGeneratorPNG();file_put_contents('barcode.png', $generator->getBargencode('081231723897' ::TYPE_CODE_128, 3, 50, $redColor));
$generatorSVG = new 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_'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 獲得許可。