Генерация PostScript штрих-кодов (barcode). Часть 1

Здравствуйте, товарищи! Недавно в интернете я наткнулся на одну отличную PostScript-библиотеку, благодаря которой можно легко сгенерировать множество различных баркодов под свои нужды, более того – она позволяет управлять множеством параметров в процессе генерации, такими как шрифты, положение служебных знаков, интервалы, цвета и много другое. И имя ей – BWIPP.

BWIPP – библиотека написанная на чистом PostScript, что понятно из полного названия – “Barcode Writer in Pure PostScript”. Автор этого монстра – Терри Бартон, возможно кто-то знаком c одноименным сервисом онлайн-генерации баркодов. Также у BWIPP, есть страничка на Google code, где ее можно скачать и частично ознакомиться с возможностями.

После загрузки библиотеки мы можем ознакомиться с ее содержимым, открыв файл любым текстовым редактором. По сути, библиотека состоит из двух основных блоков:

  • Блок механизмов рендеринга баркодов, с описанием констант и прочих параметров;
  • Блок описания самих баркодов.

В процессе генерации баркода, мы можем передавать необходимые и дополнительные  параметры, которые зависят от типа баркода и механизма его рендеринга, если необходимые параметры не передать, то на стадии рендеринга все сломается или результат будет неожиданным (например, баркод без текста). Основная проблема заключается в понимании того, какие параметры необходимые и где найти дополнительные? Для этого мы обратимся к комментариям внутри библиотеки, которые начинаются с символа “%”, все блоки обрамлены комментариями типа BEGIN (% –BEGIN RENDERER renlinear–) и END (% –END RENDERER renlinear–), а блоки геренации баркодов имеют еще и дополнительное описание, например, ISSN:

С необходимыми параметрами разобрались, теперь найдем дополнительные. После того, как мы определили механизм рендеринга (в нашем случае – renlinear), найдем строку с комментарием “% –BEGIN RENDERER renlinear–” – блок механизма, все что после комментариев “% Default options” (константы) и “% Apply the renderer options and the user options” (переопределение констант на пользовательские значения) – дополнительные опции, их довольно много, но они не всегда нужны, их названия говорят сами за себя, здесь и настройки шрифта и цвета, рамок и много другого.

Теперь можно попробовать вручную сгенерировать баркод. Сперва сделаем копию библиотеки и в самом низу, после комментария “% –END TEMPLATE–“, допишем следующее:

Первые 4 строчки – описание страницы, такие как размер, имя автора и прочие, в принципе, можно их опустить. Интерес представляют следующие 2 строки (это и есть вызов функции, генерирующей наш баркод из шаблона), опишу их подробнее:

50 50 moveto – положение X и Y левого нижнего угла баркода.

(1234-5678 01 12345) – входные данные.

(includetext guardwhitespace issntextsize=9 textsize=9 height=0.6 guardwidth=5 guardheight=6 guardrightpos=6 guardrightypos=36.5) – необходимые ( includetext и guardwhitespace) и дополнительные (все остальные, оставил их для примера) параметры:

issntextsize – рамер текста сверху баркода (взят из блока кода, описывающего issn),

textsize – размер текста кода, height-высота баркода (от 0 до 1),

guard… – параметры служебного знака в ISSN (символ “>” )

/issn – имя вызываемой функции

/uk.co.terryburton.bwipp findresource exec – не совсем понимаю значение всех аргументов, но по сути это запуск (:

Последние 4 строки – завершающие строки для PostScript.

Сохраняем файл после наших изменений и все готово. Не очень хорошо “тащить” всю библиотеку за каждым баркодом, но это просто и удобно. Также я бы не советовал ее урезать, в противном случае – делать это со знанием дела, почему? Например, для генерации ISSN-кода, BWIPP использует функции генерации разных кодов (ean2, ean5, ean13) в зависимости от входных данных, что не совсем очевидно,  и, если какой-то функции не будет хватать из-за того, что мы ее упразднили, то ничего не выйдет.

Надеюсь, эта информации была для вас полезна.

Оставить комментарий

avatar
  Подписаться  
Уведомление о