对vb.net 打印条形码code39、code128A、code128C、code128Auto(picturebox和打印机)封装类一文的补充

在【精选】vb.net 打印条形码code39、code128A、code128C、code128Auto(picturebox和打印机)封装类_vb.net打印标签_WormJan的博客-CSDN博客

 这篇文章中,没有对含有字母的编码进行处理。这里另开一篇帖子,处理这种情况。

在那篇文章中,需要修改以下方法:

//添加对字母的支持
Private Shared Function code128_num()
    Dim code128 As New Dictionary(Of String, String())
    code128.Add("0", {"bssbbbsbbss", 16})
    code128.Add("1", {"bssbbbssbbs", 17})
    code128.Add("2", {"bbssbbbssbs", 18})
    code128.Add("3", {"bbssbsbbbss", 19})
    code128.Add("4", {"bbssbssbbbs", 20})
    code128.Add("5", {"bbsbbbssbss", 21})
    code128.Add("6", {"bbssbbbsbss", 22})
    code128.Add("7", {"bbbsbbsbbbs", 23})
    code128.Add("8", {"bbbsbssbbss", 24})
    code128.Add("9", {"bbbssbsbbss", 25})
    code128.Add("A", {"bsbsssbbsss", 33})
    code128.Add("B", {"bsssbsbbsss", 34})
    code128.Add("C", {"bsssbsssbbs", 35})
    code128.Add("D", {"bsbbsssbsss", 36})
    code128.Add("E", {"bsssbbsbsss", 37})
    code128.Add("F", {"bsssbbsssbs", 38})
    code128.Add("G", {"bbsbsssbsss", 39})
    code128.Add("H", {"bbsssbsbsss", 40})
    code128.Add("I", {"bbsssbsssbs", 41})
    code128.Add("J", {"bsbbsbbbsss", 42})
    code128.Add("K", {"bsbbsssbbbs", 43})
    code128.Add("L", {"bsssbbsbbbs", 44})
    code128.Add("M", {"bsbbbsbbsss", 45})
    code128.Add("N", {"bsbbbsssbbs", 46})
    code128.Add("O", {"bsssbbbsbbs", 47})
    code128.Add("P", {"bbbsbbbsbbs", 48})
    code128.Add("Q", {"bbsbsssbbbs", 49})
    code128.Add("R", {"bbsssbsbbbs", 50})
    code128.Add("S", {"bbsbbbsbsss", 51})
    code128.Add("T", {"bbsbbbsssbs", 52})
    code128.Add("U", {"bbsbbbsbbbs", 53})
    code128.Add("V", {"bbbsbsbbsss", 54})
    code128.Add("W", {"bbbsbsssbbs", 55})
    code128.Add("X", {"bbbsssbsbbs", 56})
    code128.Add("Y", {"bbbsbbsbsss", 57})
    code128.Add("Z", {"bbbsbbsssbs", 58})
    code128.Add("StartA", {"bbsbssssbss", 103})
    code128.Add("StartB", {"bbsbssbssss", 104})
    code128.Add("StartC", {"bbsbssbbbss", 105})
    code128.Add("Stop", {"bbsssbbbsbsbb", 106})
    Return code128
End Function

有人私信我说,让写一个获得code128B的方法。下面把代码贴上来:

Public Shared Function get_code_128B(ByVal barcode As String)
    Dim strr As String = barcode
    Dim code128 As Dictionary(Of String, String()) = code128_num()
    Dim code128_byid As Dictionary(Of String, String()) = code128_table()

    Dim chr As String, barstr As String, final As String = ""

    Dim start As String = code128.Item("StartB")(0)

    final += start

    '数据
    For i = 0 To strr.Length - 1
        chr = strr.Substring(i, 1)
        barstr = code128.Item(chr)(0)
        final += barstr
    Next i

    '校验
    Dim exam As Int16
    exam = code128.Item("StartB")(1)
    For i = 0 To strr.Length - 1
        exam += code128.Item(strr.Substring(i, 1))(1) * (i + 1)
    Next i

    exam = exam Mod code128.Item("StartA")(1)   '注意不是StartB。应该是103
    Dim excode As String = code128_byid.Item(exam)(4)


    final &= excode

    'stop
    final += code128.Item("Stop")(0)
    Return final
End Function

还有一点就是使用128C和包含128C混合编码的时候,不仅要判断是否是偶数个,还要判断是否全为数字,可以这样判断:

Dim k As Boolean = System.Text.RegularExpressions.Regex.IsMatch(“条码”, "^[0-9]+$")

经过测试没有发现遇到 I  生成失败的问题。

对vb.net 打印条形码code39、code128A、code128C、code128Auto(picturebox和打印机)封装类一文的补充_第1张图片

你可能感兴趣的:(.net,java,前端)