Este é um gerador de código de barras em PHP fácil de usar, não inchado e independente de estrutura. Ele usa zero (!) dependências do compositor e contém apenas alguns arquivos. Provavelmente a razão pela qual este é o gerador de código de barras para PHP mais baixado no Packagist. ;)
Cria imagens SVG, PNG, JPG e HTML, a partir dos padrões de códigos de barras 1D mais utilizados.
Não há suporte para códigos de barras 2D , como códigos QR.
Geramos apenas a parte 'barras' de um código de barras, sem texto abaixo do código de barras. Se você quiser o texto do código abaixo do código de barras, poderá adicioná-lo posteriormente à saída deste pacote.
Instale através do compositor:
composer require picqer/php-barcode-generator
Se você deseja gerar imagens PNG ou JPG, você também precisa da biblioteca GD ou Imagick instalada em seu sistema. Para renderizações SVG ou HTML, não há dependências.
Você deseja um código de barras para um "tipo" específico (por exemplo, Código 128 ou UPC) em um formato de imagem específico (por exemplo, PNG ou SVG).
Primeiro, codifique a string da qual deseja o código de barras em um objeto Barcode
com um dos tipos de código de barras.
Em seguida, use um dos renderizadores para renderizar a imagem das barras no objeto Barcode
.
O “tipo” é um padrão que define quais caracteres você pode codificar e quais barras representam qual caractere. Os tipos mais utilizados são código 128 e EAN/UPC. Nem todos os caracteres podem ser codificados em cada tipo de código de barras e nem todos os leitores de código de barras podem ler todos os tipos.
<?phprequire 'vendor/autoload.php';// Torna o objeto Barcode da codificação Code128.$barcode = (new PicqerBarcodeTypesTypeCode128())->getBarcode('081231723897');// Gera o código de barras como HTML no navegador com um Renderizador HTML$renderer = new PicqerBarcodeRenderersHtmlRenderer();echo $renderizador->renderizar($código de barras);
Resultará nesta beleza:
Cada renderizador tem suas próprias opções. Por exemplo, você pode definir a altura, largura e cor de um PNG:
<?phprequire 'vendor/autoload.php';$colorRed = [255, 0, 0];$barcode = (new PicqerBarcodeTypesTypeCode128())->getBarcode('081231723897');$renderer = new PicqerBarcodeRenderersPngRenderer();$renderer ->setForegroundColor($colorRed);//Salvar PNG ao sistema de arquivos, com widthFactor 3 (largura do código de barras x 3) e altura de 50 pixelsfile_put_contents('barcode.png', $renderer->render($barcode, $barcode->getWidth() * 3, 50));
Renderizadores de imagens disponíveis: SVG, PNG, JPG e HTML.
Todos eles estão em conformidade com RendererInterface e possuem o mesmo método render()
. Alguns renderizadores também possuem opções extras, por meio dos métodos set*().
O método render() precisa do objeto Barcode, da largura e da altura. Para imagens JPG/PNG , você só obterá um código de barras válido se fornecer uma largura que seja um fator da largura do objeto Barcode. É por isso que os exemplos mostram $barcode->getWidth() * 2
para tornar a imagem 2 vezes mais larga em pixels que a largura dos dados do código de barras. Você pode fornecer um número arbitrário de largura e a imagem será dimensionada da melhor maneira possível, mas sem suavização de serrilhado, não será perfeitamente válida.
Os renderizadores HTML e SVG podem lidar com qualquer largura e altura, até mesmo flutuantes.
Aqui estão todas as opções para cada renderizador:
Uma imagem SVG baseada em vetor. Oferece a melhor qualidade de impressão.
$renderer = new PicqerBarcodeRenderersSvgRenderer();$renderer->setForegroundColor([255, 0, 0]); // Dê uma cor vermelha para as barras, o padrão é preto. Dê 3 vezes 0-255 valores para vermelho, verde e azul. $renderizador->setBackgroundColor([0, 0, 255]); //Dê uma cor azul para o fundo, o padrão é transparente. Dê 3 vezes 0-255 valores para vermelho, verde e azul. $renderer->setSvgType($renderer::TYPE_SVG_INLINE); // Altera a saída a ser usada inline dentro de documentos HTML, em vez de uma imagem SVG independente (padrão)$renderer->setSvgType($renderer::TYPE_SVG_STANDALONE); // Se você quiser forçar o padrão, crie uma imagem SVG independente$renderer->render($barcode, 450.20, 75); // Flutuadores de suporte de largura e altura
Todas as opções para PNG e JPG são iguais.
$renderer = new PicqerBarcodeRenderersPngRenderer();$renderer->setForegroundColor([255, 0, 0]); //Dê uma cor para as barras, o padrão é preto. Dê 3 vezes 0-255 valores para vermelho, verde e azul. $renderizador->setBackgroundColor([0, 255, 255]); //Dá uma cor para o fundo, o padrão é transparente (em PNG) ou branco (em JPG). Dê 3 vezes 0-255 valores para vermelho, verde e azul. $renderizador->useGd(); // Se você tem o Imagick e o GD instalados, mas deseja usar o GD$renderer->useImagick(); // Se você tem o Imagick e o GD instalados, mas deseja usar o Imagick$renderer->render($barcode, 5, 40); // Fator de largura (quantos pixels de largura cada barra tem) e a altura em pixels
Fornece HTML para uso embutido em um documento HTML completo.
$renderer = new PicqerBarcodeRenderersHtmlRenderer();$renderer->setForegroundColor([255, 0, 0]); // Dê uma cor vermelha para as barras, o padrão é preto. Dê 3 vezes 0-255 valores para vermelho, verde e azul. $renderizador->setBackgroundColor([0, 0, 255]); //Dê uma cor azul para o fundo, o padrão é transparente. Dê 3 vezes 0-255 valores para vermelho, verde e azul. $renderizador->renderizar($código de barras, 450.20, 75); // Flutuadores de suporte de largura e altura
Dê HTML aqui o código de barras está usando toda a largura e altura, para colocar dentro de um container/div que tenha tamanho fixo.
$renderer = new PicqerBarcodeRenderersDynamicHtmlRenderer();$renderer->setForegroundColor([255, 0, 0]); // Dê uma cor vermelha para as barras, o padrão é preto. Dê 3 vezes 0-255 valores para vermelho, verde e azul. $renderizador->setBackgroundColor([0, 0, 255]); //Dê uma cor azul para o fundo, o padrão é transparente. Dê 3 vezes 0-255 valores para vermelho, verde e azul. $renderizador->renderizar($código de barras);
Você pode colocar o HTML renderizado dentro de uma div assim:
<div style="largura: 400px; altura: 75px"><?php echo $renderedBarcode; ?></div>
Esses tipos de códigos de barras são suportados. Todos os tipos suportam diferentes conjuntos de caracteres e alguns têm comprimentos obrigatórios. Consulte a Wikipedia para caracteres e comprimentos suportados por tipo.
Você pode encontrar todos os tipos suportados na pasta src/Types.
Os tipos mais usados são TYPE_CODE_128 e TYPE_CODE_39. Devido ao melhor suporte de scanner, comprimento variável e maioria dos caracteres suportados.
TYPE_CODE_32 (código farmacêutico italiano 'MINSAN')
TYPE_CODE_39
TYPE_CODE_39_CHECKSUM
TYPE_CODE_39E
TYPE_CODE_39E_CHECKSUM
TYPE_CODE_93
TIPO_STANDARD_2_5
TYPE_STANDARD_2_5_CHECKSUM
TIPO_INTERLEAVED_2_5
TYPE_INTERLEAVED_2_5_CHECKSUM
TYPE_CODE_128
TIPO_CÓDIGO_128_A
TIPO_CÓDIGO_128_B
TIPO_CÓDIGO_128_C
TYPE_EAN_2
TIPO_EAN_5
TYPE_EAN_8
TYPE_EAN_13
TYPE_ITF14 (também conhecido como GTIN-14)
TIPO_UPC_A
TYPE_UPC_E
TIPO_MSI
TYPE_MSI_CHECKSUM
TYPE_POSTNET
TIPO_PLANET
TYPE_RMS4CC
TYPE_KIX
TYPE_IMB
TYPE_CODABAR
TYPE_CODE_11
TYPE_PHARMA_CODE
TYPE_PHARMA_CODE_TWO_TRACKS
Veja imagens de exemplo para todos os tipos de códigos de barras suportados
Se quiser usar imagens PNG ou JPG, você precisa instalar o Imagick ou a biblioteca GD. Este pacote usará o Imagick se estiver instalado ou recorrerá ao GD. Se você instalou ambos, mas deseja um método específico, pode usar $renderer->useGd()
ou $renderer->useImagick()
para forçar sua preferência.
$barcode = (new PicqerBarcodeTypesTypeCode128())->getBarcode('081231723897');$renderer = new PicqerBarcodeRenderersPngRenderer();echo '<img src="data:image/png;base64,' .base64_encode($renderer->render ($código de barras, $código de barras->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')));
Não há necessidade de alterar nada ao atualizar da v2 para a v3. Acima você encontra a nova forma preferida de usar esta biblioteca desde a v3. Mas o estilo antigo ainda funciona.
Para dar aos renderizadores a mesma interface, a configuração das cores agora é sempre com uma matriz de cores RGB. Se você usar as antigas classes BarcodeGenerator* e usar cores com nomes ('vermelho') ou códigos hexadecimais (#3399ef), estes serão convertidos usando o ColorHelper. Todos os códigos hexadecimais são suportados, mas para nomes de cores apenas as cores básicas são suportadas.
Se você deseja converter para o novo estilo, aqui está um exemplo:
// Estilo antigo$generator = new PicqerBarcodeBarcodeGeneratorSVG();echo $generator->getBarcode('081231723897', $generator::TYPE_CODE_128);// Novo estilo$barcode = (new PicqerBarcodeTypesTypeCode128())->getBarcode('081231723897' );$renderizador = novo PicqerBarcodeRenderersSvgRenderer();echo $renderer->render($barcode);
A largura no renderizador agora é a largura do resultado final, em vez do widthFactor. Se quiser manter larguras dinâmicas, você pode obter a largura do código de barras codificado e multiplicá-lo pelo widthFactor para obter o mesmo resultado de antes. Veja aqui um exemplo para um widthFactor de 2:
// Estilo antigo$generator = new PicqerBarcodeBarcodeGeneratorSVG();echo $generator->getBarcode('081231723897', $generator::TYPE_CODE_128, 2. 30);// Novo estilo$barcode = (new PicqerBarcodeTypesTypeCode128())->getBarcode('081231723897');$renderer = new PicqerBarcodeRenderersSvgRenderer();echo $renderer->render($barcode, $barcode->getWidth() * 2, 30);
Na versão 3, os codificadores do tipo código de barras e os renderizadores de imagens são completamente separados. Isso torna a construção de seu próprio renderizador muito mais fácil. A maneira antiga era usar “geradores”. Abaixo estão os exemplos antigos desses geradores, que ainda funcionam na v3.
Inicie o gerador de código de barras para a saída desejada e chame a rotina ->getBarcode() quantas vezes desejar.
<?phprequire 'vendor/autoload.php';// Isso gerará o código de barras como saída HTML para exibir no navegador$generator = new PicqerBarcodeBarcodeGeneratorHTML();echo $generator->getBarcode('081231723897', $generator::TYPE_CODE_128 );
Resultará nesta beleza:
O método getBarcode()
aceita os seguintes parâmetros:
$barcode
String necessária para codificar no código de barras
$type
Tipo de código de barras, utilize as constantes definidas na classe
$widthFactor
A largura é baseada no comprimento dos dados, com este fator você pode tornar as barras do código de barras mais largas que o padrão
$height
A altura total do código de barras em pixels
$foregroundColor
Código hexadecimal como string, ou array de RGB, das cores das barras (a cor do primeiro plano)
Exemplo de uso de todos os 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, $redColor));
$generatorSVG = new PicqerBarcodeBarcodeGeneratorSVG(); // SVG baseado em vetor$generatorPNG = new PicqerBarcodeBarcodeGeneratorPNG(); // PNG baseado em pixel$generatorJPG = new PicqerBarcodeBarcodeGeneratorJPG(); // JPG baseado em pixel$generatorHTML = new PicqerBarcodeBarcodeGeneratorHTML(); // HTML baseado em pixel$generatorHTML = new PicqerBarcodeBarcodeGeneratorDynamicHTML(); //HTML baseado em vetor
$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));
A base de código é baseada no gerador de código de barras TCPDF de Nicola Asuni. Este código é, portanto, licenciado sob LGPLv3.