Escolhendo uma Simbologia de Código de Barras
Escolhendo uma Simbologia de Código de Barras
Aspose.BarCode FOSS para Python suporta sete simbologias. Cada uma é adequada a diferentes tipos de dados, ambientes de leitura e padrões da indústria. Este guia aborda as características de cada simbologia e quando utilizá-la.
Visão Geral da Simbologia
| Symbology | Tipo | Conjunto de Caracteres | Capacidade de Dados | Dígito Verificador |
|---|---|---|---|---|
| Code 128 | 1D | ASCII completo (128 caracteres) | Comprimento variável | Automático (mod-103) |
| Code 39 | 1D | A–Z, 0–9 e 7 caracteres especiais (base); ASCII completo (estendido) | Comprimento variável | Optional |
| EAN-13 | 1D | Somente numérico (0–9) | 12 dígitos de dados + 1 dígito de verificação | Automatic |
| EAN-8 | 1D | Somente numérico (0–9) | 7 dígitos de dados + 1 dígito de verificação | Automatic |
| QR Code | 2D | Numérico, alfanumérico, byte e Kanji | Até 7,089 numérico / 4,296 alfanumérico | Automático (Reed-Solomon) |
| UPC-A | 1D | Somente numérico (0–9) | 11 dígitos de dados + 1 dígito de verificação | Automatic |
| UPC-E | 1D | Apenas numérico (0–9) | 6 dígitos de dados (compactado UPC-A) | Automatic |
Code 128
Code 128 codifica o conjunto completo de caracteres ASCII com alta densidade. Ele usa três conjuntos de caracteres (A, B, C) e alterna entre eles automaticamente no modo AUTO.
Melhor para: etiquetas de inventário, etiquetas de envio, dados alfanuméricos de uso geral.
from aspose_barcode_foss import BarcodeService
from aspose_barcode_foss import Code128Options, Code128EncodeMode
service = BarcodeService()
# Auto mode — library selects optimal character sets
barcode = service.generate("code128", "INV-2026-00451")
# Force Code C for all-numeric data (higher density)
barcode = service.generate(
"code128", "123456789012",
encode=Code128Options(encode_mode=Code128EncodeMode.CODE_C),
)
svg = barcode.to_svg()Code 39
Code 39 suporta letras maiúsculas, dígitos e 7 caracteres especiais no modo base. Ative full_ascii=True para codificar toda a faixa ASCII. Um dígito de verificação opcional pode ser adicionado via add_check_digit.
Melhor para: etiquetas industriais, identificadores governamentais/militares (LOGMARS) e ambientes onde a simplicidade é mais importante que a densidade.
from aspose_barcode_foss import BarcodeService
from aspose_barcode_foss import Code39Options
service = BarcodeService()
# Base mode — uppercase + digits + special chars
barcode = service.generate("code39", "PART-A1234")
# Full ASCII mode with check digit
barcode = service.generate(
"code39", "Part-a1234",
encode=Code39Options(full_ascii=True, add_check_digit=True),
)
svg = barcode.to_svg()EAN-13
EAN-13 é o código de barras padrão para produtos de varejo fora da América do Norte. Ele codifica exatamente 12 dígitos de dados; o 13º dígito é um dígito de verificação calculado automaticamente. Use Ean13Options para controlar o comportamento de entrada do dígito de verificação.
Melhor para: identificação de produtos de varejo, itens de comércio internacional (GTIN-13).
from aspose_barcode_foss import BarcodeService
from aspose_barcode_foss import Ean13Options
service = BarcodeService()
# 12 data digits — check digit computed
barcode = service.generate("ean13", "590123412345")
# With rendering options for human-readable text
from aspose_barcode_foss import RenderOptions
svg = barcode.to_svg(RenderOptions(show_text=True, scale=2.0))EAN-8
EAN-8 é a versão compacta de EAN-13, usada em pequenos pacotes de varejo onde o espaço é limitado. Ela codifica 7 dígitos de dados mais 1 dígito de verificação.
Melhor para: pequenos produtos de varejo, itens com espaço de etiqueta limitado.
from aspose_barcode_foss import BarcodeService
service = BarcodeService()
barcode = service.generate("ean8", "9638507")
svg = barcode.to_svg()QR Code
QR Code é uma simbologia de matriz 2D que armazena grandes quantidades de dados em uma área pequena. Ela suporta quatro modos de codificação via QrEncodeMode: NUMERIC, ALPHANUMERIC, BYTE e KANJI. A correção de erros é configurável através de QrErrorCorrectionLevel (L, M, Q, H).
Ideal para: URLs, aplicativos móveis, materiais de marketing e qualquer caso de uso que exija alta capacidade de dados ou caracteres não ASCII.
from aspose_barcode_foss import BarcodeService
from aspose_barcode_foss import QrOptions, QrErrorCorrectionLevel, QrEncodeMode
service = BarcodeService()
# Default settings
barcode = service.generate("qrcode", "https://example.com")
# High error correction for printed labels
barcode = service.generate(
"qrcode", "https://example.com/product/12345",
encode=QrOptions(
error_correction_level=QrErrorCorrectionLevel.H,
encoding_mode=QrEncodeMode.BYTE,
),
)
png = barcode.to_png()UPC-A
UPC-A é o código de barras padrão para produtos de varejo na América do Norte. Ele codifica 11 dígitos de dados mais 1 dígito de verificação. UPC-A é um subconjunto de EAN-13 com um zero à esquerda.
Ideal para: identificação de produtos de varejo norte-americanos (GTIN-12).
from aspose_barcode_foss import BarcodeService
service = BarcodeService()
barcode = service.generate("upca", "01234567890")
svg = barcode.to_svg()UPC-E
UPC-E é uma forma compactada de UPC-A para pequenos itens de varejo. Ele codifica 6 dígitos de dados suprimindo zeros da representação completa de UPC-A.
Melhor para: pequenos itens de varejo, cupons e etiquetas onde o espaço é limitado.
from aspose_barcode_foss import BarcodeService
service = BarcodeService()
barcode = service.generate("upce", "0123456")
svg = barcode.to_svg()Guia de Decisão
Use esta tabela para selecionar a simbologia correta para sua aplicação:
| Caso de Uso | Simbologia Recomendada | Reason |
|---|---|---|
| Inventário de armazém | Code 128 | ASCII completo, alta densidade, comprimento variável |
| Rótulos militares/LOGMARS | Code 39 | Ampla adoção em sistemas governamentais |
| Varejo internacional | EAN-13 | GTIN-13 padrão |
| Embalagem de varejo pequena | EAN-8 ou UPC-E | Tamanho físico compacto |
| Varejo norte-americano | UPC-A | GTIN-12 padrão |
| URLs e links móveis | QR Code | Alta capacidade, digitalização 2D |
| Marketing e impressão | QR Code | Escaneável por câmeras de telefone |
| Números de série totalmente numéricos | Code 128 (Code C) | Maior densidade para dados numéricos |
Dicas e Melhores Práticas
- Use Code 128 como padrão para etiquetas de uso geral — ele oferece a melhor relação densidade-compatibilidade entre simbologias 1D
- Para produtos de varejo, use a simbologia exigida pelo seu mercado: EAN-13 para internacional, UPC-A para América do Norte
- Defina
QrErrorCorrectionLevel.Hpara códigos QR que serão impressos em etiquetas expostas a desgaste ou dano parcial - Sempre deixe a biblioteca calcular os dígitos de verificação automaticamente em vez de fornecê-los manualmente
- Use
show_text=TrueemRenderOptionspara rótulos legíveis por humanos, de modo que os operadores possam verificar visualmente os dados escaneados
Problemas comuns
| Problema | Causa | Correção |
|---|---|---|
InvalidInputError em EAN-13 | Caracteres não numéricos nos dados | EAN-13 aceita apenas dígitos 0–9 |
InvalidInputError em Code 39 | Letras minúsculas no modo base | Definir Code39Options(full_ascii=True) |
| QR code muito grande | Versão muito baixa para o comprimento dos dados | Deixe a biblioteca selecionar automaticamente a versão, ou aumente QrOptions.version |
UPC-E InvalidInputError | Os dados não correspondem ao padrão de supressão de zeros | Verifique o formato de UPC-E de 6 dígitos ou use UPC-A em vez disso |
FAQ
Posso usar Code 128 para dados totalmente numéricos?
Sim. Code 128 Code C mode (Code128EncodeMode.CODE_C) está otimizado para dados totalmente numéricos, codificando pares de dígitos em um único caractere símbolo para densidade máxima.
Qual é a diferença entre EAN-13 e UPC-A?
UPC-A é um subconjunto de 12 dígitos de EAN-13. Um código UPC-A pode ser representado como um EAN-13 com zero à esquerda. Eles são funcionalmente compatíveis em sistemas de leitura no varejo.
Qual simbologia suporta a maior quantidade de dados?
QR Code suporta até 7,089 caracteres numéricos ou 4,296 caracteres alfanuméricos. Todas as simbologias 1D nesta biblioteca suportam dados de comprimento variável, mas QR Code tem a maior capacidade.
Posso misturar simbologias em uma única aplicação?
Sim. Crie uma instância de BarcodeService e chame generate() com nomes de simbologia diferentes para cada código de barras. O serviço resolve cada simbologia através do SymbologyRegistry.
Resumo do API Reference
| Classe / Método | Descrição |
|---|---|
BarcodeService.generate(symbology, data, encode, render) | Gere um código de barras para qualquer simbologia registrada |
Code128Options | Opções de codificação para Code 128 (modo de codificação, GS1, ECI) |
Code128EncodeMode | Enum: AUTO, CODE_A, CODE_B, CODE_C, CODE_AB, CODE_AC, CODE_BC |
Code39Options | Opções de codificação para Code 39 (ASCII completo, dígito de verificação) |
Code39EncodeMode | Enum: BASE, FULL_ASCII |
Ean13Options | Opções de codificação para EAN-13 (entrada de dígito de verificação) |
Ean8Options | Opções de codificação para EAN-8 (entrada de dígito de verificação) |
QrOptions | Opções de codificação para QR Code (correção de erros, versão, máscara, modo) |
QrEncodeMode | Enum: AUTO, NUMERIC, ALPHANUMERIC, BYTE, KANJI |
QrErrorCorrectionLevel | Enum: L, M, Q, H |
UpcaOptions | Opções de codificação para UPC-A |
UpceOptions | Opções de codificação para UPC-E |
SymbologyRegistry | Resolve nomes de simbologia e fornece definições |