Como gerar código de barras ITF (interleaved, industrial, matrix) com Delphi / Lazarus / C ++ Builder

2020-11-11

Um pouco de teoria sobre código de barras

É difícil imaginar nossa vida sem códigos de barras, especialmente agora que os conhecemos a cada passo. Vamos ao cinema e nossos ingressos contêm esse “desenho de barras em preto e branco”, vamos ao supermercado e cada produto tem a informação em forma de código de barras. Podemos apenas imaginar quais seriam as filas se o caixa inserisse os identificadores do produto manualmente, sem usar um scanner. Além disso, existe um grande risco de erro ao inserir uma sequência de números. Hoje vamos considerar uma pequena parte de todos os tipos de códigos de barras.

ITF (Interleaved Dois de Cinco) ou código de barras “2 of 5 interleaved” - é um código numérico de dupla banda ou um código de barras numérico de alta densidade que pode codificar apenas pares de números (o código de barras deve ter um número par de dígitos!). Cada padrão de código de barras codifica o dígito ímpar no padrão de barras e o dígito par no padrão de espaços entre as barras. Para codificar um número ímpar de dígitos, você deve preencher o dígito mais à esquerda (mais significativo) com um zero.

Os códigos de barras podem ter comprimento variável e normalmente não usam uma soma de verificação, embora um caractere de verificação do módulo 10 seja usado em algumas situações especiais. Varreduras parciais são possíveis, uma vez que o código de barras 2 de 5 intercalado não verifica a si mesmo e os campos de dados de comprimento fixo são frequentemente usados para contornar este problema.

Resumindo:

- Codifica apenas dados numéricos;
- O comprimento é variável, mas deve ter um número par de dígitos;
- A soma de verificação é opcional.

Como ITF é o código de barras com alta densidade de dados, ele oferece os seguintes recursos:

  • O tamanho da etiqueta pode ser menor do que os de outros códigos com os mesmos dígitos. É eficaz imprimir códigos de barras em espaços pequenos.
  • Mais dados podem ser contidos em comparação com outros códigos, se o tamanho da etiqueta for o mesmo. (O número de dígitos pode ser aumentado)
  • É possível uma largura maior da barra, se o tamanho da etiqueta e o número de dígitos forem iguais.

Se a largura da barra for maior, é fácil para o leitor de código de barras ler. A leitura à distância também pode ser realizada.

Comparação do ITF, CODE 39 e Codabar

Embora o ITF tenha muitas vantagens, também tem a desvantagem de possível "pular leitura" devido à sua composição. Pular leitura significa que o código de barras que representa "3852" é lido incorretamente como "38", com alguns dígitos sendo desconsiderados.


Desvantagem do ITF

Os códigos de barras ITF-14 e GTIN-14 são gerados usando a simbologia “Interleaved 2 of 5”. O ITF-14 é usado em contêineres de transporte e é baseado no código UPC. Normalmente, os códigos de barras intercalados são impressos em caixas de papelão ondulado, que contêm mercadorias para entrega e possuem a seguinte estrutura:

Estrutura Interleaved

O padrão Industrial 2 of 5 foi desenvolvido pela Identicon Corp. e Computer Identics Corp. em 1970, e foi usado ativamente em aplicações industriais. No entanto, atualmente não é usado (exceto para algumas aplicações de logística). Industrial 2 de 5 tem esta aparência e usa 5 barras para representar um caractere. Uma vez que este código atribui dados apenas a barras (e não a espaços), ele tem densidade de dados muito baixa:

Industrial 2 of 5 structure

O Matrix 2 of 5 é um membro da família de Code 2 of 5  de densidade alta, que foi desenvolvida pela primeira vez em 1968. Ela tem sido usada principalmente na classificação de depósitos e acabamento fotográfico. O nome "2 de 5" deriva do fato de que dos cinco elementos (barras e espaços) usados para codificar cada caractere, dois são largos e três são estreitos.

Matrix structure

Ajuste fino do código de barras pata impressão em  Delphi e Lazarus

FastReport VCL permite que você use todos os três tipos de códigos de barras. Vamos ver como fazer.
No FastReport VCL designer, adicione o componente obCatBarcode ao relatório e selecione o tipo de código de barras da lista:

FastReport VCL

Próximo, ir ao editor de código de barras:

Editor de código de barras

Code- área para o valor numérico do código de barras;
Type of Bar – é o tipo do código de barras pode ser alterado imediatamente no editor sem adicionar um novo componente ao relatório;
Calc CheckSum - soma de verificação. Todos os códigos de barras lineares têm essa propriedade. Lembre-se de “pular leitura”? Devemos lutar contra isso de alguma forma! Esta propriedade determina se a soma de verificação deve ser calculada automaticamente. Se estiver desabilitado, a soma de verificação deve estar presente no texto do objeto;
Zoom - define a escala do código de barras e é usado apenas em conjunto com a propriedade “Autosize”;
Text - ativa / desativa a exibição de texto sob o código de barras;
Rotation - permite definir a rotação do objeto para um dos ângulos fixos - 0, 90, 180, 270 graus.

Exemplo de código de barras ITF

Verifica a consistência do código de barras gerado (felizmente, a câmera e o programa de leitura de código de barras agora estão disponíveis em todos os smartphones modernos).

Creiando um código de barras por código em Delphi / Lazarus

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
uses frxBarcod;
 
procedure TForm1.Button1Click(Sender: TObject);
var bc: TfrxBarcodeView;
begin
bc :=TfrxBarcodeView(frxReport1.FindObject('BarCode1'));
{Set the type of the barcode}
bc.BarType := bcCode_2_5_interleaved;
{Set the fixed barcode value}
bc.Text := '123456';
{Set the calculated barcode value}
//bc.Expression := '<YourDatasetName."FieldName1"> + <YourDatasetName."FieldName2">';
{Set whether it is necessary to calculate the checksum and add it to the end of the barcode}
bc.CalcCheckSum := False;
{Set the scale at which the barcode will be displayed}
bc.Zoom := 2;
{Set the angle of the barcode rotation. Can take the following values: 0, 90, 180, 270}
bc.Rotation := 0;
{Set whether to set the width of the barcode depending on its content.}
{If set to False, Zoom will be set to keep the barcode width fixed}
bc.AutoSize := True;
{Set the barcode background color}
bc.Color := clNone;
{Set the barcode lines color}
bc.ColorBar := clBlack;
{Set whether to display the text at the bottom of the barcode}
bc.ShowText := True;
frxReport1.ShowReport();
end;

Agora sabemos mais sobre os códigos de barras ITF e podemos usá-los em nossos relatórios, etiquetas e muitas outras coisas.

VCL VCL Lazarus Lazarus FastReport FastReport Barcode Barcode Delphi Delphi
26 de abril de 2023

How to use RFID tags in FastReport .NET

The new page object is an RFID tag in FastReport.NET allows users to use the library to create labels or maps without third-party programs
20 de abril de 2023

How to update FastReport Online Designer to the latest version

Step-by-step instructions for updating FastReport Online Designer to the latest version via the client panel.
14 de março de 2023

The Future of Report Generation with Blazor WebAssembly

Step-by-step instructions for creating a demo application on .NET 6 and 7 directly in the browser using Blazor WebAssembly in FastReport .NET.
Fast Reports
  • 800-985-8986 (English, US)
  • +31 97 01025-8466 (English, EU)
  • +49 30 56837-3928 (German, DE)
  • +55 19 98147-8148 (Portuguese, BR)
  • info@fast-report.com
  • 66 Canal Center Plaza, Ste 505, Alexandria, VA 22314

© 1998-2025 Fast Reports Inc.