Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

visitante_php

[Resolvido] Problemas cm codigo de barras

Recommended Posts

Preciso fazer uma aplicacao usando codigo de barras, pore procurei 2 libs e, usando a mesma sequencia numerica, no mesmo padrao, foram geradas barras diferentes...e como a aplicacao precisara gerar os codigos de barras, seria pra crachas, a grafica so aceita imprimir os crachas usando o corel, q tb gera codigo de barras, porem de forma diferente, eu gostaria de saber qual o codigo eh o certo...pra saber qual lib eu vou usar...vou postar uma imagem, as 2 primeiras barras sao das lib, a 3 eh do corel....na barra do core, o '5' a direita, o primeiro a direita, nao faz parte da sequencia, ele q gerou e inseriu....

 

barra 1 -> usei o zxing

 

barra 2-> usei esta lib http://nathanpdaniel.com/barcode-generator.htm

 

barra 3 gerada pelo corel draw X5

 

barcodes.jpg

Compartilhar este post


Link para o post
Compartilhar em outros sites

eu gostaria de saber qual o codigo eh o certo...

 

Todos os códigos são corretos, porém cada um no seu padrão. Existem diversos tipos de código de barras e você deve escolher um e utilizá-lo.

 

na barra do core, o '5' a direita, o primeiro a direita, nao faz parte da sequencia, ele q gerou e inseriu....

 

Esse código é chamado EAN-13, o '5' da direita é chamado de check digit, e calculado assim:

 

011555792758

 

1. Faz a multiplicação, os pares por 3 e os ímpares por 1:

 

0 * 1 = 0

1 * 3 = 3

1 * 1 = 1

5 * 3 = 15

5 * 1 = 5

5 * 3 = 15

7 * 1 = 7

9 * 3 = 27

2 * 1 = 2

7 * 3 = 21

5 * 1 = 5

8 * 3 = 24

 

2. Soma os resultados:

 

0 + 3 + 1 + 15 + 5 + 15 + 7 + 27 + 2 + 21 + 5 + 24 = 125

 

3. Encontre o próximo múltiplo de 10, depois do resultado da soma:

 

130

 

4. Subtraia o resultado da soma do múltiplo de 10:

 

130 - 125 = 5

 

5. Adicione o check digit ao fim da sequência:

 

0115557927585

 

<?php
$num = '011555792758'; //seu código
$sum = 0;

for ( $i = 0 , $t = strlen( $num ) ; $i < $t ; ++$i ) {
   	$sum += $num{ $i } * ( $i & 1 ? 3 : 1 );
}

echo $num . ( ( 1 - ( ( $sum / 10 ) - (int) ( $sum / 10 ) ) ) * 10 );

 

;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

João, fiquei um pouco confuso sobre as multiplicações, na textos você diz: "Faz a multiplicação, os PARES por 3 e os IMPARES por 1" mas na hora da multiplicação você faz o contrário, qual o correto?

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.