Código de Barras | Blog do Xorna

Código de Barras

Postado por xorna em November 21st, 2007 salvo em PHP

Buenas pessoal, hoje me deparei com uma novidade no meu trabalho, precisava gerar código de barras, tudo bem, dei uma googleada, peguei alguns scripts, testei, mas nenhum estava nos padrões brasileiros, se é que isso existe aqui no nosso país. Achei um script super-interessante, não deve ser o mais otimizado para isso, fiz algumas alterações para meu uso, e decidi compartilhar ele com vocês.

As alterações que eu fiz foram muito pequenas, abaixo segue o código fonte da função.

<?php

## Geração de código de barras padrão para boletos bancários brasileiros.
## Autor: MARCOLINO, Alexandre de Jesus ( marcolino@facil.com )
## Adaptação: Xorna (falecomoxorna@blogdoxorna.com)
## Este código pode ser usado e copiado livremente desde que site e comunique o autor por email.

function esquerda($entra,$comp){
return substr($entra,0,$comp);
}

function direita($entra,$comp){
return substr($entra,strlen($entra)-$comp,$comp);
}

function montacodigodebarras($valor) {
$lw = 1 ; $hi = 50;

## A lógica abaixo aplica valores binarios para dentro da variável tabcodbarra{}

$tabcodbarra[0] = “00110″ ;
$tabcodbarra[1] = “10001″ ;
$tabcodbarra[2] = “01001″ ;
$tabcodbarra[3] = “11000″ ;
$tabcodbarra[4] = “00101″ ;
$tabcodbarra[5] = “10100″ ;
$tabcodbarra[6] = “01100″ ;
$tabcodbarra[7] = “00011″ ;
$tabcodbarra[8] = “10010″ ;
$tabcodbarra[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($tabcodbarra[$f1],($i-1),1) . substr($tabcodbarra[$f2],($i-1),1);
}
$tabcodbarra[$f] = $texto;
}
}

## Gerando a Imagen do Código de Barras

## Gera a base para o preenchimento do código.
## $img -> imagem do código
## $branco -> #FFFFFF
## $preto -> #000000

$img = ImageCreate($lw*95+1000,$hi+30);

$preto = ImageColorAllocate($img, 0, 0, 0);
$branco = ImageColorAllocate($img, 255, 255, 255);

## Cria o retángulo principal onde a imagem será aplicada.

ImageFilledRectangle($img, 0, 0, $lw*95+1000, $hi+30, $branco);

## Abertura do código de barras.
ImageFilledRectangle($img, 1,5,1,65,$preto);
ImageFilledRectangle($img, 2,5,2,65,$branco);
ImageFilledRectangle($img, 3,5,3,65,$preto);
ImageFilledRectangle($img, 4,5,4,65,$branco);

## Aqui começa a varredura no valor enviado para confecção do código de barras.

$fino = 1 ;
$largo = 2.72 ; // Para o windows funciona mas o tamanho ideal seria 3
$pos = 5 ;
$texto = $valor ;
if((strlen($texto) % 2) <> 0){
$texto = “0″ . $texto;
}

## Desenho dos dados
while (strlen($texto) > 0) {
$i = round(esquerda($texto,2));
$texto = direita($texto,strlen($texto)-2);

$f = $tabcodbarra[$i];

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

## Imprimindo uma barra preta
ImageFilledRectangle($img, $pos,5,$pos-1+$f1,65,$preto) ;
$pos = $pos + $f1 ;
## Fim da impressão da barra preta

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

## Imprimindo uma barra branca
ImageFilledRectangle($img, $pos,5,$pos-1+$f2,65,$branco) ;
$pos = $pos + $f2 ;
## Fim da impressão da barra branca

}
}

## Fechamento do código de barras.

ImageFilledRectangle($img, $pos,5,$pos-1+$largo,65,$preto);
$pos=$pos+$largo;

ImageFilledRectangle($img, $pos,5,$pos-1+$fino,65,$branco);
$pos=$pos+$fino;

ImageFilledRectangle($img, $pos,5,$pos-1+$fino,65,$preto);
$pos=$pos+$fino;

## Cria a imagem de vez
header(”Content-Type: image/jpeg”);
ImageJPEG($img);
}
?>

Agora para criar o código de barras é só utilizá-lo assim:

<?php
## Lembrando que o valor passado é o código dele
montacodigodebarras(’00000000002901′);
?>

Os requisitos minimos para o funcionamento disso tudo é que além do php você tenha a extensão gráfica do php habilitada no seu servidor, eu uso a GD2, e está funcionando perfeitamente.

Deixe um Comentário

Clicky Web Analytics