Итак, в Linux мы имеем прекрасную утилиту для генерации штрих-кода под названием barcode. Данная команда генерирует штрих-код в формате PostScript и Encapsulated Postscript.
Рассмотрим её описание:
$ 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 > 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 > 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 > 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 > 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 > 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 > 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 > 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 > 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) практически любого штрих-кода.
можно в одну строчку, если кому интересно 🙂
Да, можно одной строчкой, об этом я писал в оригинале статьи:
Генерация штрих-кода для вставки его в 1С при работе в Linux
Так же, может заинтересовать программная реализация в 1С:
Генерация изображения штрих-кода в 1С при работе в Linux
(2)
ну, там хоть и в одну строчку, но зачем-то промежуточный файл используется.
А, ну да, эффективней без файла.
Zint умеет сохранять в PNG напрямую.
Zint работает из командной строки ?
Забыли написать, какие пакеты необходимо установить для появления командного файла convert …
(8)http://packages.ubuntu.com/search?keywords=convert&searchon=names&suite=trusty§ion=all , мимо.
imagemagick надо ставить. убунта вообще добрая — сразу говорит, что нужно поставить 🙂
Показать
Да, точно, convert входит в imagemagic о чем Убунта и говорит.
apt-get install imagemagick
а разве теперь 1с без imagemagick работает??
Раньше добивало что 1с не стартовала пока все это добро не поставишь, а после того как перероеш весь гугл и заставишь 1с работать первым делом выскакивает подсказка что и каким образом надо установить чтоб оно заработало.
Полагаю что если 1с работает, то данный способ стартанет без лишних телодвижений
Да, в инструкции по установке 1С8.3 imagemagick нужно ставить. В принципе, это делается легко. Видимо, 1С использует графические библиотеки из данного пакета.