Меню Закрыть

Генерация штрих кода php

Содержание

Здравствуйте, уважаемые читатели блога LifeExample, недавно передо мной встала задача "как в php штрих код генерацию сделать?", то есть по введенному артикулу продукта генерировать штрих код (barcode) и вывести его на страницу для дальнейшей печати.

Нет такого человека на сегодняшний день, кто бы ни разу не встретил штрих код в повседневной жизни, ведь все мы ежедневно совершаем покупки в супермаркетах. Если посмотреть внимательно,то на всех этикетках и упаковках в магазинах имеется место, на котором напечатан набор черных полосок разной ширины, разделенных белым пространством, так вот данный набор и называется штрих код.

Существует большая разновидность штрих кодов:

Штриховой код Codabar

Штриховой код "2 of 5"

Штриховой код 39

Штриховые коды UPC и EAN

Стековый код PDF417

Матричный код Data Matrix

Для генерации этих и других видов штрих кода придумано немало алгоритмов кодирования:

EAN-8, EAN-12, EAN-13, UPC, ISBN, Code39, Code128, Code128B, Code128B, RAWCode128, Interleaved25, CBR, MSI, PLS and Code93

Существует и разнообразие среди библиотек по работе с штрих кодами в php, но я хочу предложить один наиболее простой способ генерации в php штрих кода — без подключения библиотек.

Генерировать штрих код мы будем по алгоритму Code39

Наименование данного кода связано со структурой изображения букв "3 из 9", где три элемента буквы (два штриха и один пробел) из девяти являются широкими, а остальные шесть — узкими. Каждая буква кода 39 представлена пятью штрихами и четырьмя пробелами.

По сравнению с кодом 2 of 5 число вариантов изображения буква увеличивается в четыре раза и позволяет отобразить 40 различных букв. Предусмотрены четыре дополнительных знака ($, «, +, %). Код 39 является дискретным, контролируемым. Достоинством этого кода является его очень высокая надежность, которая может быть увеличена добавлением в символ контрольной буквы.

Читайте также:  Fat32 или exfat для флешки

Как генерировать в PHP штрих код Code39

Ниже приведен маленький самописный класс, смысл которого заключается в преобразовании входящей строки в последовательности типа: bbbwbwwwbwbwbbbw, где b – черный , w – белый промежутки кода.

protected static $code39 = array (
‘0’ => ‘bwbwwwbbbwbbbwbw’ , ‘1’ => ‘bbbwbwwwbwbwbbbw’ ,
‘2’ => ‘bwbbbwwwbwbwbbbw’ , ‘3’ => ‘bbbwbbbwwwbwbwbw’ ,
‘4’ => ‘bwbwwwbbbwbwbbbw’ , ‘5’ => ‘bbbwbwwwbbbwbwbw’ ,
‘6’ => ‘bwbbbwwwbbbwbwbw’ , ‘7’ => ‘bwbwwwbwbbbwbbbw’ ,
‘8’ => ‘bbbwbwwwbwbbbwbw’ , ‘9’ => ‘bwbbbwwwbwbbbwbw’ ,
‘A’ => ‘bbbwbwbwwwbwbbbw’ , ‘B’ => ‘bwbbbwbwwwbwbbbw’ ,
‘C’ => ‘bbbwbbbwbwwwbwbw’ , ‘D’ => ‘bwbwbbbwwwbwbbbw’ ,
‘E’ => ‘bbbwbwbbbwwwbwbw’ , ‘F’ => ‘bwbbbwbbbwwwbwbw’ ,
‘G’ => ‘bwbwbwwwbbbwbbbw’ , ‘H’ => ‘bbbwbwbwwwbbbwbw’ ,
‘I’ => ‘bwbbbwbwwwbbbwbw’ , ‘J’ => ‘bwbwbbbwwwbbbwbw’ ,
‘K’ => ‘bbbwbwbwbwwwbbbw’ , ‘L’ => ‘bwbbbwbwbwwwbbbw’ ,
‘M’ => ‘bbbwbbbwbwbwwwbw’ , ‘N’ => ‘bwbwbbbwbwwwbbbw’ ,
‘O’ => ‘bbbwbwbbbwbwwwbw’ , ‘P’ => ‘bwbbbwbbbwbwwwbw’ ,
‘Q’ => ‘bwbwbwbbbwwwbbbw’ , ‘R’ => ‘bbbwbwbwbbbwwwbw’ ,
‘S’ => ‘bwbbbwbwbbbwwwbw’ , ‘T’ => ‘bwbwbbbwbbbwwwbw’ ,
‘U’ => ‘bbbwwwbwbwbwbbbw’ , ‘V’ => ‘bwwwbbbwbwbwbbbw’ ,
‘W’ => ‘bbbwwwbbbwbwbwbw’ , ‘X’ => ‘bwwwbwbbbwbwbbbw’ ,
‘Y’ => ‘bbbwwwbwbbbwbwbw’ , ‘Z’ => ‘bwwwbbbwbbbwbwbw’ ,
‘-‘ => ‘bwwwbwbwbbbwbbbw’ , ‘.’ => ‘bbbwwwbwbwbbbwbw’ ,
‘ ‘ => ‘bwwwbbbwbwbbbwbw’ , ‘*’ => ‘bwwwbwbbbwbbbwbw’ ,
‘$’ => ‘bwwwbwwwbwwwbwbw’ , ‘/’ => ‘bwwwbwwwbwbwwwbw’ ,
‘+’ => ‘bwwwbwbwwwbwwwbw’ , ‘%’ => ‘bwbwwwbwwwbwwwbw’
) ;

