Простейший способ создания штрих-кода в формате PNG из командной строки в Linux Ubuntu

29.06.15

Разработка - Разработка внешних компонент

В Linux есть огромное количество способов создания линейного штрих-кода. В данной статье мы рассмотрим, как сгенерировать графическое изображение штрих-кода прямо из командной строки. При этом, решение будет совершенно бесплатным и очень простым как в установке, так и в использовании.

Итак, в 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'

Trying History 

$ 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) практически любого штрих-кода.

Автор: Рудюк С . А. http://corp2.net

штрих-код 1с8.3

См. также

Разработка внешних компонент POS терминал Рабочее место Розничная торговля Программист Пользователь Платформа 1С v8.3 1С:Комплексная автоматизация 1.х 1С:Управление торговлей 10 1С:Розница 2 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х Розничная и сетевая торговля (FMCG) Рестораны, кафе и фаст-фуд Реклама, PR и маркетинг Управленческий учет Платные (руб)

Медиадисплей покупателя может отображать текущую покупку на кассовом месте, показывать видеорекламу, баннеры, во время простоя разворачивать рекламу на весь экран. Экран можно использовать в качестве графического меню-борда в кафе и видеовывески. В качестве устройства отображения можно использовать Android-планшеты, смарт-телевизоры с Android, мониторы или проекторы под управлением Windows или Linux-компьютера. Linux-версия успешно запускается на одноплатных компьютерах Raspberri Pi и Orange Pi. Настраивается ЛЮБОЙ ДИЗАЙН экрана при помощи встроенного графического редактора! Решение можно масштабировать от одного экрана до тысяч экранов с централизованным управлением.

18000 руб.

30.05.2017    54043    9    69    

46

Разработка внешних компонент Программист Платформа 1С v8.3 Конфигурации 1cv8 1С:Управление торговлей 11 Платные (руб)

Внешняя компонента для конвертации PDF файлов в картинки без использования дополнительных программ. Работает на сервере и в тонком клиенте.

2400 руб.

25.06.2024    1127    3    4    

3

Разработка внешних компонент Телефония, SIP Программист Платформа 1С v8.3 Конфигурации 1cv8 Россия Платные (руб)

Внешняя компонента выполнена по технологии Native API для 1С 8.х, обеспечивает доступ к программным АТС Asterisk (FreePBX, Elastix) через AMI интерфейс. Через него можно управлять многими функциями Asterisk (определение номеров, перевод звонков, набор телефона и т. д.)

2400 руб.

04.05.2018    47298    124    66    

67

Разработка внешних компонент Программист Платформа 1С v8.3 Платформа 1C v8.2 Платные (руб)

Внешняя компонента, позволяющая посылать команды и получать ответы по GraphQL протоколу из 1С.Может быть использована при интеграции. В 1С работает на стороне "клиента".

4600 руб.

27.06.2023    3598    3    0    

5

Разработка внешних компонент Программист Платформа 1С v8.3 Конфигурации 1cv8 Платные (руб)

Позволяет автоматизировать работу с картинками. С помощью компоненты можно измерять размер изображений, поворачивать их, наносить водяные знаки, конвертировать из одного формата в другой. Будет очень полезна для интернет-магазинов и всех, кому постоянно требуется работать с различными графическими форматами. Выполнена по технологии NativeAPI. Работает с форматами: jpg (jpeg), png, bmp, gif, tif

3600 руб.

02.09.2010    77516    72    257    

191

Разработка внешних компонент Программист Платформа 1С v8.3 Конфигурации 1cv8 1С:Управление нашей фирмой 1.6 1С:Бухгалтерия 3.0 Платные (руб)

Внешняя компонента позволяет работать c TWAIN-совместимым оборудованием (сканерами, камерами) . Полностью совместима со стандартной TWAIN-компонентой из БСП и может применяться как ее замена без изменения вызовов, при этом может работать с 64-разрядной платформой, а так же имеет расширенную функциональность, например, сохранение результата непосредственно в PDF без использования сторонних утилит. Прекрасно работает на сервере, тонком клиенте и веб-клиенте (проверена работа в браузерах Google Chrome, Mozilla Firefox и Microsoft Internet Explorer).

3000 руб.

12.05.2020    28657    138    100    

91

Разработка внешних компонент Системный администратор Программист Стажер Бесплатно (free)

Библиотека для работы с базами SQLite из 1С на основе внешней компоненты. Для Linux и Windows, бесплатно и с открытым исходным кодом!

14.01.2025    1874    bayselonarrend    10    

44

Разработка внешних компонент Программист Платформа 1С v8.3 Конфигурации 1cv8 Россия Бесплатно (free)

В статье описывается приложение-конструктор внешних компонент (native API). Конструктор упрощает процесс разработки за счет удобного добавления всех нужных функций и процедур в графическом режиме, с указанием их параметров и типов параметров. На выходе приложение генерирует готовый код на С++ и Rust и позволяет сразу приступить к реализации, без настройки API компоненты вручную.

04.12.2024    4726    kovalevdmv    26    

75
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. dmpas 418 29.06.15 22:03 Сейчас в теме
можно в одну строчку, если кому интересно :)
barcode p 8.5x11in -umm -e 'code128' -b 12345678 | convert - img.png
2. rudjuk 100 30.06.15 09:11 Сейчас в теме
Да, можно одной строчкой, об этом я писал в оригинале статьи:
Генерация штрих-кода для вставки его в 1С при работе в Linux

Так же, может заинтересовать программная реализация в 1С:
Генерация изображения штрих-кода в 1С при работе в Linux
3. dmpas 418 30.06.15 09:22 Сейчас в теме
(2)
ну, там хоть и в одну строчку, но зачем-то промежуточный файл используется.
4. rudjuk 100 30.06.15 14:26 Сейчас в теме
А, ну да, эффективней без файла.
5. q_i 584 30.06.15 21:34 Сейчас в теме
Zint умеет сохранять в PNG напрямую.
6. rudjuk 100 30.06.15 22:11 Сейчас в теме
Zint работает из командной строки ?
7. pumbaE 01.07.15 09:43 Сейчас в теме
Забыли написать, какие пакеты необходимо установить для появления командного файла convert ...
8. rudjuk 100 01.07.15 10:48 Сейчас в теме
Созвучный. Насколько я помню:
apt-get install convert
10. dmpas 418 01.07.15 15:14 Сейчас в теме
imagemagick надо ставить. убунта вообще добрая - сразу говорит, что нужно поставить :)

dmpas@dmpas:~$ convert
Приложение 'convert' может быть найдено в следующих пакетах:
 * imagemagick
 * graphicsmagick-imagemagick-compat
Попробуйте: sudo apt-get install <выбранный пакет>


Показать
11. rudjuk 100 01.07.15 16:58 Сейчас в теме
Да, точно, convert входит в imagemagic о чем Убунта и говорит.
12. rudjuk 100 01.07.15 17:02 Сейчас в теме
13. MegaMouse 372 01.07.15 17:48 Сейчас в теме
а разве теперь 1с без imagemagick работает??
Раньше добивало что 1с не стартовала пока все это добро не поставишь, а после того как перероеш весь гугл и заставишь 1с работать первым делом выскакивает подсказка что и каким образом надо установить чтоб оно заработало.

Полагаю что если 1с работает, то данный способ стартанет без лишних телодвижений
14. rudjuk 100 01.07.15 22:23 Сейчас в теме
Да, в инструкции по установке 1С8.3 imagemagick нужно ставить. В принципе, это делается легко. Видимо, 1С использует графические библиотеки из данного пакета.
Оставьте свое сообщение