Это простой в использовании, не раздутый, независимый от платформы генератор штрих-кодов на PHP. Он не использует никаких (!) зависимостей от композитора и состоит всего из нескольких файлов. Вероятно, поэтому это самый загружаемый генератор штрих-кодов для PHP на Packagist. ;)
Он создает изображения SVG, PNG, JPG и HTML на основе наиболее используемых стандартов штрих-кодов 1D.
Нет поддержки каких-либо 2D- штрих-кодов, таких как QR-коды.
Мы генерируем только часть штрих-кода «столбики» без текста под штрих-кодом. Если вам нужен текст кода под штрих-кодом, вы можете добавить его позже в выходные данные этого пакета.
Установить через композитор:
composer require picqer/php-barcode-generator
Если вы хотите создавать изображения PNG или JPG, вам также понадобится библиотека GD или Imagick, установленная в вашей системе. Для рендеринга SVG или HTML зависимостей нет.
Вам нужен штрих-код определенного «типа» (например, Code 128 или UPC) в определенном формате изображения (например, PNG или SVG).
Сначала закодируйте строку, для которой вы хотите получить штрих-код, в объект Barcode
с одним из типов штрих-кода.
Затем используйте один из средств визуализации для визуализации изображения полос в объекте Barcode
.
«Тип» — это стандарт, который определяет, какие символы вы можете кодировать и какие полосы представляют какой символ. Наиболее часто используемые типы — код 128 и EAN/UPC. Не все символы могут быть закодированы в каждый тип штрих-кода, и не все сканеры штрих-кодов могут считывать все типы.
<?phprequire 'vendor/autoload.php';// Создать объект Barcode с кодировкой Code128.$barcode = (new PicqerBarcodeTypesTypeCode128())->getBarcode('081231723897');// Вывести штрих-код в виде HTML в браузере с помощью HTML Renderer$renderer = новый PicqerBarcodeRenderersHtmlRenderer();echo $renderer->render($barcode);
В результате получится вот такая красота:
У каждого рендерера есть свои варианты. Например, вы можете установить высоту, ширину и цвет PNG:
<?phprequire 'vendor/autoload.php';$colorRed = [255, 0, 0];$barcode = (new PicqerBarcodeTypesTypeCode128())->getBarcode('081231723897');$renderer = новый PicqerBarcodeRenderersPngRenderer();$renderer ->setForegroundColor($colorRed);// Сохраните PNG в файловую систему с widthFactor 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->getWidth() * 2
чтобы сделать изображение в 2 раза шире в пикселях, чем ширина данных штрих-кода. Вы можете указать произвольное число ширины, и изображение будет масштабироваться как можно лучше, но без сглаживания оно не будет полностью корректным.
Средства визуализации HTML и SVG могут обрабатывать любую ширину и высоту, даже плавающие элементы.
Вот все параметры для каждого рендерера:
Векторное изображение SVG. Обеспечивает наилучшее качество печати.
$renderer = новый PicqerBarcodeRenderersSvgRenderer();$renderer->setForegroundColor([255, 0, 0]); // Придаем столбцам красный цвет, по умолчанию — черный. Умножьте значения 0–255 на красный, зеленый и синий. $renderer->setBackgroundColor([0, 0, 255]); // Задайте синий цвет фона, по умолчанию — прозрачный. Умножьте значения 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 = новый PicqerBarcodeRenderersPngRenderer();$renderer->setForegroundColor([255, 0, 0]); // Задаем цвет столбцов, по умолчанию черный. Умножьте значения 0–255 на красный, зеленый и синий. $renderer->setBackgroundColor([0, 255, 255]); // Задайте цвет фона, по умолчанию — прозрачный (в PNG) или белый (в JPG). Умножьте значения 0–255 на красный, зеленый и синий. $renderer->useGd(); // Если у вас установлены Imagick и GD, но вы хотите использовать GD$renderer->useImagick(); // Если у вас установлены Imagick и GD, но вы хотите использовать Imagick$renderer->render($barcode, 5, 40); // Коэффициент ширины (сколько пикселей в ширине каждого столбца) и высота в пикселях
Предоставляет HTML для использования в полном HTML-документе.
$renderer = новый PicqerBarcodeRenderersHtmlRenderer();$renderer->setForegroundColor([255, 0, 0]); // Придаем столбцам красный цвет, по умолчанию — черный. Дайте ему 3 раза значения 0–255 для красного, зеленого и синего. $renderer->setBackgroundColor([0, 0, 255]); // Задайте синий цвет фона, по умолчанию — прозрачный. Умножьте значения 0–255 на красный, зеленый и синий. $renderer->render($barcode, 450.20, 75); // Плавки поддержки ширины и высоты
Приведите здесь HTML, штрих-код использует полную ширину и высоту, чтобы поместить его внутрь контейнера/div, имеющего фиксированный размер.
$renderer = новый PicqerBarcodeRenderersDynamicHtmlRenderer();$renderer->setForegroundColor([255, 0, 0]); // Придаем столбцам красный цвет, по умолчанию — черный. Умножьте значения 0–255 на красный, зеленый и синий. $renderer->setBackgroundColor([0, 0, 255]); // Задайте синий цвет фона, по умолчанию — прозрачный. Умножьте значения 0–255 на красный, зеленый и синий. $renderer->render($barcode);
Вы можете поместить визуализированный HTML внутри div следующим образом:
<div style="width: 400px; height: 75px"><?php echo $renderedBarcode; ?></дел>
Эти типы штрих-кодов поддерживаются. Все типы поддерживают разные наборы символов, а некоторые имеют обязательную длину. Пожалуйста, обратитесь к Википедии, чтобы узнать о поддерживаемых символах и длинах каждого типа.
Все поддерживаемые типы можно найти в папке 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
TYPE_CODE_128_A
TYPE_CODE_128_B
TYPE_CODE_128_C
ТИП_EAN_2
ТИП_EAN_5
TYPE_EAN_8
TYPE_EAN_13
TYPE_ITF14 (также известный как GTIN-14)
TYPE_UPC_A
TYPE_UPC_E
ТИП_MSI
TYPE_MSI_CHECKSUM
ТИП_POSTNET
ТИП_ПЛАНЕТА
TYPE_RMS4CC
TYPE_KIX
ТИП_IMB
ТИП_КОДАБАР
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 = новый PicqerBarcodeRenderersJpgRenderer();file_put_contents('barcode.jpg', $renderer->render($barcode, $barcode->getWidth()) * 2));
file_put_contents('barcode.svg', (новый PicqerBarcodeRenderersSvgRenderer())->render((новый PicqerBarcodeTypesTypeKix())->getBarcode('6825ME601')));
При обновлении с v2 на v3 ничего менять не нужно. Выше вы найдете новый предпочтительный способ использования этой библиотеки, начиная с версии v3. Но старый стиль все еще работает.
Чтобы предоставить рендерерам одинаковый интерфейс, цвета теперь всегда задаются с помощью массива цветов RGB. Если вы используете старые классы BarcodeGenerator* и используете цвета с именами («красный») или шестнадцатеричными кодами (#3399ef), они будут преобразованы с помощью ColorHelper. Поддерживаются все шестнадцатеричные коды, но для названий цветов поддерживаются только основные цвета.
Если вы хотите перейти на новый стиль, вот пример:
// Старый стиль$generator = новый PicqerBarcodeBarcodeGeneratorSVG();echo $generator->getBarcode('081231723897', $generator::TYPE_CODE_128);// Новый стиль$barcode = (новый PicqerBarcodeTypesTypeCode128())->getBarcode('081231723897');$renderer = новый PicqerBarcodeRenderersSvgRenderer();echo $renderer->render($barcode);
Ширина в средстве визуализации теперь равна ширине конечного результата, а не widthFactor. Если вы хотите сохранить динамическую ширину, вы можете получить ширину закодированного штрих-кода и умножить ее на widthFactor, чтобы получить тот же результат, что и раньше. См. здесь пример для widthFactor, равного 2:
// Старый стиль$generator = новый PicqerBarcodeBarcodeGeneratorSVG();echo $generator->getBarcode('081231723897', $generator::TYPE_CODE_128, 2. 30);// Новый стиль$barcode = (новый PicqerBarcodeTypesTypeCode128())->getBarcode('081231723897');$renderer = new PicqerBarcodeRenderersSvgRenderer();echo $renderer->render($barcode, $barcode->getWidth() * 2, 30);
В версии 3 кодировщики типа штрих-кода и средства визуализации изображений полностью разделены. Это упрощает создание собственного рендерера. Старый способ заключался в использовании «генераторов». Ниже приведены старые примеры этих генераторов, которые все еще работают и в версии 3.
Запустите генератор штрих-кода для получения желаемого результата, затем вызовите процедуру ->getBarcode() столько раз, сколько захотите.
<?phprequire 'vendor/autoload.php';// Это выведет штрих-код в виде вывода HTML для отображения в браузере $generator = new PicqerBarcodeBarcodeGeneratorHTML();echo $generator->getBarcode('081231723897', $generator::TYPE_CODE_128 );
В результате получится вот такая красота:
Метод getBarcode()
принимает следующие параметры:
$barcode
Строка, необходимая для кодирования в штрих-коде
$type
Тип штрих-кода, используйте константы, определенные в классе
$widthFactor
Ширина зависит от длины данных. С помощью этого коэффициента вы можете сделать полосы штрих-кода шире, чем по умолчанию.
$height
Общая высота штрих-кода в пикселях.
$foregroundColor
Шестнадцатеричный код в виде строки или массива RGB цветов полос (цвет переднего плана)
Пример использования всех параметров:
<?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 на основе пикселей = новый PicqerBarcodeBarcodeGeneratorJPG(); // JPG$generatorHTML на основе пикселей = новый PicqerBarcodeBarcodeGeneratorHTML(); // HTML$generatorHTML на основе пикселей = новый PicqerBarcodeBarcodeGeneratorDynamicHTML(); // Векторный HTML
$generator = new PicqerBarcodeBarcodeGeneratorPNG();echo '<img src="data:image/png;base64,' .base64_encode($generator->getBarcode('081231723897', $generator::TYPE_CODE_128)) .'">';
$generator = новый PicqerBarcodeBarcodeGeneratorJPG();file_put_contents('barcode.jpg', $generator->getBarcode('081231723897', $generator::TYPE_CODABAR));
file_put_contents('barcode.svg', (новый PicqerBarcodeBarcodeGeneratorSVG())->getBarcode('6825ME601', PicqerBarcodeBarcodeGeneratorSVG::TYPE_KIX));
Кодовая база основана на генераторе штрих-кодов TCPDF Николы Асуни. Поэтому этот код лицензируется в соответствии с LGPLv3.