helpf.pro
Регистрация

v8.3: Генерация штрихкодов в ОС Linux

Eremkin
10.09.2015 16:23Прочитано: 4702

Привет всем. Требуется квалифицированная помощь. Имеется клиент-серверная 1С, крутиться на PostgreSQL в Линуксе. Собственно в чем вопрос? При формировании для печати штрихкодов выходит такая картина. Есть у кого опыт решения такой проблемы?

Yandex
Возможно, вас также заинтересует
Реклама на портале
EMigachev
10.09.2015 16:39Ответ № 1

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. За это отвечает команда ImageMagick 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С.

Код 1C v 8.2 УП
 Функция ШтрихКодПоказать(Штрихкод, Стандарт="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"

Источник

Eremkin
10.09.2015 17:49Ответ № 2

Извиняюсь заранее за глупый вопрос. А куда этот кусок лучше вкорячить?

EMigachev
10.09.2015 22:29Ответ № 3

Сервер у вас на линуксе, а клиенты на винде или тоже линкус?

Eremkin
11.09.2015 10:58Ответ № 4

Клиенты виндовые

Подсказка: Вы можете приложить к ответу файл или изображение щелкнув по значку или в редакторе.
Вы не можете отправить комментарий анонимно, пожалуйста войдите или зарегистрируйтесь.