Olá. Quero compartilhar minha experiência com código de barras, onde tive que criar uma porção de
etiquetas para um programa que fiz em GAMBAS, onde tenho cadastro de livros de uma biblioteca.
Programo muito bem em Shell Script mas não tão bem em PHP. Acredito que somente PHP daria para fazer
tudo, mas para quem gosta de soluções paliativas rsrsrs, segue o script.
Antes de mais nada quero agradecer o script em PHP feito por "sidsodre", que gera o código de barras, com
base nele que deu pra fazer o que fiz em shell.
Tudo que fiz foi no Ubuntu 10.10. Portanto além do Apache e do PHP, instale também o "barcod", "php-
image-barcode" e o "php5-gd" com suas respectivas dependências. Na pasta do Apache (no meu caso é
/var/www), crie uma pasta chamada "cod" e crie um chamado script.sh com o seguinte conteúdo:
#!/bin/bash
quant=500 # quantidade de codigos a ser gerado
for (( i=1 ; i <= $quant ;i++ )) do
arquivo=`echo " 10000000000 + $i " | bc`
echo "<?php " >> ${arquivo}.php
echo "function CodigoBarras(\$code) { " >>
${arquivo}.php
echo " \$lw = 2; \$hi = 100; " >>
${arquivo}.php
echo " \$Lencode = array('0001101','0011001','0010011','0111101','0100011', " >>
${arquivo}.php
echo " '0110001','0101111','0111011','0110111','0001011'); " >>
${arquivo}.php
echo " \$Rencode = array('1110010','1100110','1101100','1000010','1011100', " >>
${arquivo}.php
echo " '1001110','1010000','1000100','1001000','1110100'); " >>
${arquivo}.php
echo " \$ends = '101'; \$center = '01010'; " >>
${arquivo}.php
echo " /* UPC-A Must be 11 digits, we compute the checksum. */ " >>
${arquivo}.php
echo " if ( strlen(\$code) != 11 ) { die(\"UPC-A Must be 11 digits.\"); } " >>
${arquivo}.php
echo " /* Compute the EAN-13 Checksum digit */ " >> ${arquivo}.php
echo " \$ncode = '0'.\$code; " >>
${arquivo}.php
echo " \$even = 0; \$odd = 0; " >>
${arquivo}.php
echo " for (\$x=0;\$x<12;\$x++) { " >>
${arquivo}.php
echo " if (\$x % 2) { \$odd += \$ncode[\$x]; } else { \$even +=
\$ncode[\$x]; } " >> ${arquivo}.php
echo " } " >> ${arquivo}.php
echo " \$code.=(10 - ((\$odd * 3 + \$even) % 10)) % 10; " >>
${arquivo}.php
echo " /* Create the bar encoding using a binary string */ " >> ${arquivo}.php
echo " \$bars=\$ends; " >>
${arquivo}.php
echo " \$bars.=\$Lencode[\$code[0]]; " >>
${arquivo}.php
echo " for(\$x=1;\$x<6;\$x++) { " >>
${arquivo}.php
echo " \$bars.=\$Lencode[\$code[\$x]]; " >>
${arquivo}.php
echo " } " >> ${arquivo}.php
echo " \$bars.=\$center; " >>
${arquivo}.php
echo " for(\$x=6;\$x<12;\$x++) { " >>
${arquivo}.php
echo " \$bars.=\$Rencode[\$code[\$x]]; " >>
${arquivo}.php
echo " } " >> ${arquivo}.php
echo " \$bars.=\$ends; " >>
${arquivo}.php
echo " /* Generate the Barcode Image */ " >> ${arquivo}.php
echo " \$img = ImageCreate(\$lw*95+30,\$hi+30); " >>
${arquivo}.php
echo " \$fg = ImageColorAllocate(\$img, 0, 0, 0); " >>
${arquivo}.php
echo " \$bg = ImageColorAllocate(\$img, 255, 255, 255); " >>
${arquivo}.php
echo " ImageFilledRectangle(\$img, 0, 0, \$lw*95+30, \$hi+30, \$bg); "
>> ${arquivo}.php
echo " \$shift=10; " >> ${arquivo}.php
echo " for (\$x=0;\$x<strlen(\$bars);\$x++) { "
>> ${arquivo}.php
echo " if ((\$x<10) || (\$x>=45 && \$x<50) || (\$x >=85)) { \$sh=10;
} else { \$sh=0; }" >> ${arquivo}.php
echo " if (\$bars[\$x] == '1') { \$color = \$fg; } else { \$color = \$bg; }
" >> ${arquivo}.php
echo " ImageFilledRectangle(\$img, (\$x*\$lw)+15,5,
(\$x+1)*\$lw+14,\$hi+5+\$sh,\$color); " >> ${arquivo}.php
echo " } " >> ${arquivo}.php
echo " /* Add the Human Readable Label */ " >> ${arquivo}.php
echo " ImageString(\$img,4,5,\$hi-5,\$code[0],\$fg); "
>> ${arquivo}.php
echo " for (\$x=0;\$x<5;\$x++) { " >>
${arquivo}.php
echo " ImageString(\$img,5,\$lw*
(13+\$x*6)+15,\$hi+5,\$code[\$x+1],\$fg); " >>
${arquivo}.php
echo " ImageString(\$img,5,\$lw*
(53+\$x*6)+15,\$hi+5,\$code[\$x+6],\$fg); " >>
${arquivo}.php
echo " } " >> ${arquivo}.php
echo " ImageString(\$img,4,\$lw*95+17,\$hi-5,\$code[11],\$fg);
" >> ${arquivo}.php
echo " /* Output the Header and Content. */ " >> ${arquivo}.php
echo " header(\"Content-Type: image/png\"); " >>
${arquivo}.php
echo " ImagePNG(\$img); " >> ${arquivo}.php
echo "} " >> ${arquivo}.php
echo " " >> ${arquivo}.php
echo "CodigoBarras('${arquivo}'); " >> ${arquivo}.php
echo "?> " >> ${arquivo}.php
done
###################### organização da pagina para
impressão
echo "<html> " > index.php
echo "<head> " >> index.php
echo "<title> Codigo de barras</title> " >> index.php
echo "<meta name=\"GENERATOR\" content=\"Quanta Plus\"> "
>> index.php
echo "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">"
>> index.php
echo "</head> " >> index.php
echo "<body> " >> index.php
echo "<table> " >> index.php
echo "<tbody> " >> index.php
echo "<tr> " >> index.php
echo "<?php " >> index.php
echo "\$cod='10000000000'; " >> index.php
echo "for (\$x=1;\$x<=$quant;\$x++) { " >>
index.php
echo "\$cod++; " >> index.php
echo "if (\$x % 3 == 0) { " >> index.php
echo "echo \"</tr><tr>\"; " >>
index.php
echo "echo \"<td><IMG src='./\$cod.php' align='left' border='0'></td>\"; "
>> index.php
echo "} else { " >> index.php
echo "echo \"<td><IMG src='./\$cod.php' align='left' border='0'></td>\"; "
>> index.php
echo "} " >> index.php
echo "} " >> index.php
echo "?> " >> index.php
echo "</tr> " >> index.php
echo "</tbody> " >> index.php
echo "</table> " >> index.php
echo "</body> " >> index.php
echo "</html> " >> index.php
Agora é só dar permissão de execução no arquivo script.sh e rodá-lo. Para alterar o número de códigos de
barras é só editar o arquivo, no exemplo mandei fazer uns 500... Depois vá no navegador e digite o
endereço "http://localhost/cod/" e pronto.
Eu testei os códigos com um leitor de mão da Bematech BR310 e funciona muito bem. Segue o screen dos
códigos gerados:
Pode parecer uma solução bem grosseira, mas funciona.
Espero que ajude alguém.
;-))
Nenhum comentário foi encontrado.