Atualizado em 26 de Novembro de 2014

Gerando Código de Barras com PHP

Olá pessoal,

Código de Barras ainda e um sistema muito utilizado nos dias atuais. Com ele podemos criar diversos recursos para um sistema, desde Gerar boletos de cobrança até controle de materiais.

Neste post veremos como Gerar Código de Barras com PHP.

Vamos ao script:

<?php
function geraCodigoBarra($numero){
  $fino = 1;
  $largo = 3;
  $altura = 50;

  $barcodes[0] = '00110';
  $barcodes[1] = '10001';
  $barcodes[2] = '01001';
  $barcodes[3] = '11000';
  $barcodes[4] = '00101';
  $barcodes[5] = '10100';
  $barcodes[6] = '01100';
  $barcodes[7] = '00011';
  $barcodes[8] = '10010';
  $barcodes[9] = '01010';

  for($f1 = 9; $f1 >= 0; $f1--){
   for($f2 = 9; $f2 >= 0; $f2--){
    $f = ($f1*10)+$f2;
    $texto = '';
    for($i = 1; $i < 6; $i++){
     $texto .= substr($barcodes[$f1], ($i-1), 1).substr($barcodes[$f2] ,($i-1), 1);
    }
    $barcodes[$f] = $texto;
   }
  }

  echo '<img src="imagens/p.gif" width="'.$fino.'" height="'.$altura.'" border="0" />';
  echo '<img src="imagens/b.gif" width="'.$fino.'" height="'.$altura.'" border="0" />';
  echo '<img src="imagens/p.gif" width="'.$fino.'" height="'.$altura.'" border="0" />';
  echo '<img src="imagens/b.gif" width="'.$fino.'" height="'.$altura.'" border="0" />';

  echo '<img ';

  $texto = $numero;

  if((strlen($texto) % 2) <> 0){
   $texto = '0'.$texto;
  }

  while(strlen($texto) > 0){
   $i = round(substr($texto, 0, 2));
   $texto = substr($texto, strlen($texto)-(strlen($texto)-2), (strlen($texto)-2));

   if(isset($barcodes[$i])){
    $f = $barcodes[$i];
   }

   for($i = 1; $i < 11; $i+=2){
    if(substr($f, ($i-1), 1) == '0'){
     $f1 = $fino;
    }else{
     $f1 = $largo;
   }

   echo 'src="imagens/p.gif" width="'.$f1.'" height="'.$altura.'" border="0">';
   echo '<img ';

   if(substr($f, $i, 1) == '0'){
    $f2 = $fino;
   }else{
    $f2 = $largo;
   }

   echo 'src="imagens/b.gif" width="'.$f2.'" height="'.$altura.'" border="0">';
   echo '<img ';
   }
  }
  echo 'src="imagens/p.gif" width="'.$largo.'" height="'.$altura.'" border="0" />';
  echo '<img src="imagens/b.gif" width="'.$fino.'" height="'.$altura.'" border="0" />';
  echo '<img src="imagens/p.gif" width="1" height="'.$altura.'" border="0" />';
 }

 geraCodigoBarra('0123456789');
?>

Observe que neste script usamos algumas imagens, elas estão disponíveis para download juntamente com o arquivo no link abaixo.

Download


"Esta dica te ajudou de alguma forma?" Então ajude outras pessoas compartilhando este conteúdo com seus amigos! =)


Até a próxima.

Tags:  Funções | PHP

Comentários

Sua foto do perfil

David

Olá Mauricio tbm?

Vê se vc consegue me ajudar, consigo usar esse se script para gerar um código de barra para o código de rastreio dos correios? tipo: "DN532188014BR"

15 de Janeiro de 2016 - 09:26

Sua foto do perfil

Mauricio Programador

Olá David,

No exemplo acima você pode colocar letras normalmente que irá funcionar, mas não são todos os leitores de códigos de barras que conseguir reconhecer as combinações com letras.

Você terá que ver se o seu e compatível com este recurso.

Abraço.

18 de Janeiro de 2016 - 16:01

Sua foto do perfil

Marciano

Muito bom esse post, pode me dar uma dica de como imprimir esses codigos em etiquetas, tentei o mpdf mas não consegui... grato.!!

15 de Janeiro de 2016 - 05:39

Sua foto do perfil

Mauricio Programador

Olá Marciano,

Obrigado.

Você pode configurar isso via CSS, mas ai já não mais programação e sim codificação.

Espero que com esta dica consiga começar a sua pesquisa.

Abraço.

18 de Janeiro de 2016 - 15:58

