<style type="text/css">
<!--
@page
{margin:2cm}
p
{margin-bottom:0.21cm}
-->
</style>
PDF417二维条码
<style type="text/css">
<!--
@page
{margin:2cm}
p
{margin-bottom:0.21cm}
-->
</style>每一个PDF417码是由3~90横列堆叠而成,而为了扫瞄方便,其四周皆有静空区,静空区分为水平静空区与垂直静空区,至少应为0.020寸
<style type="text/css">
<!--
@page
{margin:2cm}
p
{margin-bottom:0.21cm}
a:link
{}
-->
</style>
其中每一层都包括下列五个部份:
-
起始码。
-
左标区:在起始码後面,为一指示符号字元。
-
资料区:可容纳1~30个资料字元。
-
右标区:在资料区的後面,为一指示符号字元。
-
结束码:在横列之最右边。
除了起始码和结束码外,左标区、资料区和右标区的组成字元皆可称为字码(Codeword),每一个字码由17个模组(Modules)所构成,每一个字码又可分成4线条(或黑线)及4空白(或白线),每个线条至多不能超过6个模组宽。每个417码因资料大小不同,其行数及每行的资料模组数与字码数都可以从1至30不等。字码的组成如图所示。
PDF417二维条码的尺寸
因为符号的组合较有弹性,每一个PDF417二维条码可因应不同的实体设备印成不同的长宽比例与密度,以适应印刷条件及扫瞄条件的要求。其中每个模组宽X是PDF417码中最重要的尺寸之一,X值的最小限制为0.0075英寸(约0.191mm),在同一个条码符号中,X的值是固定不变的。
PDF417的最小高度与长度可由下列算式算出:
W=(17C+69)X+2Q
H=
R×Y+2Q
其中:
W=条码宽度,H=条码高度,X=条码模组宽,Y=层数
C=每层符号字元的总数(含左右标区),R=层高,Q=静空区大小
编码原理
计算机编码过程就是将可读信息转换成用于绘制条码的码字,然后加上必要的附加信息。其流程为:运用编码算法将有用信息转换成PDF417码字,再通过数据库查询把码字转换成对应的条空相间的符号字符,最后在计算机上将那些层层相叠的条空绘出,即二维条形码图像。
<style type="text/css">
<!--
@page
{margin:2cm}
p
{margin-bottom:0.21cm}
-->
</style>
符号字符簇及计算 417条码有三个互不相交的符号字符簇,每个簇都有928个不同的组合的符号字符对应着不同的码字。相邻的行用不同的簇的符号字符。这样,即使不同分隔条译码器也能分辨出扫描是否通过行之间的边界。417条码使用的簇号只有三个,即第0簇,第3簇,第6簇。
每行只使用同一簇中的符号字符。同一簇每三行重复一次。第一行使用第0簇的符号字符,第二行使用第3簇的符号字符,第三行使用第6簇的符号字符,第四行又重复使用第一行的内容,余此类推。行号由上至下递增,最上一行为第一行。
对于一个特定的符号字符,其簇号由下式确定:簇号=(b1-b2+b3-b4+9)mod9例如对图中的符号字符,其簇号=(5-1+1-2+9)mod9=3
对于每一个特定的行使用的符号字符的簇号由下式确定:簇号=[(行号-1)mod3]×3
|
左右行指示符号的值确定 每行有行左指示并以行右指示为结束,指示的字符值依赖于特殊的行号,总行数为3~90行,总列数为1~30列,行的指示值如下:
这里xi=INT[(行号-1)/3] i=1,2……90 y=INT(行数-1)/3 z=(错误纠正级别)*3+(行数-1)mod3 v=数据区中的列数减1 ci=第i行的簇号
|
<style type="text/css">
<!--
@page
{margin:2cm}
p
{margin-bottom:0.21cm}
a:link
{}
-->
</style>
二维码PDF417
的编码
PDF417的编码分为数据码字编码、错误纠正码字编码、前后行指示符编码3个部分。
有3种数据压缩模式:文本压缩模式(TC)、字节压缩模式(BC)、数字压缩模式(NC)。
通过应用模式锁定和转移码字,可用三种压缩模式中的一种来编码,对三个符号簇中的任何一个序列,每个符号都赋予0~928中的一个值,表示如下:
值
|
用途
|
0~899
|
目前的压缩方式和GLI解释的编码数据
|
900
|
锁住TC模式
|
901
|
锁住BC模式(编码的字节数不是6的倍数)
|
902
|
锁住NC模式
|
913
|
把下一个码字切入BC模式
|
922,923,928
|
用于MacroPDF 417
|
921
|
读出设备初始化
|
903~912和914~920
|
预留将来用
|
模式锁定码字是用于由一种模式转换到另一种模式时,它在下次模式更换之前一直有效。
模式转移只对转换后的第一个码字有效。
PDF4170
簇
1 文本压缩模式
在文本压缩模式中有四种子模式即大写字母型模式;小写字母型模式;混合型模式;标点型模式。这四种子模式中定义了30个字符值为0~29。两个文本字符可编码成一个417字符,每个417符号值等于[(30×H)+L],其中H是第一个文本字符,L是第二个文本字符。
例如字符串“Bc:401”可以编码为字符序列B,ll,c,:,ml,4,0,1
查表找出对应值(1,27,2,28,14,4,0,1)
2个一组分为(1,27),(2,28),(14,4),(0,1)
符号字符的字码为(1*30+27),(2*30+28),(14*30+4),(0*30+1)
(57),(88),(424),(1)
然后用符号字符表示
2 字节压缩模式
利用字节压缩模式可以把一系列的字节压缩成417的码字。这里主要利用了基数256到基数900的转换。如果压缩的字节数是6的倍数,则根据模式锁定在924来处理编码数据,按照从左到右的顺序,通过基数256到基数900的转换,6个字节被编译成5个码字。如果压缩的字节数不是6的倍数,则码字前导字节是901,对于被6整除多剩余的字节,每个字节对应一个码字,然后逐字节用码字表示。
如6个字节A1,A2,A3,A4,A5,A6转换为5个码字S1,S2,S3,S4,S5
A1 *256^5 + A2 * 256^4 + A3 * 256^3 + A4 * 256^2 + A5 * 256^1 + A6 *256^0 =
S1 *900^4 + S2 * 900^3 + S3 * 900^2 + S4 * 900^1 + S5 * 900^0
A1,A2,A3,A4,A5,A6, S1,S2,S3,S4,S5全部以10进制带入。
123456
1 *256^5 + 2 * 256^4 + 3 * 256^3 + 4 * 256^2 + 5 * 256^1 + 6 * 256^0 =
1* 900^4 +
620* 900^3 +
89* 900^2 +
74* 900^1 +
864* 900^0
查表确定符号字符
3 数字压缩模式
利用基数10至基数900的转换,数字压缩模式能够把3个十进制的数压缩成一个417的字符,十位数字序列用下面的代数编码:
1.将数字分成44位为一组,最后一组可以小于44位;
2.对每组,在前面数字加入“1”,然后进行10至900的基数转换。
例:“1000213298174002”,由于是15位,小于44位,只能成为一组,在前面导入1,实行10至900的转换。
1000213298174002=1×9005+624×9004+434×9003+632×9002+282×900+202,所以417条码的编码序列是(1,624,434,634,282,202)
查表确定符号字符
417条码符号的型号是矩形,当码字的总数不能正好填充一个矩形时,用码字900作为虚拟码字填充,必须放在错误纠正码字前。
PDF417二维条码的错误纠正能力
PDF417二维条码的一个重要特性是其自动纠正错误的能力较高,不过PDF417的错误纠正能力与每个条码可存放的资料量有关,PDF417码将错误复原分为9个等级,其值从0到8,级数愈高,错误纠正能力愈强,但可存放资料量就愈少,一般建议编入至少10%的检查字码。资料存放量与错误纠正等级的关系如表1所示。表2则建议不同的字数所适用的错误纠正等级。
最大储存量(错误纠正等级为0)为每个符号表示1850个大小写字母或2710个数字或1108个字节
表1可存放资料量与错误纠正等级对照表
错误纠正等级
|
纠正码数
|
可存资料量(位元)
|
自动设定
|
64
|
1024
|
0
|
2
|
1108
|
1
|
4
|
1106
|
2
|
8
|
1101
|
3
|
16
|
1092
|
4
|
32
|
1072
|
5
|
64
|
1024
|
6
|
128
|
957
|
7
|
256
|
804
|
8
|
512
|
496
|
表2PDF417的建议错误纠正等级
资料字码数
|
错误纠正等级
|
1~40
|
2
|
40~160
|
3
|
161~320
|
4
|
321~863
|
5
|
分享到:
相关推荐
解决zxing二维码pdf417中文乱码问题 编译.net 2.0 4.0
二维码PDF417的DLL~~~~~~~~~~~~~~~~~~~~~~~~~~~~
二维码PDF417码有长度短,破损都可以扫描等优点.最近做项目需要用到二维码PDF417码,直接打印,不显示预览框.找了很久,这些资料都比较难找到.现在共享给位,希望有所帮助.delphi7,rbserver7下调试成功.
PDF417 二维码编码平台
PDF417.pdf417.PDF417Writer writer = new PDF417.pdf417.PDF417Writer(); PDF417.common.BitMatrix matrix = writer.encode("newtest1111", PDF417.BarcodeFormat.PDF_417, 300, 200); System.Drawing.Image img = ...
C#生成PDF417格式二维码,直接引用,使用简单,[不支持中文]
C# 开发 “pdf417 二维码”,支持中文,源自网络。
pdf417二维码源码,可以打印pdf格式。
二维码PDF417编码和解码的源代码
二维码PDF417编码和解码的源代码,可将它们修改后做成匹配的编码和解码对。-The source code of two-dimensional barcode PDF417 encoding and decoding, they can be modified to become a matched encoding and ...
WEB网页生成二维码,利用Javascript脚本调用二维码插件制码,在IE/FireFox/Chrome三大浏览器都实现,典型案例,可以生成PDF417、QrCode、DataMatrix和HanXin二维条码,附有详细接口文档参考。
可以根据TXT文件中的内容生成PDF417格式的二维码,并保存TMP文件,开发者可以调用该工具生成TMP后,再调用
2012年最新二维码编码和解码程序套件,是开发二维条码生成和自动识别应用参考实例。自动识别PDF417、QRCODE、DataMatrix和HanXin条码图形,同时又能将文本、...二维码种类包括:PDF417,Qr_Code,DataMatrix和HanXin等
PDF417二维码工具
$type = "PDF417"; $barcodeobj = new TCPDF2DBarcode($code, $type); $barcodeobj->getBarcodePNG(); ?> 最后一行是生成image / png数据,可以把这个输出封装在一个网页里比如 <html> <body> </...
PDF417二维码编码算法优化及计算机编程实现
私有属性是条码类型各自特有的属性,比如一维码基本只有模块高度这一属性,而二维码PDF417码的属性有:外形比、行数、列数、YX放大比例、是否采用缩短形、纠错级别、纠错级别与纠错码词百分比等。 所有的参数都有一...
里面包含QRcode,PDF417国家标准以及Datamatrix的ISO标准(英文版)。
vb开发二维码的经典完整版范例,用手机quickmark测试可轻松读取; 包换关键库文件 EnCodeQr.dll EnCodePdf.dll 注意放到system下注册 regsvr32
功能:支持打印的种类为:pdf417、QrCode /* StrText 文本 hscale 宽 vscale 高 path 临时图片生成路径 */ int _stdcall MakePdf417(char *StrText,int hscale,int vscale,char *path = ""); /* StrText 文本 ...