Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια

Printing BarCodes

Printing barcodes from your application is quite easy, as long as you get to know a simple algorithm (for the specific barcode symbology you're interested in) and you have a valid font file. Searching via Google on this subject is sometimes hard enough, because the top results come for commercial components or font distributors.

In this article, I present a simple implementation for the code 128 specification, with the corresponding true type font file.

The font

You can get the font from http://www.dafont.com/code_128.font. This page contains a images for all character contained in the ttf file and a download link for the ttf itself (http://www.dafont.com/download/?os=win&file=code_128) (Released under GNU public license). In case of the above urls are not working, just google with "code128.ttf" or "code 128 font".

The algorithm

You can get a complete description of the algorithm used at http://www.barcodeman.com/info/c128.php3. You should focus at the steps to calculate the check digit.

Code usage

It's quite simple. When you have the text you want to print as barcode, all you have to do is pass it through GetBarCodeText function and display it using the Code128 font. You can use it the same way to include it on crystal reports or any other reporting system that can use true type fonts.

If you use it, remember to distribute the ttf file with your application setup project.

The code



Public Module Code128
    Public Function GetBarCodeText(ByVal text As String) As String
        Return GetCharacter(StartB) & text & GetCharacter(GetCheckDigitCode(text)) & GetCharacter(StopB)
    End Function
    Private Function GetCheckDigitCode(ByVal text As String) As Integer
        Dim Sum As Integer = 104
        For CharacterCounter As Integer = 0 To text.Length - 1
            Sum += (CharacterCounter + 1) * GetCharacterCode(text.Substring(CharacterCounter, 1))
        Next
        Return Sum Mod 103
    End Function
    Private Const StartB As Integer = 104
    Private Const StopB As Integer = 106
    Private Function GetCharacterCode(ByVal value As String) As Integer
        If value.Length > 1 Then Throw New System.ArgumentOutOfRangeException

        Select Case value
            Case " "
                Return 0
            Case "!"
                Return 1
            Case """"
                Return 2
            Case "#"
                Return 3
            Case "$"
                Return 4
            Case "%"
                Return 5
            Case "&"
                Return 6
            Case "'"
                Return 7
            Case "("
                Return 8
            Case ")"
                Return 9
            Case "*"
                Return 10
            Case "+"
                Return 11
            Case ","
                Return 12
            Case "-"
                Return 13
            Case "."
                Return 14
            Case "/"
                Return 15
            Case "0"
                Return 16
            Case "1"
                Return 17
            Case "2"
                Return 18
            Case "3"
                Return 19
            Case "4"
                Return 20
            Case "5"
                Return 21
            Case "6"
                Return 22
            Case "7"
                Return 23
            Case "8"
                Return 24
            Case "9"
                Return 25
            Case ":"
                Return 26
            Case ";"
                Return 27
            Case "<"
                Return 28
            Case "="
                Return 29
            Case ">"
                Return 30
            Case "?"
                Return 31
            Case "@"
                Return 32
            Case "A"
                Return 33
            Case "B"
                Return 34
            Case "C"
                Return 35
            Case "D"
                Return 36
            Case "E"
                Return 37
            Case "F"
                Return 38
            Case "G"
                Return 39
            Case "H"
                Return 40
            Case "I"
                Return 41
            Case "J"
                Return 42
            Case "K"
                Return 43
            Case "L"
                Return 44
            Case "M"
                Return 45
            Case "N"
                Return 46
            Case "O"
                Return 47
            Case "P"
                Return 48
            Case "Q"
                Return 49
            Case "R"
                Return 50
            Case "S"
                Return 51
            Case "T"
                Return 52
            Case "U"
                Return 53
            Case "V"
                Return 54
            Case "W"
                Return 55
            Case "X"
                Return 56
            Case "Y"
                Return 57
            Case "Z"
                Return 58
            Case "["
                Return 59
            Case "\"
                Return 60
            Case "]"
                Return 61
            Case "^"
                Return 62
            Case "_"
                Return 63
            Case "`"
                Return 64
            Case "a"
                Return 65
            Case "b"
                Return 66
            Case "c"
                Return 67
            Case "d"
                Return 68
            Case "e"
                Return 69
            Case "f"
                Return 70
            Case "g"
                Return 71
            Case "h"
                Return 72
            Case "i"
                Return 73
            Case "j"
                Return 74
            Case "k"
                Return 75
            Case "I"
                Return 76
            Case "m"
                Return 77
            Case "n"
                Return 78
            Case "o"
                Return 79
            Case "p"
                Return 80
            Case "q"
                Return 81
            Case "r"
                Return 82
            Case "s"
                Return 83
            Case "t"
                Return 84
            Case "u"
                Return 85
            Case "v"
                Return 86
            Case "w"
                Return 87
            Case "x"
                Return 88
            Case "y"
                Return 89
            Case "z"
                Return 90
            Case "{"
                Return 91
            Case "|"
                Return 92
            Case "}"
                Return 93
            Case "~"
                Return 94
            Case Else
                Return 0
        End Select

    End Function
    Private Function GetCharacter(ByVal value As Integer) As String
        Select Case value
            Case 0
                Return " "
            Case 1
                Return "!"
            Case 2
                Return """"
            Case 3
                Return "#"
            Case 4
                Return "$"
            Case 5
                Return "%"
            Case 6
                Return "&"
            Case 7
                Return "'"
            Case 8
                Return "("
            Case 9
                Return ")"
            Case 10
                Return "*"
            Case 11
                Return "+"
            Case 12
                Return ","
            Case 13
                Return "-"
            Case 14
                Return "."
            Case 15
                Return "/"
            Case 16
                Return "0"
            Case 17
                Return "1"
            Case 18
                Return "2"
            Case 19
                Return "3"
            Case 20
                Return "4"
            Case 21
                Return "5"
            Case 22
                Return "6"
            Case 23
                Return "7"
            Case 24
                Return "8"
            Case 25
                Return "9"
            Case 26
                Return ":"
            Case 27
                Return ";"
            Case 28
                Return "<"
            Case 29
                Return "="
            Case 30
                Return ">"
            Case 31
                Return "?"
            Case 32
                Return "@"
            Case 33
                Return "A"
            Case 34
                Return "B"
            Case 35
                Return "C"
            Case 36
                Return "D"
            Case 37
                Return "E"
            Case 38
                Return "F"
            Case 39
                Return "G"
            Case 40
                Return "H"
            Case 41
                Return "I"
            Case 42
                Return "J"
            Case 43
                Return "K"
            Case 44
                Return "L"
            Case 45
                Return "M"
            Case 46
                Return "N"
            Case 47
                Return "O"
            Case 48
                Return "P"
            Case 49
                Return "Q"
            Case 50
                Return "R"
            Case 51
                Return "S"
            Case 52
                Return "T"
            Case 53
                Return "U"
            Case 54
                Return "V"
            Case 55
                Return "W"
            Case 56
                Return "X"
            Case 57
                Return "Y"
            Case 58
                Return "Z"
            Case 59
                Return "["
            Case 60
                Return "\"
            Case 61
                Return "]"
            Case 62
                Return "^"
            Case 63
                Return "_"
            Case 64
                Return "`"
            Case 65
                Return "a"
            Case 66
                Return "b"
            Case 67
                Return "c"
            Case 68
                Return "d"
            Case 69
                Return "e"
            Case 70
                Return "f"
            Case 71
                Return "g"
            Case 72
                Return "h"
            Case 73
                Return "i"
            Case 74
                Return "j"
            Case 75
                Return "k"
            Case 76
                Return "I"
            Case 77
                Return "m"
            Case 78
                Return "n"
            Case 79
                Return "o"
            Case 80
                Return "p"
            Case 81
                Return "q"
            Case 82
                Return "r"
            Case 83
                Return "s"
            Case 84
                Return "t"
            Case 85
                Return "u"
            Case 86
                Return "v"
            Case 87
                Return "w"
            Case 88
                Return "x"
            Case 89
                Return "y"
            Case 90
                Return "z"
            Case 91
                Return "{"
            Case 92
                Return "|"
            Case 93
                Return "}"
            Case 94
                Return "~"
            Case 104
                Return ChrW(204)
            Case 106
                Return ChrW(206)
            Case Else
                Return " "
        End Select
    End Function
End Module

Έχουν δημοσιευτεί Δευτέρα, 30 Ιανουαρίου 2006 4:13 μμ από το μέλος Χρήστος Γεωργακόπουλος
Δημοσίευση στην κατηγορία: ,

Σχόλια:

Έχει απενεργοποιηθεί η προσθήκη σχολίων από ανώνυμα μέλη