Sua foto do perfil

Guilherme henrique rodrigues

Bom dia, cara quando eu coloco um loop para gerar varios códigos de barra, ele gera um código só enorme, voce pode me mandar um exemplo de como devo colocar o gerar varios codigos de barra, eu fiz assim para testar
for ($i=0; $i < 10 ; $i++) {
geraCodigoBarra('0123456789');
}
fazendo isso ele gera um unico codigo de barra enorme

04 de Janeiro de 2016 - 09:09

Sua foto do perfil

Mauricio Programador

Olá Guilherme,

Você tem que alterar o numero que passa como parâmetro na função geraCodigoBarra, se deixar o mesmo numero no loop ele sempre vai dar o mesmo Código de Barra.

Você tem que ter um contador, mais ou menos assim:

for ($i=0; $i < 10 ; $i++) {
geraCodigoBarra($i);
}

Abraço.

06 de Janeiro de 2016 - 10:42

Sua foto do perfil

Ricardo

Estou tentando gerar o código de barras dentro da célula de uma tabela. Porém ele fica gerando sempre no começo da página html, antes da tabela.

10 de Dezembro de 2015 - 16:13

Sua foto do perfil

Mauricio Programador

Olá Ricardo,

Você deve colocar a linha:

geraCodigoBarra('0123456789');

Exatamente no local onde deseja que o código de barras seja escrito.

Abraço.

04 de Janeiro de 2016 - 09:09

Sua foto do perfil

Robson Meirelles

Cara gostei muito do seu site coloquei nos favoritos até , queria tirar uma duvida , no caso acima eu posso pegar uma id já criada no banco de dados e gerar o código ? Por favor caso possa me explicar ficarei muito grato .

26 de Novembro de 2015 - 00:45

Sua foto do perfil

Mauricio Programador

Olá Robson,

Obrigado.

Claro que pode, basta colocar o valor do id no local do numero que usamos como exemplo no post que ele irá gerar um código de barras para o seu id.

Abraço.

23 de Dezembro de 2015 - 10:27

Sua foto do perfil

Celso jR

Amigão, como posso gerar esse código aleatório para cada produto ele gera um código diferente? Forte abraço ...

31 de Outubro de 2015 - 16:47

Sua foto do perfil

Mauricio Programador

Olá Celso,

Você pode criar referencias dentro do seu sistema para gerar o código de barras (o que seria o mais correto), por exemplo:

DATA_ENTRADA+ID_FORNECEDOR+ID_PRODUTOS

Algo neste padrão, como alguns desses números serão sempre únicos então cada produto terá o seu código de barra.

Abraço.

04 de Novembro de 2015 - 14:42

Sua foto do perfil

Celso jr

Amigão, obrigado pela resposta anterior. Eu possuo um banco de dados e nele é gerado aleatório um numero de codigo de barras que queria gerar com esse seu sistema. Ele só funfa se eu colocar a numeração nele, se pedir para ele buscar e gerar de alguma variável ele não acha .. pode me ajudar? Desculpa, mas sou iniciante e o código está abaixo.

<?php

$link = conexao();
$numero = '1002691254555';
$cod = geraCodigoBarra($numero);
$query = mysqli_query($link,"SELECT * FROM fornecedor");
while($resultado = mysqli_fetch_array($query)){

?>
<table border="1">
<tr>
<td><?php echo $resultado["cnpj"];?></td>
<td><?php echo $resultado["nome_empresa"];?></td>
<td><?php echo $resultado["data"];?></td>
<td><?php echo $resultado["cod_barras"].geraCodigoBarra($numero)."<br>";?></td>
</tr>
</table>

<?php } ?>


<?php
echo $numero;
?>

23 de Dezembro de 2015 - 10:36

Sua foto do perfil

Mauricio Programador

Celso,

na verdade no código que você mandou o valor que você esta passando para a função que gera o código de barras e um numero que não esta vindo do banco de dados (geraCodigoBarra($numero)), sendo que o valor dessa variável você declara fora do seu laço de repetição que faz a busca no banco de dados.

Altere a linha:

<td><?php echo $resultado["cod_barras"].geraCodigoBarra($numero)."<br>";?></td>

Por:

<td><?php echo geraCodigoBarra($resultado["cod_barras"])?></td>

Abraço.

23 de Dezembro de 2015 - 10:39

Sua foto do perfil

Victor

Boa tarde,
Eu preciso que ele identifique Letras também.
Por exemplo: I-0052, C-0350, etc.
Ele gera com letras, mas na hora do leitor de código fazer a leitura, ele não mostra as letras. Mostra como "0". Tem algum jeito?

