admin 管理员组

文章数量: 1087131

Zint

文章目录

    • 1.Zint简介
    • 2.术语
    • 3.命令行
      • 3.1.输入数据
      • 3.2.直接输出
      • 3.3.选择条码类型
      • 3.4.调整高度
      • 3.5.调整空白
      • 3.6.添加边界条和框
      • 3.7.颜色设置
      • 3.8.旋转
      • 3.9.调整图像尺寸
    • 4.界面
    • 5.总结

1.Zint简介

Zint项目旨在提供一个完整的跨平台开源条形码生成解决方案。该软件包目前包括一个基于Qt的GUI,一个命令行可执行文件和一个带有API的库,允许开发人员访问Zint的功能。希望Zint提供的解决方案能够为专业用户提供足够灵活的解决方案,同时尽可能多地处理从输入数据到条形码图像的轻松转换。
构成Zint项目主要组件的库目前能够以超过50种条形码符号(条形码类型)对数据进行编码,对于每种条形码符号,都可以从Unicode (UTF-8)或原始8位数据流转换数据。图像可以呈现为便携式网络图形(PNG)图像,Windows位图(BMP),图形交换格式(GIF), ZSoft Paintbrush图像(PCX),封装后脚本(EPS)或可缩放矢量图形(SVG)。有许多选项可用于设置输出图像的特征,包括图像的大小和颜色、符号中使用的纠错量,以及在光栅图像的情况下,设置图像的方向。

2.术语

本文档中使用的一些单词和短语是专门针对条形码的,因此简要解释一下以帮助理解:
symbol:符号是根据其中一种标准对数据进行编码的图像。这包括条形码(线性符号)以及在此程序中使用的表示数据的任何其他方法。
symbology:对数据进行编码以产生某种类型符号的方法。
linear:线性符号是由条形和空格组成的符号,大多数人一提到“条形码”就会联想到它。例子包括EAN。
stacked:堆叠符号由多个线性符号组成,一个放在另一个上面,它们一起保存消息,通常伴随着一些纠错数据。示例包括PDF417。
matrix:矩阵符号是基于(通常是正方形的)元素网格的符号。示例包括Data Matrix,但Maxicode和DotCode也被认为是矩阵符号。
x-dimension:符号的x维是最小元素的大小(通常是宽度)。对于线性符号来说,这是最小条的宽度。光栅图像中x维的默认大小是2像素。许多符号都有固定的宽高比,其中高度表示为x维的倍数。
composite:复合符号是由线性和堆叠的元素组成的符号。当前支持的消息由线性“主”消息组成,该消息在上面打印基于PDF417符号的堆叠组件。这些符号也有一个分隔符,用于分隔线性和堆叠组件。
GS-1 data:这是一种表示信息的结构化方式,它由数据“块”组成,每个数据块都以一个应用程序标识符开始。人工智能识别正在编码的信息类型。见附录C。
Reader Initialisation:一些符号允许包含一个特殊字符,该字符可以被扫描设备检测到,表示该数据用于编程或更改该设备的设置。这些数据通常不会传递给处理正常输入数据的软件。只有当您熟悉与扫描仪相关的编程代码时,才应该使用此功能。
ECI: ECI机制允许用通常只支持Latin-1字符的符号对多语言数据进行编码。例如,如果您需要编码西里尔字符,这可能很有用,但应谨慎使用,因为并非所有扫描仪都支持此方法。

3.命令行

介绍如何使用命令行前端程序对数据进行编码。给出的示例是针对Linux平台的,但Windows也有相同的选项,只是要记住包括可执行文件扩展名。例如:

zint.exe -d "This Text"

3.1.输入数据

这将编码文本“This text”。Zint将使用默认符号Code 128,并输出到当前目录下的默认文件out.png。或者,如果在构建Zint时不存在libpng,则默认输出文件将是out.gif。-d开关和输入数据应该始终是命令行输入的最后一个条目。在此之后给出的任何选项将被忽略。
输入到Zint的数据假定以Unicode (UTF-8)格式编码。如果您使用Unicode以外的方案编码超出7位ASCII集的字符,则需要设置相应的输入选项。可以在命令行中使用反斜杠(\)作为转义字符,并结合esc开关输入非打印字符。允许的字符如下表所示。