public static function code39 ( $text ) <
if ( ! preg_match ( ‘/^[A-Z0-9-. $+/%]+$/i’ , $text ) ) <
throw new Exception ( ‘Ошибка ввода’ ) ;
>

$text = ‘*’ . strtoupper ( $text ) . ‘*’ ;
$length = strlen ( $text ) ;
$chars = str_split ( $text ) ;
$colors = » ;

foreach ( $chars as $char ) <
$colors .= self :: $code39 [ $char ] ;
>

foreach ( str_split ( $colors ) as $i => $color ) <
if ( $color == ‘b’ ) <
$html .= ‘ ‘ ;
> else <
$html .= ‘ ‘ ;
>
>

‘ ;
// echo htmlspecialchars($html);
echo $html ;
>

В классе присутствует ассоциативный массив соответствий символов и последовательностей штрихов для них. Например, если мы захотим закодировать слово "PHP" то получим такую последовательность:

bwbbbwbbbwbwwwbw bbbwbwbwwwbbbwbw bwbbbwbbbwbwwwbw

Три входящих символа (‘P’,’H’,’P’) равны трем последовательностям. Пробелы между ними я проставил для наглядности.

Читайте также:  Горизонтальная прокрутка колесиком мыши

Полученная последовательность преобразуется в штрих код для слова PHP

Особенностью примера служит то, что в результате генерации штрих кода PHP , в данном классе мы получаем не просто картинку, как это сделано во многих библиотеках, а последовательность HTML элементов выстраивающихся в штрих код.

Вот так выглядит приведенный выше штрих код на самом деле:

Плюсы данного подхода в том, что после распечатывания наклеек с штрих кодами мы получим наиболее четкие линии чем при печати сгенерированной картинки.

Как генерируется штрих код code39 мы выяснили, осталось лишь сделать красивую верстку для удобного распечатывания и последующей нарезки наклеек.

header ( ‘Content-Type: text/html; charset=utf-8’ ) ; ?>

Штрих код PHP

$pkgs = array (
array ( ‘shop’ => ‘ООО "Могута"’ , ‘sku’ => ‘PHP’ , ‘price’ => ‘1000’ , ‘buyer_fio’ => ‘Авдеев Марк’ , ‘buyer_phone’ => ‘+7921424078’ ) ,
array ( ‘shop’ => ‘ООО "Могута"’ , ‘sku’ => ‘KEY2’ , ‘price’ => ‘1100’ , ‘buyer_fio’ => ‘Авдеев Марк’ , ‘buyer_phone’ => ‘+7921448859’ ) ,
array ( ‘shop’ => ‘ООО "Могута"’ , ‘sku’ => ‘KEY3’ , ‘price’ => ‘1200’ , ‘buyer_fio’ => ‘Авдеев Марк’ , ‘buyer_phone’ => ‘+7911039368’ ) ,
array ( ‘shop’ => ‘ООО "Могута"’ , ‘sku’ => ‘KEY4’ , ‘price’ => ‘1300’ , ‘buyer_fio’ => ‘Авдеев Марк’ , ‘buyer_phone’ => ‘+7965004149’ ) ,
array ( ‘shop’ => ‘ООО "Могута"’ , ‘sku’ => ‘KEY5’ , ‘price’ => ‘1400’ , ‘buyer_fio’ => ‘Авдеев Марк’ , ‘buyer_phone’ => ‘+7921424078’ ) ,
array ( ‘shop’ => ‘ООО "Могута"’ , ‘sku’ => ‘KEY6’ , ‘price’ => ‘1500’ , ‘buyer_fio’ => ‘Авдеев Марк’ , ‘buyer_phone’ => ‘+7921448859’ ) ,
) ;
?>

foreach ( $pkgs as $item ) : ?>

Этот php скрипт реализует веб-интерфейс для создания изображений штрих-кодов в соответствии с известными стандартами штрих-кодов.

В настоящее время он поддерживает следующие стандарты штрих-кодов: EAN-8, EAN-13, Codabar, Code11, Code39, Code93, Code128, Standard 2 of 5, Interleaved 2 of 5, ISBN, MSI Plessey, UPC-A, UPC-E, UPC Extension 2, UPC Extension 5 и PostNet.

Читайте также:  Стоит ли покупать телефон с витрины магазина

Лицензия: бесплатно для некоммерческого использования.

Системные требования скрипта:

PHP 5.0.3 и выше, поддержка библиотеки GD2.

PHP, Java, Delphi, 3D

PHP-Barcode — генерация штрих кода

Для тех кто по каким-либо причинам стал изучать проблемы генерации штрих кода (barcode) средствами PHP, презентую open source библиотеку для реализации нескольких популярный стандартов кодирования.

Вообще библиотека существует не только в формате, php скрипта, а еще и в unix & windows source вариантах, которые способны работать с большим количеством штрих кодов, но, напомню, в большинстве случаев используется EAN-13.
Перечислю поддерживаемые стандарты:

EAN-8, EAN-12, EAN-13, UPC, ISBN, Code39, Code128, Code128B, Code128B, RAWCode128, Interleaved25, CBR, MSI, PLS and Code93

Для php библиотеки все немного скромнее — встроены в нее только EAN-13/ISBN, но если скрипт обнаружит распакованную утилиту genbarcode, то сразу становятся доступны все вышеперечисленные стандарты.

Подключение библиотеки происходит в 2 этапа:

  1. Распаковка
  2. Установка пути к библиотеке в файле php-barcode.php

Строки выглядят примерно так:

Не думаю что стоит описывать процесс установки 3-х скромных файлов, которые в свою очередь адекватно документированы в исходных текстах, тем более что для выполнения операции не требуется каких-либо сверх способностей

«>

Рекомендуем к прочтению

Добавить комментарий

Ваш адрес email не будет опубликован.