Простейший способ создания штрих-кода в формате 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

См. также

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

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

4600 руб.

27.06.2023    3798    3    0    

5

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

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

3600 руб.

02.09.2010    77766    73    257    

191

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

Внешняя компонента позволяет печатать PDF файлы непосредственно из 1С, не используя при этом сторонних программ. Прекрасно работает на сервере, тонком клиенте и веб-клиенте. Основана на проекте PDFium из состава проекта Chromium/Chrome

1500 руб.

17.09.2018    37122    115    128    

116

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

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

2400 руб.

25.06.2024    1301    3    4    

3

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

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

14.01.2025    2605    bayselonarrend    14    

48

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

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

04.12.2024    5354    kovalevdmv    26    

77

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

Некоторые практические аспекты создания внешних компонент на языке С++ для платформы 1С 8.3++.

26.01.2024    7779    starik-2005    40    

47
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
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С использует графические библиотеки из данного пакета.
Оставьте свое сообщение