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

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

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

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

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

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

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

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

04 de Setembro de 2015 - 10:59

Sua foto do perfil

arthur

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

03 de Junho de 2015 - 12:36

Sua foto do perfil

Valdenil

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

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

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

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