Генерация штрих-кода для вставки его в 1С при работе в Linux

В Linux есть отличная команда barcode, которая генерирует штрих-коды в векторном формате ps. Но 1С не понимает такие форматы. Более того, barcode генерирует штрих-код на размер листа А4 или Letter. Установка пользовательского размера листа не увенчалась успехом. Но не будем же мы вставлять изображение штрих-кода размером с лист А4…
Однако есть способ, как решить данные проблемы.

 

Генерируем штрих-код в формате ps с помощью команды barcode:

barcode -p letter -g 200x100 -u mm -b 13423432320 -e 128 -o sss.ps

Теперь, нужно преобразовать его в понятный для 1С формат — это или jpg или png. За это отвечает команда ImageMagic convert. Кроме того, есть возможность указать четкость изображения с помощью параметра -density 150. А так же есть очень полезный параметр для нашего случая -trim. Этот параметр обрезает изображение. Т.е. обрезает всё белое пространство нашего листа.

Получаем такую команду для генерации jpg:

convert -density 150 -trim sss.ps sss.jpg

Для генерации png:

convert -density 150 -trim sss.ps sss.png

Сравнивая изображения png и jpg видим, что jpg имеет размер 21,2Кб, а png — 2,7Кб. Т.е. получается, что png лучше использовать, т.к. размер такого файла в 10 раз меньше. Кроме того, в png нет фона.

Для того, чтоб не нужно было вызывать несколько команд из линукс и после каждой делать тайм-аут, рекомендую заключить обе команды в «одну команду», например так:

barcode -p letter -g 200x100 -u mm -b 13423432320 -e 128 -o sss.ps | convert -density 150 -trim sss.ps sss.png

Можно обойтись и без использования файла, например:

barcode p 8.5x11in -umm -e 'code128' -b 12345678 | convert - img.png

 

Написал маленькую функцию, которая генерирует штрих-код в Linux и получает его в 1С.

Функция ШтрихКодПоказать(Штрихкод, Стандарт="128")

Если Штрихкод="" Тогда // Если не указали штрих-код, тогда выводим в CODE 128
Предупреждение("Не указан штрих-код!",5);
Иначе
Файл="/tmp/"+Штрихкод;
ЗапуститьПриложение("barcode -p letter -g 200x100 -u mm -b "+Штрихкод+" -e 128 -o "+Файл+".ps | convert -density 150 -trim "+Файл+".ps "+Файл+".png");
Файл=Файл+".png";
КонецЕсли;

Возврат Файл;

КонецФункции


Процедура ОбработкаШтрихкодаНажатие(Элемент)

S=ШтрихКодПоказать("58765", "ean13");

Предупреждение("На всякий случай ждем 1 секунду", 1);

ЗапуститьПриложение(S);

КонецПроцедуры

Параметры функции Штрих-код:

Штрих-код — буквенно-цифровое значение штрих-кода.
Стандарт — стандарт штрих-кода. Предусмотрены такие значения данного параметра, отвечающие за соответствующий стандарт:

        "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"
Автор: Рудюк С . А. http://corp2.net

3 Comments

  1. Fragster

    Есть еще кроссплатформенная программа zint, которая умеет не только одномерные, но еще и двумерные ШК генерить, причем сразу в png. Ну и из-за того, что она кроссплатформенная (и портабельная, можно включить в макет) в своих разработках можно применить единообразный подход к генерации ШК как в linux, так и в windows

    http://sourceforge.net/projects/zint/

    Reply
  2. dumal

    rudjuk,

    Ай-ай imagemagick, а не imagemagic! Сам когда-то долго привыкал, а теперь глаз спотыкается

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *