VB.NET - Gerando Código de barras com Fontes True Type


Neste artigo vamos gerar código de barras usando Fontes True Type. Não vou me adentrar nas elucubrações sobre os conceitos sobre Código de barras. Sugiro que leias os artigos abaixo para saber mais sobre o assunto:

Como o título do artigo sugere , para gerar o código de barras eu vou usar Fontes True Type. Então para acompanhar este artigo você vai precisar ter:

  1. As fontes True Type (vou disponibilizar algumas grátis)
  2. O Visual Studio 2003

Vamos ao projeto.

Inicie um novo projeto no VS.NET do tipo Windows Application chamando-o de codigoBarras ou algo parecido.

No formulário principal inclua os seguintes componentes conforme layout-abaixo:

  • TextBox
  • ComboBox
  • Label
  • Button
  • PrintDialog
  • PrintDocument

As fontes devem ser colocadas em um caminho definido para serem carregadas pela aplicação. Abaixo a figura das fontes em uma pasta que eu criei para sua localização. Você não precisa instalar as fontes basta copiá-las para a pasta desejada.

Nota: As fontes serão disponibilizadas junto com o projeto

Os imports do projeto são:

Imports System.Drawing
Imports System.Collections
Imports System.ComponentModel
Imports System.Drawing.Text
Imports System.IO

As variáveis abaixo  devem ser definidas no início do formulário.

Private _Fonte As Font

Private CAMINHO_FONTES As String

 

No evento Load do formulário vamos definir o caminho das fontes e carregar a combobox com as fontes True Type chamando a rotina carregaListaFonte()

 

Private Sub frmCodBarras_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
   CAMINHO_FONTES = "D:\vbnet\codbarras\Barcode\Fonts"
   carregaListaFonte()
End Sub

 

Quando o usuário selecionar uma fonte da combobox devemos verificar e definir a fonte conforme a seleção do usuário chamando a rotina carregaFonte().
 

Private Sub cboFonteTP_SelectedIndexChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) _ 
Handles cboFonteTP.SelectedIndexChanged

        Try
            carregaFonte(cboFonteTP.SelectedItem.ToString)
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub

O código das rotinas carreagListaFonte() e carregaFonte() são exibidas abaixo:

Private Sub carregaListaFonte()
        Try
            Dim dir As DirectoryInfo = New DirectoryInfo(CAMINHO_FONTES)
            If dir.Exists Then
                Dim file As FileInfo() = dir.GetFiles
                For Each fonts As FileInfo In file
                    If fonts.Extension = ".TTF" Then
                        cboFonteTP.Items.Add(fonts.Name)
                    End If
                Next
                cboFonteTP.SelectedIndex = 0
            End If
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
End Sub
    Private Sub carregaFonte(ByVal fonte As String)
        Dim pfc As PrivateFontCollection = New PrivateFontCollection
        pfc.AddFontFile(CAMINHO_FONTES + "\" + fonte)
        Dim fontFamily As FontFamily = pfc.Families(0)
        _Fonte = New Font(fontFamily, 30)

    End Sub

O código que gera o código de barras esta no evento Click do botão - Gerar Código de Barras

Private Sub btnGeraBarras_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnGeraBarras.Click

        Try
            If txtNumero.Text = String.Empty Then
                lblNumero.Text = "Informe o número para gerar o código de barras."
            Else
                If Not (_Fonte Is Nothing) Then
                    lblNumero.Font = _Fonte
                    lblCodBarra.Text = formataCodigoBarras(txtNumero.Text)
                    lblNumero.Text = formataCodigoBarras(txtNumero.Text)
                End If
            End If
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub

A formatação do código de Barras é feito pela função formataCodigoBarras() :

Private Function formataCodigoBarras(ByVal codigo As String)
        Dim codigoBarras As String = String.Empty
        codigoBarras = String.Format("*{0}*", codigo)
        Return codigoBarras

    End Function

 

Abaixo algumas telas com o resultado obtido para o tipo de fonte selecionado:

O código para impressão precisa ser melhorado. Por falta de tempo tive que deixá-lo incompleto e precisando de ajustes. Se alguma boa alma resolver ajustar o código me envie para publicação.

Pegue o código do projeto e as fontes usadas aqui : codigoBarrasNet.zip

Nota: Código baseado e adaptado de um artigo de Marc Rubiño sobre o mesmo tema usando a linguagem C#.


José Carlos Macoratti