Привет всем. Требуется квалифицированная помощь. Имеется клиент-серверная 1С, крутиться на PostgreSQL в Линуксе. Собственно в чем вопрос? При формировании для печати штрихкодов выходит такая картина. Есть у кого опыт решения такой проблемы?
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
Можно обойтись и без использования файла, например: