Stampare codice a barre con vb.net utilizzando la libreria itextsharp

Ultimamente mi sono imbattuto nella creazione di un programma che stampasse codice a barre per il magazzino e per farlo ho utilizzato la libreria iTextSharp (disponibile su Sourceforce)  che consente di interagire con file in formato PDF e  consente anche di generare Barcode in diversi formati.  La libreria è molto diffusa tra gli sviluppatori di applicazioni Java, .NET, Android per creare e manipolare file in formato PDF.

In questo Post pubblicherò i pezzi di codice che ho creato per stampare un barcode e salvarlo in un file PDF e stamparlo.

La maschera che ho creato è la seguente:

  • Text box dove inserire la stringa da convertire
  • Un pulsante
  • Incrementatore etichette da stampare
stampa-codic-a-barre-con-vb-net-itextsharp
Stampa codice a barre con vb.net

 

Elenco librerie da importare:

Imports System.Collections.Generic

Imports System.ComponentModel

Imports System.Data

Imports System.Drawing

Imports System.Text

Imports System.Windows.Forms

Imports iTextSharp.text

Imports System.IO

Imports iTextSharp.text.pdf

Codice bottone stampa (all’inizio imposto la dimensione del documento da realizzare )

Dim doc As New Document(New iTextSharp.text.Rectangle(50, 12), 80, 20, 1, 1)

Dim n As Integer

Dim nMax As Integer

nMax = N1.Value ‘verifico quante copie fare

Dim writer As PdfWriter = PdfWriter.GetInstance(doc, New FileStream(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + “/codes.pdf”, FileMode.Create))

doc.Open()

Try

Dim img1 As System.Drawing.Image = Nothing

For n = 1 To nMax

Dim dt As New DataTable()

dt.Columns.Add(“Codice”)

dt.Columns.Add(“Data”)

For i As Integer = 0 To 0

Dim row As DataRow = dt.NewRow()

row(“Codice”) = Me.TextBox1.Text

row(“Data”) = “Data imballo ” + Now

dt.Rows.Add(row)

Next

For i As Integer = 0 To dt.Rows.Count – 1

doc.NewPage()

Dim cb1 As PdfContentByte = writer.DirectContent

Dim bf As BaseFont = BaseFont.CreateFont(BaseFont.TIMES_BOLDITALIC, BaseFont.CP1252, BaseFont.NOT_EMBEDDED)

cb1.SetFontAndSize(bf, 4.5F)

cb1.BeginText()

cb1.SetTextMatrix(1.2F, 8.5F)

cb1.ShowText(“Info”)

cb1.EndText()

Dim cb2 As PdfContentByte = writer.DirectContent

Dim bf1 As BaseFont = BaseFont.CreateFont(BaseFont.HELVETICA, BaseFont.CP1252, BaseFont.NOT_EMBEDDED)

cb2.SetFontAndSize(bf1, 2.3F)

cb2.BeginText()

cb2.SetTextMatrix(1.5F, 5.75F)

cb2.ShowText(dt.Rows(i)(“Data”).ToString())

cb2.EndText()

Dim cb As iTextSharp.text.pdf.PdfContentByte = writer.DirectContent

Dim bc As iTextSharp.text.pdf.Barcode128 = New Barcode128()

bc.TextAlignment = Element.ALIGN_LEFT

bc.Code = dt.Rows(i)(“Codice”).ToString()

bc.BarHeight = 10

bc.StartStopText = False

bc.CodeType = iTextSharp.text.pdf.Barcode128.EAN13

bc.Extended = True

Dim img As iTextSharp.text.Image = bc.CreateImageWithBarcode(cb, iTextSharp.text.BaseColor.BLACK, iTextSharp.text.BaseColor.BLACK)

cb.SetTextMatrix(1.5F, 3.0F)

img.ScaleToFit(40, 5)

img.SetAbsolutePosition(1.5F, 0.5)

cb.AddImage(img)

Next

Next

doc.Close()

System.Diagnostics.Process.Start(Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + “/codes.pdf”)

 

Catch

 

Finally

doc.Close()

End Try

Create una classe e chiamatela Program.vb

Classe Program.vb

Imports System.Collections.Generic

Imports System.Windows.Forms

 

Namespace BarLabel

NotInheritable Class Program

<STAThread> _

Private Shared Sub Main()

Application.EnableVisualStyles()

Application.SetCompatibleTextRenderingDefault(False)

Application.Run(New Form1())

End Sub

End Class

End Namespace