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:
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:
|
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 FontPrivate 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