--------------------------------------------------------------------
Escape Character  |  ASCII Equivalent  |  Interpretation
--------------------------------------------------------------------
\0                |  0x00              |  Null
\E                |  0x04              |  End of Transmission
\a                |  0x07              |  Bell
\b                |  0x08              |  Backspace
\t                |  0x09              |  Horizontal Tab
\n                |  0x0A              |  Line Feed
\v                |  0x0B              |  Vertical Tab
\f                |  0x0C              |  Form Feed
\r                |  0x0D              |  Carriage Return
\e                |  0x1B              |  Escape
\G                |  0x1D              |  Group Selector
\R                |  0x1E              |  Record Selector
\xNN              |  0xNN              |  Any other 8-bit character|                    |     where NN is hexadecimal
--------------------------------------------------------------------

可以使用-i开关直接从文件中读取输入数据,如下所示。除非选择了替代模式,否则假定输入文件是Unicode (UTF-8)格式的。该命令取代了-d开关的使用,并且应该是给出的最后一个选项。

zint -i ./somefile.txt

3.2.直接输出

可以使用-o开关将输出定向到默认文件以外的文件。例如:

zint -o here.png -d "This Text"

这将在文件here.png中绘制一个Code 128条形码。如果需要封装Post Script文件,只需在文件名后面加上.eps,其他支持的文件类型也可以这样:

zint -o there.eps -d "This Text"

3.3.选择条码类型

选择希望生成哪种类型的条形码(即使用哪种符号)可以在命令行中使用-b或–barcode=开关,后跟下表中的适当整数值。例如,要创建一个数据矩阵符号,你可以使用:

zint -o datamatrix.png -b 71 -d "Data to encode"

条码类型对应数值。

--------------------------------------------------------------------------------
数值            |  条码类型
--------------------------------------------------------------------------------
1              |  Code 11
2              |  Standard Code 2 of 5
3              |  Interleaved 2 of 5
4              |  Code 2 of 5 IATA
6              |  Code 2 of 5 Data Logic
7              |  Code 2 of 5 Industrial
8              |  Code 3 of 9 (Code 39)
9              |  Extended Code 3 of 9 (Code 39+)
13             |  EAN (Including EAN-8 and EAN-13)
14             |  EAN + Check Digit
16             |  GS1-128 (UCC.EAN-128)
18             |  Codabar
20             |  Code 128 (automatic subset switching)
21             |  Deutshe Post Leitcode
22             |  Deutshe Post Identcode
23             |  Code 16K
24             |  Code 49
25             |  Code 93
28             |  Flattermarken
29             |  GS1 DataBar-14
30             |  GS1 DataBar Limited
31             |  GS1 DataBar Extended
32             |  Telepen Alpha
34             |  UPC A
35             |  UPC A + Check Digit
37             |  UPC E
38             |  UPC E + Check Digit
40             |  PostNet
47             |  MSI Plessey
49             |  FIM
50             |  LOGMARS
51             |  Pharmacode One-Track
52             |  PZN
53             |  Pharmacode Two-Track
55             |  PDF417
56             |  PDF417 Truncated
57             |  Maxicode
58             |  QR Code
60             |  Code 128 (Subset B)
63             |  Australia Post Standard Customer
66             |  Australia Post Reply Paid
67             |  Australia Post Routing
68             |  Australia Post Redirection
69             |  ISBN (EAN-13 with verification stage)
70             |  Royal Mail 4 State (RM4SCC)
71             |  Data Matrix (ECC200)
72             |  EAN-14
73             |  Vehicle Identification Number (America)
74             |  Codablock-F
75             |  NVE-18
76             |  Japanese Postal Code
77             |  Korea Post
79             |  GS1 DataBar-14 Stacked
80             |  GS1 DataBar-14 Stacked Omnidirectional
81             |  GS1 DataBar Expanded Stacked
82             |  PLANET
84             |  MicroPDF417
85             |  USPS OneCode
86             |  Plessey Code
87             |  Telepen Numeric
89             |  ITF-14
90             |  Dutch Post KIX Code
92             |  Aztec Code
93             |  DAFT Code
97             |  Micro QR Code
98             |  HIBC Code 128
99             |  HIBC Code 39
102            |  HIBC Data Matrix ECC200
104            |  HIBC QR Code
106            |  HIBC PDF417
108            |  HIBC MicroPDF417
112            |  HIBC Aztec Code
115            |  DotCode
116            |  Han Xin (Chinese Sensible) Code
121            |  Royal Mail 4-state Mailmark
128            |  Aztec Runes
129            |  Code 32
130            |  Composite Symbol with EAN linear component
131            |  Composite Symbol with GS1-128 linear component
132            |  Composite Symbol with GS1 DataBar-14 linear component
133            |  Composite Symbol with GS1 DataBar Limited component
134            |  Composite Symbol with GS1 DataBar Extended component
135            |  Composite Symbol with UPC A linear component
136            |  Composite Symbol with UPC E linear component
137            |  Composite Symbol with GS1 DataBar-14 Stacked component
138            |  Composite Symbol with GS1 DataBar-14 Stacked Omnidirectional|     component
139            |  Composite Symbol with GS1 DataBar Expanded Stacked component
140            |  Channel Code
141            |  Code One
142            |  Grid Matrix
143            |  UPNQR (Univerzalnega Plačilnega Naloga QR)
145            |  Rectangular Micro QR Code (rMQR)
--------------------------------------------------------------------------------

