Как распечатать (штрих-код) этикетки из приложения Ruby on Rails? - PullRequest
4 голосов
/ 03 апреля 2011

Мое первое приложение, которое я разработал в RoR, предназначено для некоторых ПК с сенсорным экраном Kiosk, используемых на нашем складе. Когда биржевой рабочий взял какой-то материал, он вводит количество в форму.
Теперь я хочу напечатать этикетку, содержащую: имя клиента, описание материала, количество и штрих-код на нашем принтере Zebra.
Как бы я это сделал из приложения Ruby on Rails?

  • Отправка напрямую контрольных символов, необходимых для ZPL (Zebra Printer Language) с контроллера? (не очень удобно)

  • Создать представление в HTML, отправить его клиенту, и клиент должен его распечатать. (не очень удобно и подвержено ошибкам, поскольку штатный работник должен выполнить дополнительные действия, может выбрать неправильный принтер или вообще не печатать этикетку)

  • Создайте документ pdf из контроллера и отправьте его на принтер с сервера (о, нет, принтер не понимает pdf, поэтому я должен управлять устройством для чтения PDF, чтобы выполнить печать? Это будет очень быстро, так как он отправит этикетку в виде графического изображения на принтер

  • Создать драгоценный камень, который скроет всю логику, необходимую для печати? (Есть ли драгоценные камни, которые уже делают это?)

Буду признателен за каждый комментарий.

Спасибо

Klaus

Ответы [ 4 ]

4 голосов
/ 07 апреля 2011

Я бы отправил необработанный ZPL на принтер.Вы можете использовать такой инструмент, как Bartender (я бы предложил установить Bartender Only по этой ссылке. Вы можете создать свой ярлык в этом инструменте. После того, как вы разработали свой ярлык, вы бы скачали драйверы принтера для барменов для вашегоПринтер Zebra и установите фиктивный принтер с этими драйверами и распечатайте этот ярлык, который вы разработали, в файл. Это даст вам необработанный zpl. Из этого вы можете в основном заменить все динамические данные в файл zpl, который вы напечатали на предыдущем шаге,отправьте это напрямую на принтер через последовательный порт, TCP / IP или USB.

2 голосов
/ 11 апреля 2011

Редактировать: я нашел гораздо лучшее решение, продолжая копаться в этом. Это довольно значительно отредактировано, чтобы сосредоточиться на решении Java-апплета, которое я в итоге использовал.

По сути, вы создадите метку в виде необработанного текста ZPL. Затем вам нужно передать этот простой текст на принтер, который сгенерирует этикетку.

Если ваш сервер может получить доступ к IP-адресу принтера, вы можете скопировать ZPL на принтер непосредственно из процесса сервера. Если это удаленное веб-приложение, вам нужно, чтобы клиент отправил вам ZPL. Песочница в браузере усложняет задачу - водители хотят услужливо помешать. Есть несколько вариантов; наиболее распространенным является использование небольшого апплета Java или Flash для фактического копирования. Если вы можете получить конкретный веб-браузер, который ваши пользователи используют для печати на простом текстовом принтере без добавления чего-либо, вы можете использовать локальную печать, но, как правило, наиболее надежный подход - использовать вспомогательный Java-апплет.

Я использую для этого Java-апплет: jZebra: http://code.google.com/p/jzebra/

Это очень простой и понятный подход, посмотрите пример HTML в пакете загрузки и несколько строк кода напечатайте этикетку. Я только что отредактировал образец и планирую использовать его в качестве всплывающего окна с рабочим кодом ... это действительно так просто.

Два предостережения при таком подходе:

  • У ваших пользователей должна быть установлена ​​JRE
  • jZebra находит принтер Zebra по имени принтера. Существуют очень конкретные руководства (в них есть подробные инструкции по настройке Mac, Windows и Linux) о том, что вам нужно сделать, - но они хорошо документированы, и вам просто нужно, чтобы ваши пользователи следовали инструкциям. Как только он настроен правильно, он прекрасно работает.
1 голос
/ 07 декабря 2013

Более простое решение, и я считаю, что лучше, как правило, на большинстве браузеров и компьютеров установлены средства просмотра PDF.Поэтому просто создайте этикетки в виде документов PDF и отправьте их в браузер.

Мы реализовали печать этикеток с использованием принтера Zebra в ROR следующим образом.

  1. Создание страниц этикеток точного формата в формате html.
  2. Преобразование html в pdf с использованием wickedPDF.

Обычно этикетки также содержат штрих-коды.

Таким образом, общее решение будет,

  1. Создание штрих-кодов с использованием barbie gem.
  2. Создание html с использованием штрих-кодов и ваших актуальных данных, которые должны быть указаны на этикетке.
  3. Преобразование представления html в PDF.
0 голосов
/ 07 апреля 2011

Звучит как работа над расширением ruby ​​C.Возможно, тот, который также оборачивает что-то вроде библиотеки штрих-кода gnu http://www.gnu.org/software/barcode/ и какой-то другой открытый стандарт для принтера zebra, если таковой существует?Однажды я создал приложение rails, которое делало купоны и активно использовал штрих-код gnu, но я сделал простую команду оболочки для взаимодействия с ним.

...