Generare codici a barre

In questo articolo vedremo come creare, in ASP.NET, un' applicazione che mostri i codici a barre in una pagina web. L' esempio proposto è sottoforma di controllo utente, e perciò sarà semplicissimo da implementare in qualsiasi applicazione. Lo si potrà richiamare in qualunque momento semplicemente passando al parametro "Data" il testo da codificare. L' esempio è scaricabile QUI.

Ecco il codice del controllo utente:

<script language="VB" runat="server">
    Public Data As String = ""
    Public Height As Byte = 25
    Public WidthMultiplier As Byte = 1
    
    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs)
        Dim dictEncoding As StringDictionary
        Dim sbBarcodeImgs As StringBuilder

        Dim strEncodedData As String
        Dim I As Integer

        dictEncoding = New StringDictionary()
        dictEncoding.Add("0" , "101001101101")
        dictEncoding.Add("1" , "110100101011")
        dictEncoding.Add("2" , "101100101011")
        dictEncoding.Add("3" , "110110010101")
        dictEncoding.Add("4" , "101001101011")
        dictEncoding.Add("5" , "110100110101")
        dictEncoding.Add("6" , "101100110101")
        dictEncoding.Add("7" , "101001011011")
        dictEncoding.Add("8" , "110100101101")
        dictEncoding.Add("9" , "101100101101")
        dictEncoding.Add("A" , "110101001011")
        dictEncoding.Add("B" , "101101001011")
        dictEncoding.Add("C" , "110110100101")
        dictEncoding.Add("D" , "101011001011")
        dictEncoding.Add("E" , "110101100101")
        dictEncoding.Add("F" , "101101100101")
        dictEncoding.Add("G" , "101010011011")
        dictEncoding.Add("H" , "110101001101")
        dictEncoding.Add("I" , "101101001101")
        dictEncoding.Add("J" , "101011001101")
        dictEncoding.Add("K" , "110101010011")
        dictEncoding.Add("L" , "101101010011")
        dictEncoding.Add("M" , "110110101001")
        dictEncoding.Add("N" , "101011010011")
        dictEncoding.Add("O" , "110101101001")
        dictEncoding.Add("P" , "101101101001")
        dictEncoding.Add("Q" , "101010110011")
        dictEncoding.Add("R" , "110101011001")
        dictEncoding.Add("S" , "101101011001")
        dictEncoding.Add("T" , "101011011001")
        dictEncoding.Add("U" , "110010101011")
        dictEncoding.Add("V" , "100110101011")
        dictEncoding.Add("W" , "110011010101")
        dictEncoding.Add("X" , "100101101011")
        dictEncoding.Add("Y" , "110010110101")
        dictEncoding.Add("Z" , "100110110101")
        dictEncoding.Add("-" , "100101011011")
        dictEncoding.Add(":" , "110010101101")
        dictEncoding.Add(" " , "100110101101")
        dictEncoding.Add("$" , "100100100101")
        dictEncoding.Add("/" , "100100101001")
        dictEncoding.Add(" + " , "100101001001")
        dictEncoding.Add("%" , "101001001001")
        dictEncoding.Add("*" , "100101101101")

        ' Lo standard Code 39 Symbology Barcodes inizia e finisce sempre con il carattere "*".
        ' Lo "0" messo dopo ogni carattere corrisponde ad uno spazio vuoto.
        strEncodedData = dictEncoding("*") & "0"
        For I = 1 To Len(Data)
            strEncodedData = strEncodedData & dictEncoding(Mid(Data, I, 1)) & "0"
        Next I
        strEncodedData = strEncodedData & dictEncoding("*")

        ' Mostra il troubleshooting:
        'Response.Write("<p>" & strEncodedData & "</p>")

        ' Converte la stringa cifrata in un' immagine.  Per farlo, due immagini da 1x1 pixels vengono gradualmente allargate
        ' Si può utilizzare anche il motore di rendering grafico del .NET, main questo modo è tutto più semplice e rapido.  
        
        sbBarcodeImgs = New StringBuilder()
        For I = 1 To Len(strEncodedData)
            If Mid(strEncodedData, I, 1) = "1" Then
                sbBarcodeImgs.Append("<img src=""images/bar_blk.gif"" width=""" & WidthMultiplier & """ height=""" & Height & """ />")
            Else
                sbBarcodeImgs.Append("<img src=""images/bar_wht.gif"" width=""" & WidthMultiplier & """ height=""" & Height & """ />")
            End If
        Next I

        litBarcode.Text = sbBarcodeImgs.ToString
    End Sub
</script>
<asp:Literal ID="litBarcode" runat="server" />

Mentre ora mostriamo la sorgente della pagina nella quale si può decidere il testo da codificare:

<%@ Page Language="VB" %>
<%@ Register TagPrefix="asp101" TagName="Barcode" Src="barcode.ascx" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head>
    <title>ASP.NET Esempio codice a barre</title>
</head>
<body>

<h3>Barcodes</h3>

<p><strong>Encoding &quot;TEST 123&quot;:</strong></p>
<p>
<asp101:Barcode id="bcTest" Data="TEST 123" runat="server" />
</p>

<p><strong>Encoding &quot;ASP 101&quot;</strong> (with a height of 35px and double size bars):</p>
<p>
<asp101:Barcode id="bcAsp101" runat="server"
    Data   = "ASP 101"
    Height = 35
    WidthMultiplier = 2
/>
</p>

<hr />



</body>
</html>

 



Ti potrebbe interessare anche

commenta la notizia

C'č 1 commento
Redazione
Ti interessano altri articoli su questo argomento?
Chiedi alla nostra Redazione!