Este es un generador de códigos de barras en PHP fácil de usar, no inflado e independiente del marco. Utiliza cero (!) dependencias del compositor y es solo un puñado de archivos. Probablemente la razón por la que este es el generador de códigos de barras para PHP más descargado en Packagist. ;)
Crea imágenes SVG, PNG, JPG y HTML, a partir de los estándares de códigos de barras 1D más utilizados.
No es compatible con códigos de barras 2D , como códigos QR.
Solo generamos la parte de 'barras' de un código de barras, sin texto debajo del código de barras. Si desea el texto del código debajo del código de barras, puede agregarlo más tarde al resultado de este paquete.
Instalar a través del compositor:
composer require picqer/php-barcode-generator
Si desea generar imágenes PNG o JPG, también necesita la biblioteca GD o Imagick instalada en su sistema. Para renderizados SVG o HTML, no hay dependencias.
Quiere un código de barras para un "tipo" específico (por ejemplo, Código 128 o UPC) en un formato de imagen específico (por ejemplo, PNG o SVG).
Primero, codifique la cadena cuyo código de barras desea en un objeto Barcode
con uno de los tipos de códigos de barras.
Luego, use uno de los renderizadores para renderizar la imagen de las barras en el objeto Barcode
.
El "tipo" es un estándar que define qué caracteres puede codificar y qué barras representan qué carácter. Los tipos más utilizados son el código 128 y EAN/UPC. No todos los caracteres se pueden codificar en cada tipo de código de barras y no todos los lectores de códigos de barras pueden leer todos los tipos.
<?phprequire 'vendor/autoload.php';// Crear un objeto de código de barras con codificación Code128.$barcode = (new PicqerBarcodeTypesTypeCode128())->getBarcode('081231723897');// Generar el código de barras como HTML en el navegador con un Renderizador HTML$renderer = nuevo PicqerBarcodeRenderersHtmlRenderer();echo $renderizador->render($código de barras);
Resultará en esta belleza:
Cada renderizador tiene sus propias opciones. Por ejemplo, puedes establecer la altura, el ancho y el color de un PNG:
<?phprequire 'vendor/autoload.php';$colorRed = [255, 0, 0];$barcode = (new PicqerBarcodeTypesTypeCode128())->getBarcode('081231723897');$renderer = new PicqerBarcodeRenderersPngRenderer();$renderer ->setForegroundColor($colorRed);// Guardar PNG en el sistema de archivos, con widthFactor 3 (ancho del código de barras x 3) y alto de 50 píxelesfile_put_contents('barcode.png', $renderer->render($barcode, $barcode->getWidth() * 3, 50));
Representadores de imágenes disponibles: SVG, PNG, JPG y HTML.
Todos se ajustan a RendererInterface y tienen el mismo método render()
. Algunos renderizadores también tienen opciones adicionales, a través de los métodos set*().
El método render() necesita el objeto Código de barras, el ancho y el alto. Para imágenes JPG/PNG , solo obtendrá un código de barras válido si proporciona un ancho que sea un factor del ancho del objeto Código de barras. Es por eso que los ejemplos muestran $barcode->getWidth() * 2
para hacer la imagen 2 veces más ancha en píxeles que el ancho de los datos del código de barras. Puede dar un número arbitrario como ancho y la imagen se escalará lo mejor posible, pero sin suavizado, no será perfectamente válida.
Los renderizadores HTML y SVG pueden manejar cualquier ancho y alto, incluso flotantes.
Aquí están todas las opciones para cada renderizador:
Una imagen SVG basada en vectores. Da la mejor calidad para imprimir.
$renderer = new PicqerBarcodeRenderersSvgRenderer();$renderer->setForegroundColor([255, 0, 0]); // Da un color rojo a las barras, el valor predeterminado es negro. Déle 3 veces valores de 0 a 255 para rojo, verde y azul. $renderizador->setBackgroundColor([0, 0, 255]); // Da un color azul para el fondo, el valor predeterminado es transparente. Déle 3 veces valores de 0 a 255 para rojo, verde y azul. $renderer->setSvgType($renderer::TYPE_SVG_INLINE); // Cambia la salida que se utilizará en línea dentro de los documentos HTML, en lugar de una imagen SVG independiente (predeterminado)$renderer->setSvgType($renderer::TYPE_SVG_STANDALONE); // Si desea forzar el valor predeterminado, cree una imagen SVG independiente$renderer->render($barcode, 450.20, 75); // Flotadores de soporte de ancho y alto
Todas las opciones para PNG y JPG son iguales.
$renderer = new PicqerBarcodeRenderersPngRenderer();$renderer->setForegroundColor([255, 0, 0]); // Da un color a las barras, el valor predeterminado es negro. Déle 3 veces valores de 0-255 para rojo, verde y azul. $renderizador->setBackgroundColor([0, 255, 255]); // Da un color para el fondo, el valor predeterminado es transparente (en PNG) o blanco (en JPG). Déle 3 veces valores de 0 a 255 para rojo, verde y azul. $renderizador->useGd(); // Si tienes Imagick y GD instalados, pero quieres usar GD$renderer->useImagick(); // Si tienes Imagick y GD instalados, pero quieres usar Imagick$renderer->render($barcode, 5, 40); // Factor de ancho (cuántos píxeles de ancho tiene cada barra) y la altura en píxeles
Proporciona HTML para usar en línea en un documento HTML completo.
$renderer = new PicqerBarcodeRenderersHtmlRenderer();$renderer->setForegroundColor([255, 0, 0]); // Da un color rojo a las barras, el valor predeterminado es negro. Déle 3 veces valores de 0 a 255 para rojo, verde y azul. $renderizador->setBackgroundColor([0, 0, 255]); // Da un color azul para el fondo, el valor predeterminado es transparente. Déle 3 veces valores de 0 a 255 para rojo, verde y azul. $renderizador->render($código de barras, 450.20, 75); // Flotadores de soporte de ancho y alto
Introduzca HTML aquí, el código de barras utiliza todo el ancho y alto, para colocarlo dentro de un contenedor/div que tenga un tamaño fijo.
$renderer = new PicqerBarcodeRenderersDynamicHtmlRenderer();$renderer->setForegroundColor([255, 0, 0]); // Da un color rojo a las barras, el valor predeterminado es negro. Déle 3 veces valores de 0 a 255 para rojo, verde y azul. $renderizador->setBackgroundColor([0, 0, 255]); // Da un color azul para el fondo, el valor predeterminado es transparente. Déle 3 veces valores de 0 a 255 para rojo, verde y azul. $renderizador->render($código de barras);
Puedes poner el HTML renderizado dentro de un div como este:
<div style="ancho: 400px; alto: 75px"><?php echo $renderedBarcode; ?></div>
Estos tipos de códigos de barras son compatibles. Todos los tipos admiten diferentes conjuntos de caracteres y algunos tienen longitudes obligatorias. Consulte wikipedia para conocer los caracteres admitidos y las longitudes por tipo.
Puede encontrar todos los tipos admitidos en la carpeta src/Types.
Los tipos más utilizados son TYPE_CODE_128 y TYPE_CODE_39. Debido al mejor soporte para escáner, longitud variable y la mayoría de caracteres admitidos.
TYPE_CODE_32 (código farmacéutico italiano 'MINSAN')
TIPO_CODE_39
TYPE_CODE_39_CHECKSUM
TIPO_CODE_39E
TYPE_CODE_39E_CHECKSUM
TIPO_CODE_93
TYPE_STANDARD_2_5
TYPE_STANDARD_2_5_CHECKSUM
TYPE_INTERLEAVED_2_5
TYPE_INTERLEAVED_2_5_CHECKSUM
TIPO_CÓDIGO_128
TIPO_CODE_128_A
TIPO_CODE_128_B
TIPO_CODE_128_C
TIPO_EAN_2
TIPO_EAN_5
TIPO_EAN_8
TIPO_EAN_13
TYPE_ITF14 (También conocido como GTIN-14)
TIPO_UPC_A
TIPO_UPC_E
TIPO_MSI
TYPE_MSI_CHECKSUM
TIPO_POSTNET
TIPO_PLANETA
TIPO_RMS4CC
TIPO_KIX
TIPO_IMB
TIPO_CODABAR
TIPO_CÓDIGO_11
TIPO_PHARMA_CODE
TYPE_PHARMA_CODE_TWO_TRACKS
Vea imágenes de ejemplo para todos los tipos de códigos de barras admitidos
Si desea utilizar imágenes PNG o JPG, debe instalar Imagick o la biblioteca GD. Este paquete utilizará Imagick si está instalado, o recurrirá a GD. Si tiene ambos instalados, pero desea un método específico, puede usar $renderer->useGd()
o $renderer->useImagick()
para forzar su preferencia.
$código de barras = (new PicqerBarcodeTypesTypeCode128())->getBarcode('081231723897');$renderer = nuevo PicqerBarcodeRenderersPngRenderer();echo '<img src="data:image/png;base64,' . base64_encode($renderer->render ($código de barras, $código de barras->getWidth() * 2)) .
$código de barras = (new PicqerBarcodeTypesTypeCodabar())->getBarcode('081231723897');$renderer = nuevo PicqerBarcodeRenderersJpgRenderer();file_put_contents('barcode.jpg', $renderer->render($código de barras, $código de barras->getWidth() * 2));
file_put_contents('barcode.svg', (nuevo PicqerBarcodeRenderersSvgRenderer())->render((nuevo PicqerBarcodeTypesTypeKix())->getBarcode('6825ME601')));
No es necesario cambiar nada al actualizar de v2 a v3. Arriba encontrará la nueva forma preferida de utilizar esta biblioteca desde la v3. Pero el estilo antiguo todavía funciona.
Para brindarles a los renderizadores la misma interfaz, la configuración de colores ahora es siempre con una variedad de colores RGB. Si usa las antiguas clases BarcodeGenerator* y usa colores con nombres ('rojo') o códigos hexadecimales (#3399ef), estos se convertirán usando ColorHelper. Se admiten todos los códigos hexadecimales, pero para los nombres de colores solo se admiten los colores básicos.
Si desea convertir al nuevo estilo, aquí tiene un ejemplo:
// Estilo antiguo$generador = nuevo PicqerBarcodeBarcodeGeneratorSVG();echo $generador->getBarcode('081231723897', $generador::TYPE_CODE_128);// Nuevo estilo$código de barras = (nuevo PicqerBarcodeTypesTypeCode128())->getBarcode('081231723897' );$renderizador = nuevo PicqerBarcodeRenderersSvgRenderer();echo $renderer->render($código de barras);
El ancho en el renderizador ahora es el ancho del resultado final, en lugar del factor ancho. Si desea mantener anchos dinámicos, puede obtener el ancho del código de barras codificado y multiplicarlo por el factor ancho para obtener el mismo resultado que antes. Vea aquí un ejemplo para un factor de ancho de 2:
// Estilo antiguo$generador = nuevo PicqerBarcodeBarcodeGeneratorSVG();echo $generador->getBarcode('081231723897', $generador::TYPE_CODE_128, 2. 30);// Nuevo estilo$código de barras = (nuevo PicqerBarcodeTypesTypeCode128())->getBarcode('081231723897');$renderer = new PicqerBarcodeRenderersSvgRenderer();echo $renderer->render($código de barras, $código de barras->getWidth() * 2, 30);
En la versión 3, los codificadores de tipo código de barras y los procesadores de imágenes están completamente separados. Esto hace que construir tu propio renderizador sea mucho más fácil. La antigua forma era utilizar "generadores". A continuación se muestran los ejemplos antiguos de estos generadores, que todavía funcionan también en la versión 3.
Inicie el generador de códigos de barras para la salida que desee, luego llame a la rutina ->getBarcode() tantas veces como desee.
<?phprequire 'vendor/autoload.php';// Esto generará el código de barras como salida HTML para mostrarlo en el navegador$generator = new PicqerBarcodeBarcodeGeneratorHTML();echo $generator->getBarcode('081231723897', $generator::TYPE_CODE_128 );
Resultará en esta belleza:
El método getBarcode()
acepta los siguientes parámetros:
$barcode
Cadena necesaria para codificar en el código de barras
$type
Tipo de código de barras, use las constantes definidas en la clase
$widthFactor
El ancho se basa en la longitud de los datos, con este factor puedes hacer que las barras del código de barras sean más anchas que las predeterminadas.
$height
La altura total del código de barras en píxeles.
$foregroundColor
Código hexadecimal como cadena, o matriz de RGB, de los colores de las barras (el color de primer plano)
Ejemplo de uso de todos los parámetros:
<?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, $colorrojo));
$generatorSVG = nuevo PicqerBarcodeBarcodeGeneratorSVG(); // SVG$generatorPNG basado en vectores = new PicqerBarcodeBarcodeGeneratorPNG(); // PNG$generatorJPG basado en píxeles = new PicqerBarcodeBarcodeGeneratorJPG(); // JPG basado en píxeles$generatorHTML = new PicqerBarcodeBarcodeGeneratorHTML(); // HTML basado en píxeles$generatorHTML = new PicqerBarcodeBarcodeGeneratorDynamicHTML(); // HTML basado en vectores
$generador = new PicqerBarcodeBarcodeGeneratorPNG();echo '<img src="data:image/png;base64,' . base64_encode($generator->getBarcode('081231723897', $generator::TYPE_CODE_128)) . '">';
$generador = 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));
El código base se basa en el generador de códigos de barras TCPDF de Nicola Asuni. Por lo tanto, este código tiene la licencia LGPLv3.