PDF417二维条码

每一个PDF417码是由3~90横列堆叠而成,而为了扫瞄方便,其四周皆有静空区,静空区分为水平静空区与垂直静空区,至少应为0.020寸

其中每一层都包括下列五个部份:

  1. 起始码。
     

  2. 左标区:在起始码後面,为一指示符号字元。
     

  3. 资料区:可容纳1~30个资料字元。
     

  4. 右标区:在资料区的後面,为一指示符号字元。
     

  5. 结束码:在横列之最右边。

除了起始码和结束码外,左标区、资料区和右标区的组成字元皆可称为字码(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码字,再通过数据库查询把码字转换成对应的条空相间的符号字符,最后在计算机上将那些层层相叠的条空绘出,即二维条形码图像。

符号字符簇及计算
  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行的簇号

二维码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

二维码 PDF417相关推荐

  1. 二维码PDF417简介及其解码实现(zxing-cpp)

    二维码PDF417是一种堆叠式二维条码.PDF417条码是由美国SYMBOL公司发明的,PDF(Portable Data File)意思是"便携数据文件".组成条码的每一个条码字 ...

  2. Atitit 二维码和条码的历史发展 1.发展历程 编辑提及二维码的诞生,我们还得倒回至上个世纪 60 年代之后的日本,虽然 1945 年的第二次世界大战之中日本沦为战败国,可是在经济方面日本却进入

    Atitit 二维码和条码的历史发展 发展历程 编辑提及二维码的诞生,我们还得倒回至上个世纪 60 年代之后的日本,虽然 1945 年的第二次世界大战之中日本沦为战败国,可是在经济方面日本却进入了迅速 ...

  3. 二维码简介_二维码基本概念_二维码基本原理

    一.二维码简介_二维码基本概念_二维码基本原理 1.二维码又称二维条码,常见的二维码为QR Code,QR全称Quick Response,是一个近几年来移动设备上超流行的一种编码方式,它比传统的Ba ...

  4. 关于二维码,你知道多少?

    "请扫场所码"."乘车请扫码"."支付请扫码"等等.如今,二维码作为移动支付.信息查询.身份识别等功能的载体,已经渗透到我们生活的方方面面, ...

  5. 二维码技术知识点搜集

    1.1 二维码技术 二维条码/二维码(2-dimensional bar code)是用某种特定的几何图形按一定规律在平面(二维方向上)分布的黑白相间的图形记录数据符号信息的:在代码编制上巧妙地利用构 ...

  6. 利用zxing读写PDF417码制的二维码

    2019独角兽企业重金招聘Python工程师标准>>> 项目中需要用到二维码,二维码的码制是PDF417,在做了一番研究之后发现zxing是个不错的开源工具(代码托管在google上 ...

  7. NO.83 常用二维码对比(QR、PDF417、DM、汉信码)

    以下信息仅代表目前已知情况,请随时关注各标准最新变化-- QR(日) PDF417(美) DM(韩) 汉信码(中) 备注 发明时间 1994年 1992年 1989年 2005年 是否中国国家标准 是 ...

  8. PDF417 (二维码)

    PDF417 (二维码): 多行组成的条形码 不需要连接一个数据库,本身可存储大量数据 应用于:医院.驾驶证.物料管理.货物运输 当条形码受一定破坏时,错误纠正能使条形码能正确解码 PDF417, 是 ...

  9. Java生成PDF417二维码

    pdf417二维码,比较头疼,网上找老长时间的资料,最后翻出来了个Itext.jar,那么就简单的说说如何使用iText.jar生成pdf417二维码 1,老规矩下载jar文件,我的资源里有----- ...

  10. 利用iText和zxing生成和读pdf417二维码

    为什么80%的码农都做不了架构师?>>>    前面的一些博文中已经提到了zxing这个开源工具生成和读取二维码图片,仅从学习的角度来看,可以告一个段落.在实际的生产环境中,应用zx ...

最新文章

  1. java lombok.getter_lombok注解Getter和Setter的使用
  2. python的工作方向-python职业发展方向有哪些,各有什么优劣?
  3. 已知坐标求方位角_由方位角高度角求赤经赤纬
  4. mysql高效sql语句_高效SQL优化 非常好用的SQL语句优化34条
  5. python turtle 怎么设计背景颜色_Python, turtle海龟作图,如何添加背景图片?
  6. android 自定义dialog 定时关闭,Android 快速实现自定义 Dialog
  7. Matlab中3条曲线归一,matlab中关于数据归一化函数mapminmax的使用
  8. linux锁定账号 让其不能修改密码,passwd - 用于让用户可以更改自己的密码
  9. rhcsa第二天笔记
  10. Xcode10升级问题:Multiple commands produce Info.plist
  11. 2014-03-18
  12. DirectShow笔记
  13. 隐形缝针法_裤腰大了怎么改小的隐形针法
  14. 涡旋电磁波:无线通信的革命
  15. 在MySQL数据库中进行模糊查询_如何实现mysql数据库单表的模糊查询?
  16. pacman 查询_pacman命令
  17. 为什么博士后的年薪远远高于刚入职的大学老师?
  18. 图像算法---贝塞尔曲线
  19. java8新特性学习笔记之唠唠“匿名内部类与lambda”
  20. dpi和ppi换算_ppi和dpi换算(1ppi等于多少dpi)

热门文章

  1. 痞子衡嵌入式:恩智浦i.MX RT1xxx系列MCU启动那些事(6)- Bootable image格式与加载(elftosb/.bd)...
  2. 2021李宏毅机器学习笔记
  3. opencv 二值化图像 像素统计 countNonZero
  4. 【快速、批量】修改图片格式
  5. Hive窗口分析函数(案例详细讲解)
  6. 关于主机后面板耳机插孔有声音前面板没有声音的处理办法
  7. protues 快捷键和元件
  8. 学一点Wi-Fi:WAPI
  9. 创建数独小游戏uniapp/vue
  10. Scapy 中文文档:三、使用方法