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函数调用约定错误49,生产exe不会有此错误,原因不知
'     If (hd > 0) Then
'        ZBarcode_Delete (hd)
'    End If
'
'     Err.Clear
'  End If

 

End Sub
'   /* Tbarcode 7 codes */
'#define BARCODE_CODE11      1
'#define BARCODE_C25MATRIX   2
'#define BARCODE_C25INTER    3
'#define BARCODE_C25IATA     4
'#define BARCODE_C25LOGIC    6
'#define BARCODE_C25IND      7
'#define BARCODE_CODE39      8
'#define BARCODE_EXCODE39    9
'#define BARCODE_EANX        13
'#define BARCODE_EANX_CHK        14
'#define BARCODE_EAN128      16
'#define BARCODE_CODABAR     18
'#define BARCODE_CODE128     20
'#define BARCODE_DPLEIT      21
'#define BARCODE_DPIDENT     22
'#define BARCODE_CODE16K     23
'#define BARCODE_CODE49      24
'#define BARCODE_CODE93      25
'#define BARCODE_FLAT        28
'#define BARCODE_RSS14       29
'#define BARCODE_RSS_LTD     30
'#define BARCODE_RSS_EXP     31
'#define BARCODE_TELEPEN     32
'#define BARCODE_UPCA        34
'#define BARCODE_UPCA_CHK        35
'#define BARCODE_UPCE        37
'#define BARCODE_UPCE_CHK        38
'#define BARCODE_POSTNET     40
'#define BARCODE_MSI_PLESSEY 47
'#define BARCODE_FIM     49
'#define BARCODE_LOGMARS     50
'#define BARCODE_PHARMA      51
'#define BARCODE_PZN     52
'#define BARCODE_PHARMA_TWO  53
'#define BARCODE_PDF417      55
'#define BARCODE_PDF417TRUNC 56
'#define BARCODE_MAXICODE    57
'#define BARCODE_QRCODE      58
'#define BARCODE_CODE128B    60
'#define BARCODE_AUSPOST     63
'#define BARCODE_AUSREPLY    66
'#define BARCODE_AUSROUTE    67
'#define BARCODE_AUSREDIRECT 68
'#define BARCODE_ISBNX       69
'#define BARCODE_RM4SCC      70
'#define BARCODE_DATAMATRIX  71
'#define BARCODE_EAN14       72
'#define BARCODE_VIN             73
'#define BARCODE_CODABLOCKF  74
'#define BARCODE_NVE18       75
'#define BARCODE_JAPANPOST   76
'#define BARCODE_KOREAPOST   77
'#define BARCODE_RSS14STACK  79
'#define BARCODE_RSS14STACK_OMNI 80
'#define BARCODE_RSS_EXPSTACK    81
'#define BARCODE_PLANET      82
'#define BARCODE_MICROPDF417 84
'#define BARCODE_ONECODE     85
'#define BARCODE_PLESSEY     86
'
'    /* Tbarcode 8 codes */
'#define BARCODE_TELEPEN_NUM 87
'#define BARCODE_ITF14       89
'#define BARCODE_KIX     90
'#define BARCODE_AZTEC       92
'#define BARCODE_DAFT        93
'#define BARCODE_MICROQR     97
'
'    /* Tbarcode 9 codes */
'#define BARCODE_HIBC_128    98
'#define BARCODE_HIBC_39     99
'#define BARCODE_HIBC_DM     102
'#define BARCODE_HIBC_QR     104
'#define BARCODE_HIBC_PDF    106
'#define BARCODE_HIBC_MICPDF 108
'#define BARCODE_HIBC_BLOCKF 110
'#define BARCODE_HIBC_AZTEC  112
'
'    /* Tbarcode 10 codes */
'#define BARCODE_DOTCODE         115
'#define BARCODE_HANXIN          116
'
'    /*Tbarcode 11 codes*/
'#define BARCODE_MAILMARK        121
'
'    /* Zint specific */
'#define BARCODE_AZRUNE      128
'#define BARCODE_CODE32      129
'#define BARCODE_EANX_CC     130
'#define BARCODE_EAN128_CC   131
'#define BARCODE_RSS14_CC    132
'#define BARCODE_RSS_LTD_CC  133
'#define BARCODE_RSS_EXP_CC  134
'#define BARCODE_UPCA_CC     135
'#define BARCODE_UPCE_CC     136
'#define BARCODE_RSS14STACK_CC   137
'#define BARCODE_RSS14_OMNI_CC   138
'#define BARCODE_RSS_EXPSTACK_CC 139
'#define BARCODE_CHANNEL     140
'#define BARCODE_CODEONE     141
'#define BARCODE_GRIDMATRIX  142
'#define BARCODE_UPNQR           143

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值