700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 字符串生成条码(CODE128) 并实现在水晶报表上的条码打印!

字符串生成条码(CODE128) 并实现在水晶报表上的条码打印!

时间:2020-07-02 20:40:25

相关推荐

字符串生成条码(CODE128) 并实现在水晶报表上的条码打印!

最近的项目有一个条码打印的要求, 鉴于很多条码软件/库 都是收费的, 一直在找免费的. 在Google上搜了很久, 资料是不少, 但不是免费的 就是 没有源码的. 于是, 决定自己写代码解决. 继续Google, 看了下CODE128的原理, 貌似挺复杂, 还分3个字符集, 比较下来 决定使用CODESET B. 先简述一下CODE128的原理吧,分别以一个unicode字符作为起始符(Ì)和终止符(Î), 然后需要根据你的字符串, 计算出当前字符集的校验码: #region "本段为转载"

Code 128 Barcode Table

Example... To calculate the check digit for the barcode data string 'Code 128'

ValueTotal===== =====Start Code B104104Position 1 C 35 1 x 35 = 35Position 2 o 79 2 x 79 = 158Position 3 d 68 3 x 68 = 204Position 4 e 69 4 x 69 = 276Position 5 0 5 x 0 =0Position 6 1 17 6 x 17 = 102Position 7 2 18 7 x 18 = 126Position 8 8 24 8 x 24 = 192=====1197=====1197/103 = 11 remainder 64

#endregion

即根据上表, 把没个字符的value值 乘上 字符在字符串中的位置(从1开始算)

把没个乘积加起来

因为CODESET B 为104(这是规定, 不要问我为什么)

所以, 还要加上 104

最后, 除以103, 所得的余数就是 校验码 的value值, 然后在表中找到对应的字符

就可以了.

有心人应该注意到了, value>=95的时候, 是没有字符的(事实上还是有的,

只不过是unicode字符)

好了, 原理就阐述到这里, 还有什么不懂的话, 大家看看代码好了.

至于用在水晶报表上的问题, 我这里是配合条码字体的, 我会上传一个我正在用的字体.

代码如下:

Public Function StringToCode128(ByVal input As String) As String

Try

Dim endchar As Char

Dim total As Int64 = 104

Dim tmp As Integer

For i As Int16 = 1 To input.Length

tmp = Asc(input.Substring(i - 1, 1))

If tmp >= 32 Then

total += (tmp - 32) * i

Else

total += (tmp + 64) * i

End If

Next

Dim endAsc = total Mod 103

If endAsc >= 95 Then

Select Case endAsc

Case 95

endchar = "Ã"

Case 96

endchar = "Ä"

Case 97

endchar = "Å"

Case 98

endchar = "Æ"

Case 99

endchar = "Ç"

Case 100

endchar = "È"

Case 101

endchar = "É"

Case 102

endchar = "Ê"

End Select

Else

endAsc += 32

endchar = Chr(endAsc)

End If

Return "Ì" & input & endchar.ToString() & "Î"

Catch ex As Exception

WriteLog(ex.Message, ex.StackTrace)

Return String.Empty

Finally

End Try

End Function

我放大一下上面用到的特殊字符,大家看看清楚:

起始符:

终止符:

value95:

value96:

value97:

value98:

value99:

value100:

value101:

value102:

附件:/data/2348243 ©著作权归作者所有:来自51CTO博客作者kaliking的原创作品,如需转载,请注明出处,否则将追究法律责任 职场 休闲 报表字符串-条码

0

分享

微博 QQ 微信

收藏

上一篇:知道"向导无法创建报表... 下一篇:MS SQL Server中的C... kaliking

34篇文章,30W+人气,0粉丝

关注

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。