3.4.调整高度

线性符号的高度可以使用–height开关进行调整。例如:

zint --height=100 -d "This Text"

这指定符号高度为符号x分辨率的100倍。

3.5.调整空白

可以使用-w开关更改生成的条形码左右的空白量。例如:

zint -w 10 -d "This Text"

这将指定空白宽度为符号x分辨率的10倍。

3.6.添加边界条和框

Zint允许使用选项–bind将符号与“边界条”绑定。如果扫描光束偏离符号的顶部或底部,这些条有助于防止误读符号,从而破坏扫描。Zint还可以使用–box选项在符号及其空格周围设置边框。ITF-14符号自动选择此选项。

边界或框的宽度可以使用–border开关指定。
例如:

zint --box --border=10 -d "This"

给出一个宽度为符号x分辨率10倍的方框。

3.7.颜色设置

符号的默认颜色是白色背景上的黑色符号。Zint允许您更改这一点。-r开关允许反转默认颜色,以便在黑色背景上显示白色符号。例如下面的命令:

zint -r -d "This"

给出了一个颠倒的128码符号。这对于大多数符号来说是不实用的,但是数据矩阵ECC200和阿兹特克代码符号规范允许黑白。

对于更具体的需求,可以使用–fg=和–bg=选项指定前景(墨水)和背景(纸张)颜色,后面跟着一个RRGGBB十六进制记数法的数字(与HTML中使用的系统相同)。例如下面的命令:

zint --fg=004700 -d "This"

将符号改为深绿色。

3.8.旋转

符号可以通过四个方向旋转,使用–rotate=选项,后面跟着旋转角度,如下所示。此选项仅适用于光栅图像(PNG, BMP, GIF和PCX)输出。

--rotate=0 (default)
--rotate=90
--rotate=180
--rotate=270

3.9.调整图像尺寸

可以使用–scale=选项加上默认x维的倍数来改变图像的比例。默认的x尺寸是2像素。例如,对于PNG图像,5的比例将使x维度增加到10像素。

4.界面

5.总结

Zint是一款非常好用的条码生成软件,可以非常方便的生成一维和二维条码,形式上可以生成矢量图形和栅格图像,非常方便集成和批处理。

本文标签: Zint