martedì 7 marzo 2023

C# Creazione di barcode con Zxing tramite Windows Application




In questo articolo vedremo come creare i barcode tramite la libreria Zxing con la tecnlogia .Net 4.7 tramite il linguaggio di programmazione C# e l’ambiente di sviluppo Visual Studio 2019 Community.
L’articolo vuole fornire informazioni utili sulla gestione e creazione dei codici di tipo barcode, in particolare dotare le proprie applicazioni di tipo “App Windows” per la creazione dei codici a Barra e visualizzarli nella form oltre a salvare il file Barcode generato, e visualizzare il testo del codice a barre tramite la libreria ZXing.
Vedremo come creare e leggere codici barcode generando file immagini.


Creazione del progetto

Dopo aver aperto Visual Studio 2019, si crea un nuovo progetto di tipo “App Windows Forms (.Net Framework)” selezionando la versione del Framework 4.7. Dopo aver creato il progetto, assegnando il nome e percorso dove salvarlo, nella form inseriamo due controlli di tipo “casella di sto”, una con la proprietà “Name” impostata con il valore “TxtTesto” e l’altra con il valore “TxtPercorsoFile”, inseriamo un controllo di tipo Picturebox, che permetterà di visualizzare il barcode generato, e tre pulsanti, uno sotto la prima casella con la proprietà name impostato su “BtGenera”, con il quale andremo a generare il codice barcode dalla prima casella di testo. Un altro pulsante con la proprietà impostata name impostata su “btnCerca” al fianco della seconda casella di testo, che permetterà di aprire una finestra per la selezione del file immagine con il barcode, ed un pulsante con la proprietà name impostata su “BtnLeggi” sotto la seconda casella di testo per estrapolare il testo presente nel file immagine del barcode, il tutto come riportato in fugura 1.

Figura 1 – I controlli e la prova della generazione del barcode


Terminata la creazione della nostra schermata, con il posizionamento dei vari controlli, non resta che scrivere il codice per la creazione del barcode.

Stesura del codice

Prima di scrivere il codice, tramite nuget, occorre aggiungere la libreria “Zxing” che permette la creazione di QrCode e barcode, oltre ad altre interessanti funzionalità.
Tramite la gestione dei pacchetti di “Nuget” (Strumenti->Gestione Pacchetti Nuget->Gestione Pacchetti NuGet per la soluzione) digitiamo il componente “Zxing” e selezioniamo quello con il nome “Zxing.Net” con oltre 11 milioni di download e versione 0.16.8 nel momento in cui si sta scrivendo l’articolo, il tutto come mostrato in figura 2.




Figura 2 – Il componente Zxing.net da aggiungere al progetto

Dopo aver aggiunto il componente, passiamo in visualizzazione codice, in alto, sopra ad ogni dichiarazione aggiungiamo lo spazio dei nomi relativo a questa libreria.
Di seguito si riporta il frammento di codice delle suddette operazioni

C#

using ZXing;


Ritorniamo in visualizzazione grafica della nostra form, e sul primo pulsante, quello con la dicitura “Genera”, facciamo doppio click in modo da passare in visualizzazione codice nell’evento “Click” del pulsante.
Tramite la classe “BarcodeWriter” , impostando alcune proprietà come il tipo di barcode e le dimensioni, possiamo generare il codice a barre da un testo, utilizzando il metodo “Write”, una volta ottenuto un oggetto di tipo “Bitmap” lo visualizziamo in un controllo pictureBox, e  tramite un oggetto di tipo “BitMap” possiamo salvarlo in una determinata cartella, passando percorso e nome file, ed il formato immagine.
Qui di seguito il frammento di codice delle suddette operazioni nell’evento click del pulsante.


C#

private void BtnGenera_Click(object sender, EventArgs e)

        {

            try

            {

                BarcodeWriter BarcodeCreazione = new BarcodeWriter {

                    Format = BarcodeFormat.CODE_128,

                    Options = { Height=100, Width = 400}

                };

                var risultato = BarcodeCreazione.Write(TxtTesto.Text);

                var barcodeBitmap = new Bitmap(risultato);

                pictureBox1.Image = barcodeBitmap;

                barcodeBitmap.Save(@"C:\Varie\barcodeGenerato.Jpeg", System.Drawing.Imaging.ImageFormat.Jpeg);

             

            }

            catch (Exception ex)

            {

                MessageBox.Show(ex.Message);

            }

        }




Dopo aver scritto il codice, non resta che eseguirlo per verificare il funzionamento, cambiando il percorso del salvataggio dell’immagine, in una cartella esistente.
Accertato il corretto funzionamento, ritorniamo in visualizzazione grafica, e facciamo click sul pulsante dei tre punti, quello al fianco alla seconda casella di testo, che permetterà di aprire una finestra per la selezione del file.
Di seguito si riporta il codice delle suddette operazioni.

C#

private void BtnCerca_Click(object sender, EventArgs e)

        {

            OpenFileDialog openDlg = new OpenFileDialog();

            openDlg.Title = "Trova immagine Barcode";

            if (openDlg.ShowDialog()== DialogResult.OK)

            {

                TxtPercorsoFile.Text = openDlg.FileName;

            }

 

 

        }


Torniamo in visualizzazione grafica e facciamo doppio click sul pulsante denominato “Leggi” in modo da passare in visualizzazione codice dell’evento “click” del pulsante”.
Tramite il metodo “Decode” della classe “BarcodeReader”, leggendo lo stream dal file immagine, viene rilevo il testo presente nell’immagine del codice a barre.
Di seguito si riporta il codice dell’evento click del pulsante delle suddette operazioni.


C#

private void BtnLeggi_Click(object sender, EventArgs e)

        {

            try

            {

                BarcodeReader BarcodeLettura = new BarcodeReader();

                var barcodeBitmap = (Bitmap)Image.FromFile(TxtPercorsoFile.Text);

                

                var testoRilevato = BarcodeLettura.Decode(barcodeBitmap);

               

                if (testoRilevato != null)

                {

                    TxtTesto.Text = testoRilevato.Text;

                }

 

            }

            catch (Exception ex)

            {

                MessageBox.Show(ex.Message);

            }

        }









Ora non resta che eseguire il codice per verificare il funzionamento del codice e selezionare il file immagine di un barcode, eventualmente creato in precedenza.

Conclusioni

L’articolo ha fornito al lettore la possibilità di avvicinarsi alla gestione dei codice a barre, e dotare le proprie applicazioni della creazione e letture dei barcode.
La libreria Zxing, offre potenzialità nella gestione dei codice a barre e nei QrCode, mettendo a disposizione del programmatore funzionalità anche avanzate in tale ambito, ma soprattutto facilitando la stesura del codice. Soprattutto la creazione dei barcode negli ultimi anni ha visto un vasto impiego. Ancora oggi in ambito di gestione dei magazzini si fa uso dei barcode.

Nessun commento: