А в т о р : Р у д ю к С . А .
https://corp2.net
E-Mail: rs@corp2.net
В Linux есть огромное количество способов создания линейного штрих-кода. В данной статье мы рассмотрим, как сгенерировать графическое изображение штрих-кода прямо из командной строки. При этом, решение будет совершенно бесплатным и очень простым как в установке так и в использовании.
Итак, в Linux мы имеем прекрасную утилиту для генерации штрих-кода под названием barcode . Данная команда генерирует штрих-код в формате PostScript и Encapsulated Postscript.
Рассмотрим её описание:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
$ barcode - h
barcode : Options :
- i < arg > input file ( strings to encode ) , default is stdin
- o < arg > output file , default is stdout
- b < arg > string to encode ( use input file if missing )
- e < arg > encoding type ( default is best fit for first string )
- u < arg > unit ( "mm" , "in" , . . . ) used to decode - g , - t , - p
- g < arg > geometry on the page : [ < wid > x < hei > ] [ + < margin > + < margin > ]
- t < arg > table geometry : < cols > x < lines > [ + < margin > + < margin > ]
- m < arg > internal margin for each item in a table : < xm > [ , < ym > ]
- n "numeric" : avoid printing text along with the bars
- c no Checksum character , if the chosen encoding allows it
- E print one code as eps file ( default : multi - page ps )
- P create PCL output instead of postscript
- p < arg > page size ( refer to the man page )
Known encodings are ( synonyms appear on the same line ) :
"ean" , "ean13" , "ean-13" , "ean8" , "ean-8"
"upc" , "upc-a" , "upc-e"
"isbn"
"39" , "code39"
"128c" , "code128c"
"128b" , "code128b"
"128" , "code128"
"128raw"
"i25" , "interleaved 2 of 5"
"cbr" , "codabar"
"msi"
"pls" , "plessey"
"code93" , "93"
Как видите, данная команда генерирует штрих-коды во всех основных стандартах.
Рассмотрим примеры использования:
Grand & Toy # 99773,
Label width : 44 mm
Label height : 12 mm
Horizontal gap between labels 8 mm
Vertical gap between labels : 1 mm
Top margin : 13 mm
Left margin : 8 mm
Should be:
yes 12345 | head - 72 | barcode - p 8.5x11in - umm - t 4x18 + 8 + 13 - g 44x12 + 8 + 1 - e CODE39 & gt ; test . ps
But in fact:
yes 12345 | head - 84 | barcode - p 8.5x11in - umm - t 4x21 + 0 + 0 - 0 - 12.8 - g 36x12 + 7 + 0 - m 5 , 0 - e CODE39 & gt ; test . ps ; date '+%H:%M:%S'
$ barcode - umm - p letter - t 4x18 + 8 + 13 - g 44x12 + 8 + 1 - e CODE39 - b 1234567890 - b 1234567890 - b 1234567890 - b 1234567890 - b 1234567890 - b 1234567890 & gt ; test . ps
barcode : wrong page size specification "letter"
barcode : try "barcode --help"
-p 8.5x11in works.
$ yes 12345 | head - 72 | barcode - umm - p 215x279mm - t 4x18 + 0 + 12 - 0 - 12 - g 32x8.5 + 7 + 0 - m 0 , 0 - e CODE39 & gt ; test . ps ; lpr test . ps ; date '+%H:%M:%S'
15 : 44 : 48
# add l/r margin = 8
$ yes 12345 | head - 72 | barcode - umm - p 215x279mm - t 4x18 + 0 + 12 - 0 - 12 - g 32x8.5 + 7 + 0 - m 8 , 0 - e CODE39 & gt ; test . ps ; lpr test . ps ; date '+%H:%M:%S'
16 : 10 : 30
$ yes 12345 | head - 80 | barcode - p 8.5x11in - umm - t 4x20 + 8 + 13 - g 44x12 + 8 + 0 - m 5 , 0 - e CODE39 & gt ; test . ps ; date '+%H:%M:%S'
09 : 35 : 57
$ yes 12345 | head - 84 | barcode - p 8.5x11in - umm - t 4x21 + 8 + 0 - 8 - 12 - g 44x12 + 8 + 0 - m 5 , 0 - e CODE39 & gt ; test . ps ; date '+%H:%M:%S'
10 : 37 : 04
$ yes 12345 | head - 84 | barcode - p 8.5x11in - umm - t 4x21 + 0 + 0 - 0 - 12.8 - g 36x12 + 7 + 0 - m 5 , 0 - e CODE39 & gt ; test . ps ; date '+%H:%M:%S'
11 : 18 : 40
Преобразование PS-файла в PNG
Конечно, все прекрасно, но нам же нужно получить формат файла – PNG. Тут на выручку нам приходит команда преобразования форматов графических файлов:
convert < Название исходного файла> < Название результирующего файла>
Генерация изображения с заданной четкостью:
convert - density 300 sierraf . eps sierraf . png
Генерация изображения заданного размера:
convert - density 300 IN . eps - resize 600x400 - transparent white OUT . png
Генерация штрих-кода в PNG-формате
Соединим обе команды для генерация штрих-кода символьного значения в формате CODE128:
barcode p 8.5x11in - umm - e 'code128' - b 12345678 > img . ps
convert img . ps img . png
Таким образом, 2-мя строчками мы можем получить изображение практически в любом графическом формате (не только jpg) практически любого штрих-кода.
А в т о р : Р у д ю к С . А . https://corp2.net
Leave a Reply