Gerador de Código de Barras: EAN-13 e Code128, duas simbologias diferentes
"Código de barras" não é um formato único — é uma categoria de simbologias, cada uma com sua própria forma de codificar dados em barras e seu próprio algoritmo de checksum. Este gerador cobre as duas mais comuns em contextos de e-commerce e logística: EAN-13 (o padrão internacional GS1 usado em praticamente todo produto de varejo, reconhecível pelas barras verticais e o número de 13 dígitos embaixo) e Code128 (uma simbologia alfanumérica de comprimento variável, usada em logística e rastreamento, capaz de codificar letras, números e vários símbolos no mesmo código, não só dígitos).
EAN-13: o dígito verificador do padrão GS1
Um EAN-13 tem 13 dígitos, dos quais os 12 primeiros carregam a
informação (prefixo do país/GS1, código do fabricante, código do
produto) e o 13º é o dígito verificador. O cálculo, definido pelo GS1,
é: a partir da direita, os dígitos em posição ímpar (a 2ª, 4ª, 6ª... a
contar do dígito verificador) são multiplicados por peso 3, os de
posição par por peso 1; soma-se tudo, e o dígito verificador é o valor
que, somado a esse total, fecha no próximo múltiplo de 10 — formalmente,
dv = (10 - (soma mod 10)) mod 10. É uma variação
relativamente simples de Módulo 10, na mesma família conceitual do
algoritmo de Luhn (usado no cartão de crédito deste site), mas com
pesos fixos 3/1 em vez da duplicação alternada de Luhn.
Este gerador aceita tanto um EAN-13 completo (13 dígitos) quanto um código parcial de 12 dígitos — nesse segundo caso, o 13º dígito verificador é calculado e adicionado automaticamente, útil para quem já tem o código-base (prefixo + produto) e só precisa do dígito final correto.
Code128: por que não tem "um" dígito verificador simples
Code128 usa um esquema de checksum mais elaborado que EAN-13: cada caractere do conteúdo é mapeado para um valor numérico específico da tabela Code128 (que inclui os três subconjuntos A, B e C, cada um otimizado para um tipo de conteúdo — texto com controle, texto alfanumérico comum, ou pares de dígitos compactados), multiplicado por um peso posicional, somado a um valor de início dependente do subconjunto, e o resultado é reduzido por módulo 103 (não módulo 10 ou 11). Por isso o Code128 aceita texto livre — letras, números e símbolos — sem uma "fórmula de dígito verificador" simples de explicar em uma frase, diferente do EAN-13.
Uso em testes de sistemas de e-commerce e logística
Sistemas de estoque, PDV (ponto de venda) e etiquetagem logística leem código de barras como entrada principal de identificação de produto. Testar a leitura e o parsing desses códigos — seja simulando um leitor de código de barras via input de teclado (a forma como a maioria dos leitores físicos se comunica com o sistema, emulando digitação), seja testando a geração de etiquetas — se beneficia de códigos com checksum real: um EAN-13 com dígito verificador incorreto deveria ser rejeitado pelo sistema antes mesmo de tentar buscar o produto correspondente, e testar esse caminho de rejeição exige gerar deliberadamente tanto códigos válidos quanto inválidos.