VB 用zint 库生成PDF417及其他条码

zint编译为dll后,只有两个DLL文件(libpng16.dll和zint.dll),可以在网上搜索。把这两个dll放到VB项目目录下面。

zint 是用c语言实现,网上也有开源代码。VB调用C函数,存在一些转换。本程序在没有实现自定义变量的情况下,

通过修改内存值,来达到生成不同条码目的。

Private Declare Function ZBarcode_Create Lib "zint.dll" () As Long
Private Declare Sub ZBarcode_Delete Lib "zint.dll" (ByVal symbol As Long)
Private Declare Function ZBarcode_Encode_and_Print Lib "zint.dll" (ByRef symbol As Long, ByVal content As String, ByVal Length As Long, ByVal rotate_angle As Long) As Long
Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)

上面为需要用到的zint库函数和VB直接修改内存函数,因为原名中,symbol指针的第一个参数,就是barcode类型数值。所以

在VB里,直接修改该指针地址的前4位,就会得到不同的条码或者二维码。成功后,在项目目录下会生成out.png文件


Private Sub Command1_Click()
'On Error GoTo err1

 

Dim hd, result As Long
Dim test As String
Dim change As Long
test = "12345679999mmmmmmmmmm000000333333333333eeeeeeeeeppppppppppppwwwf"

 


hd = ZBarcode_Create
change = hd
CopyMemory ByVal change, 55, 4        ‘55为PDF417编码,后面有各个编码对应不同值
result = ZBarcode_Encode_and_Print(ByVal (hd), test, Len(test), 0)
ZBarcode_Delete (hd)
MsgBox "sucess"
'err1:
'  If Err.Number = 49 Then   ’在调试时,会有dll函数调用约定错误

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值