1. 什么是GS1 Datamatrix码?
GS1 Datamatrix不是普通的Datamatrix,它以Datamatrix编码为基础,符合GS1规则。GS1码是由国际物品编码组织(GS1)制定的一种编码系统,该系统能在全球范围内对货物、服务、资产和位置进行唯一标识,并将这些信息进行编码。
1-1)请在开始之前在手机上安装好能识别GS1 Datamatrix码制的APP,此APP来源请问您的客户索取或从中国物品编码中心 (ancc.org.cn)上下载安装。
1-2)APP扫描后会出现下面类似内容,否则的话要么您的APP不能识别GS1 Datamatrix,要么您的码图不是GS1 Datamatrix。“类似”的意思是不同的APP显示界面会有所不同。
1-3)GS1条形码的官方说明文件下载
有关GS1条形码的知识和概念,请务必阅读下面这本手册。
下载地址:
(英文版)
www.haiyaatech.com/support/download/temp/doc/GS1_DataMatrix_Introduction_and_technical_overview.pdf
(中文版)
www.haiyaatech.com/support/download/temp/doc/2018-GS1 DataMatrix.pdf
1-4)GS1条形码标识符号清单Application Identifier
http://www.haiyaatech.com/bbs/article.asp?Id=1439&page=1
2. 在VariPrint中实现GS1 Datamatrix码制
2-1)制作方法:黑色二维码控件----Data Matrix条形码类型----黑油墨扩展补偿(像素)
2-2)先举例2个,不同处是“黑油墨扩展补偿(像素)”参数设置
举例1:1,0,1,2.4,-2,-1,1,1,0,1.6,1
其中,
1--补偿1个像素
0--默认
1--默认
2.4--尺寸
-2--自动正方形
-1--最优方式
1--GS1
1--添加白边
0--不反显
1.6--X宽度方向缩放
1--Y纵向方向缩放
举例2:0,0,1,20,-2,-1,1,0,0,1,1
0--不设置补偿,因为尺寸够大。
0--默认
1--默认
20--尺寸
-2--自动正方形
-1--最优方式
1--GS1
0--不添加白边
0--不反显
1--X宽度方向缩放
1--Y纵向方向缩放
特别提醒:
颜色设置必须CMYK。如果默认设置RGB,加白边和XY缩放无效,左上角会出现小的白块(虽然不影响阅读)。
条码缩放扩展设置:在20210729版本更新后不需要设置,尺寸按参数最后呈现。
2-3)“黑油墨扩展补偿(像素)”参数含义说明
第一个参数:补偿值, 单位是像素。注:一般在小尺寸码图时使用,用来补偿油墨网点扩展导致的图形模糊而无法识别,或阅读等级低。
第二个参数: 0(固定)
第三个参数: 1(固定)
第四个参数: 限制尺寸,单位是mm,根据不同打印分辨率计算最接近这个限制尺寸的条码,不会超过该值,可能小于该值
第五个参数: DataMartix条码Size类型
-2: 根据内容自动计算正方形Size
-1: 根据内容自动计算长方形Size
0 : SIZE 10 * 10
1 : SIZE 12 * 12
2 : SIZE 14 * 14
3 : SIZE 16 * 16
4 : SIZE 18 * 18
5 : SIZE 20 * 20
6 : SIZE 22 * 22
7 : SIZE 24 * 24
8 : SIZE 26 * 26
9 : SIZE 32 * 32
10 : SIZE 36 * 36
11 : SIZE 40 * 40
12 : SIZE 44 * 44
13 : SIZE 48 * 48
14 : SIZE 52 * 52
15 : SIZE 64 * 64
16 : SIZE 72 * 72
17 : SIZE 80 * 80
18 : SIZE 88 * 88
19 : SIZE 96 * 96
20 : SIZE 104 * 104
21 : SIZE 120 * 120
22 : SIZE 132 * 132
23 : SIZE 144 * 144
24 : SIZE 8 * 18
25 : SIZE 8 * 32
26 : SIZE 12 * 26
27 : SIZE 12 * 36
28 : SIZE 16 * 36
29 : SIZE 16 * 48
第六个参数:编码类型
最快速 = -2
最优方式 = -1
Ascii = 0
C40 = 1
Text = 2
X12 = 3
Edifact = 4
Base256 = 5
第七个参数:
1-- GS1 Datamatrix
0-- DataMatrix
第八个参数:
1-四周添加白边
0-四周不添加白边
注意:为了应对ripping精度误差,在做特别小的Datamatrix码是一定要四周添加白边。
第九个参数:
1-黑白反显
0-黑白不反显
第十个参数:
X方向的缩放比例
第十一个参数:
Y方向的缩放比例
2-4)具体制作方法
用黑色二维码控件建立可变栏位。
用表达式关联相关数据(注:数据必须处理到与GS1相符的格式要求,如果不是GS1,则没有特别要求)。
到右侧“条码”属性中,选择“Datamatrix”条码类型,然后在“黑油墨扩散补偿(补偿)”选项中,输入上述11个参数,每个参数用英文逗号分隔。注:现在扩充到最多11个参数,基本囊括了GS1 Datamatrix和Datamatrix用到的所有相关参数。
其他属性一般情况下无需设置。
完毕。
3-3)如果原始数据本身就包含“作为内容,如何预处理数据?
特殊数据案例备注:
如果数据本身就包含“作为内容,怎么办?
例如数据为
010888001073806821IFt*O“v 93c01p
注意:这里有一个隐藏的93之前的分隔符,你看不到它。
步骤1:必须将“”添加到字符串上方的括号中,将其更改为“010888001073806821IFt*O”v 93c01p“,为什么?因为在VariParint中,它将默认将“”视为分隔符。有一个“在O和v之间,O”v。
怎么做?
如果客户数据是csv,先把这个数据文件的后缀名手工从csv改为txt。
打开Excel打开上面的txt文件,然后再次保存到csv中,如果原始数据已经包含引号“或,逗号符号,这个过程会自动将这些数据两端自动添加“”。
但通过这种方式,数据将更改为“010888001073806821IFt*O”v 93c01p“,它将隐藏的隐藏分隔符更改为93之前的空格。因此,我们需要在VariPrint内部的步骤2中处理此空间
步骤2:创建一个参数,将上面的空格改回隐藏分隔符代码29,参数如下,注意:
ReplaceStringToHex($Key database.Column_1$, ,29), 参数名字 A1,
注意:如果数据中本身有逗号“,”的,您的参数设置就要在字段名称左右打上双引号,以避免与参数中的分隔符相冲突。
举例:如数据(注:都是不可见的符号)
0104660258550540215!(Mr&ec,iLAG91EE1092asnDcFJAINEGVW2mBpF99zcm+UFRUeCtVnsNwT5rkzI=
经过保存为csv后变为
"0104660258550540215!(Mr&ec,iLAG91EE1092asnDcFJAINEGVW2mBpF99zcm+UFRUeCtVnsNwT5rkzI="
参数A1的设置为:ReplaceStringToHex("$主数据库.Code$", ,29),假设字段名称为Code。
3-4)如果原始数据本身就包含隐藏符合,如何预处理数据?
如果客户数据为
0104627166507189215!&;vJGHV?WNX93nMbC,X与93之间有一个隐藏符号,贴子上肉眼看不到,但通过鼠标移动可感觉这里有一个隐藏字符。
用UltraEdit打开数据,转十六进制模式查看,看到93前面的隐藏字符为1D,就是Group Separator的十六进制字符。所以不用再用ReplaceCharToHex或ReplaceStringToHex函数处理了,直接使用带了“”的处理好的数据做GS1即可。
步骤3。设计GS1 Datamatrix,将表达式设置为@@$参数.A1$,并相应地设置GS1 Datamatrix。
结束。
3-5)如何在数据中间添加@@作为分隔,有何原则?
20221011记录,
最近有客户用某个医疗健康用的APP扫描用下列数据组成的GS1 Datamatrix
010123410562958317271101101220926004240000001
如果数据做成@@0101234105629583@@17271101@@101220926004@@240000001,用这个APP阅读始终报错
改为@@010123410562958317271101101220926004@@240000001,就ok了。
设置说明:
01是GTIN标识符号,后面跟14位数据,这里是01234105629583,17是Expiration Data标识复合,后面跟6位数据,这里是271101,10是Batch or Lot Number标识复合,后面跟数据的长度补丁,允许长短,最大到20位,何时结束不知道,所以需要新加一个@@来断数据,240是Additional Item Indentifier标识符合,后面跟数据的长度补丁,允许长短,最大到30位,因为在后面没有其他标识符号了,所以后面就不用@@断数据了。
3-6)如果原始数据中有\u001D这样的分隔符号,如何预处理数据?
举例1:
用户数据:010466005427402221G0kdLKrupIVJ5\u001D2406404\u001D91ffd0\u001D928N9WSKs9ag1f8Ysejilmd72n4JDPF2i8IvEJy5zKdHNWY82yJCo+4RjPgzfcydtLjYyATX4RxL1/N/rnWsX1kQ==
其中\u001D不显示。
我们做一个参数,用Replacetext函数,把\u001D替换为@@
然后设置GS1 Datamatrix码的内容
3-6)如果原始数据中有#这样的分隔符号,如何预处理数据?
举例2:
用户数据:0104680071197531215&zyyX(a2nPAD#91EE09#92USWdQA+LMWHB7duGj0nh3324gAEYdCue1nAVOSEHYbs=
其中#不显示。
我们做一个参数,用Replacetext函数,把#替换为@@。本例中为ReplaceText($主数据库.Serial$,1,#,@@)
然后用这个参数作为条码的内容
4. 如何提升Datamatrix或GS1 Datamatrix的输出速度?
特别是采用GS1 Datamatrix方式参数第一位设置了油墨补偿值后。
主要2个地方需要设置:
Datamatrix码的颜色设置,用Black专色表示,而不是单单K100。方法:选中码图,“填充叠印”-真-假。如果用户已购买“随机彩色条形码”选件,也可以直接到这个模组下,选择“单色随机(专色)”--设置Black的专色黑。
PDF处理器=Acrobat,先决条件:电脑系统中必须安装Acrobat完整版。安装完毕后,到Distiller中,“首选项”--“安全性”--选勾“信任任何通过Acrobat Distiller处理的文件”。
5. 如何对Datamatrix或GS1 Datamatrix的码图形状做任意比例的缩放?
从20191230版本起,支持GS1 Datamatrix的变形缩放。
本例中
1,0,1,2.5,-2,-1,0,0,0,1.6,1
2.5是正常DM的单边长度,最后增加加了2个参数:1.6是X方向缩放比例,1是Y方向缩放比例。
因为要做旋转,所以旋转角度设为90
3. GS1 Datamatrix的内容准备
注:由于最终用户或品牌商提供的数据文件各种各样,所以有必要就如何预处理数据或如何在VariPrint中填写内容的格式做下列说明。请根据您的数据格式找到对应的预处理或格式填写方式。
3-1)如果原始数据中有<GS> <RS> <EOT>这样的分隔符号,如何预处理数据?
版本更新20210120
1)增加ReplaceStringToHex函数,用来处理<GS> <RS> <EOT>...等等GS1 DataMetrix内容字符串中的符号。
举例:ReplaceStringToHex($主数据库.SN$,<GS>,29), 这里的SN字段内容中有<GS>符号,GS实际就是Group Separator, 对应的Dec为29. <RS>对应30,<EOT>对应4。 这里的28,30,4都是十进制数值,对应的Hex十六进制数值为1C,1E和04.
另,下面帖子中谈及的\u001D其实就是插入<GS>分隔符,有的客户数据中数据中会写成《GS》,意思一样。
注:因为ASCII码中超过128的码制不能用ReplaceStringToHex函数,而用下面GSFNC2参数在Setting.ini里面预先设定。原因是超过128的码值在Windows API Unicode转ANSI时会将编码变掉,不适用。
2)在Setting.ini设置
GSFNC1=@@,这个之前版本已有。
GSFNC2=FNC1|232|PAD|129,这个参数最多可增加至5组。特别注意:如果用户数据中PAD是作为内容而不是分隔符的,这个PAD转129的参数设置要删除,否则就不对了。
3-2)如果原始数据中有FNC1这样的分隔符号,如何预处理数据?
注:内容中有FNC1,还是要预先用@@替换处理掉。PAD就留在那里用新加的参数自动处理。举例:FNC12402Y1FNC180103601DA4050FNC18011032000001PAD,先要做一个参数替换FNC1为@@2402Y1@@80103601DA4050@@8011032000001PAD
做出来的条码,扫描结果如下: