基于VC++的二维条码PDF417编解码系统设计
2012-08-14王卫亚
黄 乐,王 斌,王卫亚
(长安大学 信息工程学院,陕西 西安 710064)
二维条码PDF417是一种高密度、高信息含量的便携式数据文件,是实现证件及卡片等大容量、高可靠性信息自动存储、携带并可用机器自动识读的理想手段。它可以将照片、指纹、掌纹、签字、声音、文字等凡可数字化的信息进行编码。它作为一种新的信息存储和传递技术,从诞生之初就受到了国际社会的广泛关注。经过几年的努力,现已被广泛地应用在国防、公共安全、交通运输、工业、商业、金融、海关及政府管理等领域。PDF417最大的优势在于其庞大的数据容量和极强的纠错能力,同时对印制要求不高,可用多种阅读设备阅读,另外,码制已公开且形成国际标准,我国也已制定了PDF417码的国标。此外,二维条码还具有成本低、信息可随载体移动、不依赖于数据库和计算机网络、保密防伪性强等优点,再结合我国人口多、底子薄、计算机网络投资资金难度较大、对证件的防伪措施要求较高等特点,可以预见,二维条码PDF417在我国极有推广价值。本文结合此情况对PDF417的编码和解码进行分析和研究,开发出一套二维条码PDF417编码和解码系统。
1 二维条码PDF417简介
1.1 二维条码PDF417结构
PDF417条码符号是一个多行结构[1-2]。符号的顶部和底部为空白区,上下空白区之间为多行结构。每行数据符合字符数相同,行与行左右对齐直接衔接,其最小行数为3,最大行数为90,符号结构图如图1所示[1]。
图1 PDF417条码符号结构图Fig.1 Structure diagram of PDF417 barcode symbol
每行构成如下:(A)左空白区;(B)起始符;(C)左行指示符号字符;(D)1~30个数据符号字符;(E)右行指示符号字符;(F)终止符;(G)右空白区。其中每一符号字符由4个条和4个空构成,自左向右从条开始,每一个条或空包含1~6个模块,在一个符号字符中,4个条和4个空的总模块数为17,因此称之为417码。
1.2 二维条码PDF417编码原理
PDF417有 3种数据压缩模式[1]:文本压缩模式(TC)、数字压缩模式(NC)和字节压缩模式(BC)。在一个条码符号编码中,可通过应用模式锁定/转移(Latch/Shift)码字进而运用多种模式表示数据。
文本压缩模式(TC)主要包括4个子模式[3]:大写字母型子模式(Alpha)、小写字母型子模式(Lower Case)、混合型子模式(Mixed)和标点型子模式(Punctuation)。子模式的设置是为了更有效地表示数据,每种子模式选择了文件中出现频率较高的一组字符组成的字符集。在子模式中,每一个字符对应一个值 (0~29),这样可用一个单独的码字表示一个字符对,表示字符对的码字计算公式如下:码字=30×H+L,其中:H、L分别表示字符对中的高位和低位字符值。
数字压缩模式(NC)是指从基10至基900的数据压缩的一种方法。它能把约3个数字位用一个码字表示,一般当连续的数字位数大于13时用此种模式。在数字模式下,根据以下算法对数字位进行编码:1)将数字序列从左向右每44位分为一组,最后一组包含的数字位可少于44个。2)对每一组数字:首先在数字序列前加一位有效数字1(即前导位),然后执行基10至基900的转换。例如:数字序列000213298174000的表示过程为:首先,对其进行分组。因其共有15位,故只有一组;其次,在其最左边加1,将得到数字序列1000213298174000;最后将其转移成基900的码字序列,结果为:1,624,434,632,282,200。
字节压缩模式(BC)是通过基256至基900的转换,将字节序列转换为码字序列。对于字节压缩模式,有两个模式锁定(901,924)。当所要表示的字节总数不是6的倍数时,用模式锁定901;当所要表示的字节总数是6的倍数时,用模式锁定924。在应用模式锁定924的情况下,6个字节可通过基256至基900的转换用5个码字表示,从左到右进行转换。例如:一个二位16进制的数据序列01H,02H,03H,04H,05H,06H (H代表16进制)可表示为一个码字序列924,1,620,89,74,846。
1.3 错误检测与纠正码字的计算
对于一组给定的数据码字,错误纠正码字根据Reed-Solomon 错 误控制码算法来计算[1,4-5]。
第一步:建立符号数据多项式。
符号多项式如下:
式中di是数据码字。
第二步:建立纠正码字的生成多项式。
k个错误纠正码字的生成多项式如下:
式中 k为错误纠正码字 ci(i=0...k-2,k-1)的个数。
第三步:错误纠正码字ci的计算。
对一组给定的数据码字和一选定的错误纠正等级,ci为符号数据多项 d(x)式乘以 xk,然后除以生成多项式 g(x),所得余式的各系数的补数。
2 二维条码PDF417编解码软件系统设计
2.1 软件系统界面设计
本文采用VC++6.0作为软件系统开发工具,搭建前台人机界面,该界面主要分为3部分,分别是编码区、解码区和其他按钮操作区。在编码区主要操作有编码文本输入、纠错等级和条码列数的设置、条码的生成及保存。在解码区主要操作有选择待解码的条码和对条码进行解码。在其他按钮操作区主要实现条码的打印和退出系统的功能。
2.2 PDF417条码软件编码实现
由于二维条码PDF417可将照片、声音、文本等多种信息进行编码,本文实现的是常用的文本信息编码。计算机编码就是指将相关文本信息转换成可实现条码绘制的码字,同时再加入相关的附加信息。基本流程:利用编码算法将文本信息转换成PDF417码字,然后通过查询数据库将码字进一步转换成相对应的条空相间(黑白相间)的符号字符,最后计算机绘制出这些黑白相间的条空,即得到本文实现的PDF417二维条码图像。具体的软件实现流程如图2所示[5]。
图2 二维条码PDF417编码流程图Fig.2 Flow chart of 2d barcode PDF417 encoding
2.3 PDF417条码软件解码实现
理论上,解码的过程是编码的逆过程,通过解码不但可以实现对条码的识别,而且还可以进一步验证编码的正确性。首先计算机要获取到待解码的PDF417二维条码,然后对该条码进行全部扫描,并将扫描结果存在一个二维数组中,接下来将扫描到的条码符号转换成码字,再将码字按照不同的编码规则转化为可读的字符、汉字等相关文本信息并在计算机屏幕上显示出来[6]。本文通过对系统编码实现的PDF417二维条码进行解码对比,解码得到的文本信息和编码时输入的文本信息完全一致,也进一步验证了编码的准确性。
2.4 软件系统验证
以原始条码文本信息“长安大学直属国家教育部,是教育部和交通运输部、陕西省人民政府共建的国家211工程重点建设大学0123456789abcdefghPDF417”为例,利用该系统对其进行编码和解码,其中纠错等级和条码列数分别设置为1和5,实现界面如图3所示,最终编码生成的PDF417二维条码如图4所示,以bmp格式将其保存在指定的文件夹中。最后点击打印编码按钮,选择以Adobe PDF Converter类型打印编码后的PDF417二维条码,结果如图5所示。
图3 二维条码PDF417编解码软件实现界面Fig.3 Software interface of 2d barcode PDF417 codec
图4 二维条码PDF417编码实验结果Fig.4 Experiment result of 2d barcode PDF417 encoding
图5 二维条码PDF417编码打印测试结果Fig.5 Result of 2d barcode PDF417 print test
3 结束语
文中在分析和研究二维条码PDF417的结构和编解码原理的基础上,以VC++6.0为开发环境,开出一套简易的二维条码PDF417编解码系统,实现了对汉字、字母、数字等文本信息进行编码,以及对该系统生成的PDF417二维条码进行解码。该系统编码精确,速度快,方便灵活,同时还实现了对编码后的PDF417二维条码的解码和打印。此外,该系统再配置上其它相关硬件控制设备,即可制成一套PDF417二维条码打印和扫描系统。总之,二维条码在我国有着广阔的应用前景,PDF417二维条码技术在我国的推广应用也必将为我国信息产业的发展和现代化的经济建设带来可观的社会效益和经济效益。
[1]中华人民共和国国家标准GB/T17172-1997.四一七条码[S].1997.
[2]谢金龙,武献宇,杨立雄,等.PDF417二维条码的设计与实现[J].物流工程与管理,2011,33(4):88-89.XIE Jin-long, WU Xian-yu, YANG Li-xiong, et al.Design and implementation of two-dimension barcode[J].Logistics Engineering and Management,2011,33(4):88-89.
[3]武莎莎.基于Delphi的PDF417条码编码系统[J].山西电子技术,2009(5):41-42.WU Sha-sha.PDF417 Barcode encoding system based on Delphi technology [J].Shanxi Electronic Technology,2009(5):41-42.
[4]赵博,黄进.二维条码PDF417编码原理及其软件实现[J].包装工程,2007,28(1):96-98.ZHAO Bo,HUANG Jin.Code theory of two dimension bar code PDF417 and its creating software[J].Packaging Engineer,2007,28(1):96-98.
[5]孙静,陈伟.PDF417二维条码的编码技术及其在Visual Basic下的实现 [J].西安石油大学学报:自然科学版,2005,20(1):77-80.SUN Jing,CHEN Wei.Coding technology of PDF417 two dimensional bar code and implementation in Visual Basic[J].Journal of Xi’an Shiyou University:Natural Science Edition,2005,20(1):77-80.
[6]李媛,李红星,张益农.二维编解码技术研究与应用[J].北京联合大学学报:自然科学版,2007,21(4):10-14.LI Yuan, LI Hong-xing, ZHANG Yi-nong.Research and Application of Encoding and Decoding on two-dimension bar code [J].Journal of Beijing Union University:Natural Sciences,2007,21(4):10-14.