15 de Outubro de 2015 - 14:06

Sua foto do perfil

Mauricio Programador

Olá Victor,

No exemplo acima você pode colocar letras normalmente que irá funcionar, mas não são todos os leitores de códigos de barras que conseguir reconhecer as combinações com letras.

Você terá que ver se o seu e compatível com este recurso.

Abraço.

19 de Outubro de 2015 - 15:53

Sua foto do perfil

Edigleysson Silva

Muito bom mesmo, ficou ótimo.
Obrigado

04 de Setembro de 2015 - 10:59

Sua foto do perfil

arthur

Maurício, como faço para gerar código de barras de um número a outro, exemplo, eu cadastro a quantidade de 300 unidades,preciso colocar para gerar os códigos de 1 a 300 e armazena-los no banco de dados no campo "codigo"

15 de Junho de 2015 - 10:57

Sua foto do perfil

Mauricio Programador

Olá Arthur,

Basta usar um while (se a quantidade de repetições vier do banco) ou um for (caso o numero seja fixo).

E para salvar no banco de dados dentro do comando de repetição que escolher basta colocar o seu insert para o banco de dados.

abraço.

22 de Junho de 2015 - 10:11

Sua foto do perfil

william

Parabéns funcionou perfeitamente! Obrigado!!!

03 de Junho de 2015 - 12:36

Sua foto do perfil

Valdenil

Queria saber como faço para gerar numeros com virgulas(,) ou pontos (.) ex. 21,250 e tambem com o nome de produtos ex Arroz.

11 de Março de 2015 - 16:38

Sua foto do perfil

Mauricio Programador

Olá Valdenil,

Para formatar números veja o link abaixo:

Formatar Moeda PHP

Para escrever o nome de algo e so usar o comando echo.

Abraço.

12 de Março de 2015 - 08:47

Sua foto do perfil

Valdenil

Como Faço para receber um determinado peso de uma balança em php e imprimir em uma impressora de etiquetas?
nao tenho idéia para fazer a ligação das portas paralelas ou Usb através do PHP

12 de Março de 2015 - 08:50

Sua foto do perfil

Mauricio Programador

Valdenil,

este post e sobre gerar código de barras, vou criar um post sobre isso para ficar documentando.

abraço.

12 de Março de 2015 - 08:51

Sua foto do perfil

Valdenil

Valeu amigo consegui.
para fazer ligação com uma porta serial/paralela como faço?

13 de Março de 2015 - 10:07

Sua foto do perfil

Mauricio Programador

Legal,

este post e sobre gerar código de barras, então para não confundir os temas vou criar um post sobre isso.

abraço.

13 de Março de 2015 - 10:08

Sua foto do perfil

Lucca

Olá!

Não existe a opção de mostrar o número passado abaixo do código de barras?

03 de Março de 2015 - 15:39

Sua foto do perfil

Mauricio Programador

Olá Lucca,

Tem sim, basta alterar a sua função acrescentando no final da ultima linha deixando assim:

echo '<br />';
echo $numero;

Abraço.

04 de Março de 2015 - 09:15

Sua foto do perfil

Lauro

Olá, muito obrigado, o código gerado cada vez é unico?

01 de Março de 2015 - 20:25

Sua foto do perfil

Mauricio Programador

Olá Lauro,

Na verdade o segredo para ele gerar códigos únicos esta no número que você passa quando chama a função.

Se você sempre passar números únicos os códigos de barras também serão.

Abraço.

02 de Março de 2015 - 12:37

Sua foto do perfil

Aderson Teixeira

como faço para aplica esse código em um boleto bancario ?

07 de Janeiro de 2015 - 14:50

Sua foto do perfil

Mauricio Programador

Olá Aderson,

Os bancos tem um padrão para gerar os seus códigos de barra, você terá que pedir este padrão para o seu banco e depois que tiver basta colocar o numero na função que ele já gera sozinho.

Abraço.

08 de Janeiro de 2015 - 09:59

Sua foto do perfil

Tadeu Pontes e Pontes

Ou pode utilizar o BoletoPHP

12 de Janeiro de 2015 - 10:26

Sua foto do perfil

Mauricio Programador

Sim, também e uma opção para quem ja quer pegar o código pronto.

Boa dica.

12 de Janeiro de 2015 - 10:28

NEWSLETTER

Receba dicas de programação
em seu e-mail

TWITTER

Acompanhe tudo o que rola
com Mauricio Programador

NEWSLETTER