Перед печатью настройте принтер, макет и нужный товар в проекте службы. Получите их ID через каталог API. Все ID в примерах условные.

Задача Запрос
Напечатать одинаковые копии POST /api/v1/print/copies
Напечатать разные коды маркировки из базы POST /api/v1/print/gs1
Получить файл команд без отправки принтеру POST /api/v1/print/file

Обычные копии могут содержать одинаковый код маркировки. Для уникальных кодов используйте print/gs1. Все три команды возвращают 202; затем нужно дождаться конечного состояния задачи.

Выбрать формат

text передаёт текстовые и векторные команды языка принтера, graph формирует изображение всей этикетки. Поддерживаются профили TSC, GODEX и ARNI. Сначала проверьте макет в нужном формате: не все сочетания полей и штрихкодов поддерживаются.

Если принтер настроен спрашивать формат перед печатью, в copies и gs1 обязательно задайте printMode: API не может открыть окно выбора. При фиксированном формате принтера этот параметр можно пропустить. В file поле format обязательно всегда.

Все ID и count должны быть положительными. Принтер выбирается из проекта: произвольный сетевой адрес в запросе не принимается. Для MySQL генерация и печать через API недоступны.

Напечатать копии

POST /api/v1/print/copies:

Поле Значение
labelId, printerId, count Обязательные ID макета, ID принтера и количество копий
productId Необязательный ID товара для подстановок
printMode text или graph. Если принтер настроен спрашивать формат, укажите его явно; иначе поле можно пропустить
transport tcp по умолчанию или явное arni-operation

Пример одной копии макета с условными ID:

{"labelId": 1, "printerId": 1, "productId": 10, "count": 1, "printMode": "text"}

При TCP программа проверяет состояние принтера, формирует данные и отправляет их на порт 9100. Передача всех байтов не подтверждает физическую печать. Если устройство не подтвердило выполнение, задача завершится ошибкой printer_command_unconfirmed и retrySafe=false.

Напечатать копии через HTTP ARNI

Этот режим выбирается только через transport="arni-operation". До запроса проверьте ограничения:

  • В проекте выбран ARNI с числовым IP-адресом и подтверждённой привязкой.
  • Формат — graph; скорость и плотность в настройках принтера проекта равны 0.
  • Количество копий — от 1 до 32 767; печать уникальных кодов маркировки в этом режиме не поддерживается.

Пример с условными ID:

{"labelId": 1, "printerId": 1, "productId": 10, "count": 1, "printMode": "graph", "transport": "arni-operation"}

API объединяет копии в одну операцию печати и проверяет, подтвердил ли принтер всё запрошенное количество. Если подтверждения нет или принтер подтвердил не все копии, перед повтором проверьте устройство и отпечатки. Автоматического перехода на TCP нет. Успех программного обмена не заменяет проверку отпечатка на вашем оборудовании.

Параметр transport относится только к copies. Для gs1 и file такого выбора нет.

Напечатать коды из базы

POST /api/v1/print/gs1 принимает обязательные labelId, printerId, productId, count и необязательные orderId, printMode.

Запрос выбирает индивидуальные коды: включённые, неиспользованные, непроверенные, без отметки об отправке и с действующим сроком. Коробочные коды не выбираются. При orderId подходят коды этого задания и коды без привязки. Общая статистика available считает более широкий набор и не гарантирует такое же количество для печати.

  1. Загрузите коды и проверьте доступное количество.
  2. Укажите товар, макет и принтер. Если нужна выборка для задания, передайте его внутренний orderId.
  3. Сначала запросите одну этикетку и проверьте результат задачи и отпечаток.

API резервирует доступные непросроченные коды, готовит отдельную этикетку для каждого и отправляет их по TCP. Для &измер1& выделяются значения дневного счётчика.

Коды отмечаются использованными только после подтверждённого выполнения. При ошибке до отправки резерв освобождается. Если результат отправки неизвестен, резерв остаётся, чтобы те же коды не попали в повторную печать. API не предоставляет команды ручного подтверждения печати или снятия такого резерва. Сначала проверьте устройство и напечатанные этикетки.

В результате задачи доступны printerId, format, productId, codeCount, bytes и bytesSent. Если в запросе был orderId, он тоже есть в результате. Счётчик отправленных байтов не равен числу подтверждённых отпечатков.

Создать файл команд

POST /api/v1/print/file принимает:

Поле Значение
labelId, printerId, count Обязательные ID макета, ID принтера и число копий
format Обязательное text или graph
productId, orderId Необязательные ID для подстановок
gs1CodeId Необязательный ID кода из текущей базы для маркеров «Честного знака»

Пример с условными ID:

{"labelId": 1, "printerId": 1, "productId": 10, "count": 1, "format": "graph"}

Команда не отправляет данные принтеру. После Succeeded декодируйте result.contentBase64 и сохраните байты в файл. Поля fileName, contentType, bytes и format описывают файл. Сохраняйте именно декодированные байты, а не текст Base64.

gs1CodeId только подставляет код: он не резервируется и не отмечается использованным. При последующей печати файла учёт этого кода остаётся обязанностью внешней системы.

Настроить общую очередь на компьютере

В Windows и Linux для поддерживаемых операций копий и GS1 работает общая очередь. GUI, API и CLI ждут, пока другой процесс LabelRedo закончит работу с тем же сетевым принтером, и только затем начинают отправку.

Если задаёте LABELREDO4_PRINTER_OWNER_DIR, укажите один и тот же абсолютный путь во всех участвующих процессах. Каталог должен существовать. Пользователям GUI и учётной записи службы нужны права создавать, читать и изменять файлы координации в нём. Не используйте для этого каталог с токеном API и не удаляйте файлы блокировки во время работы.

Установщики создают стандартный общий каталог. При ошибке printer_owner_unavailable администратор должен проверить путь и права. Общие переменные и каталоги описаны в настройках программы.

Эта очередь не управляет программами на других компьютерах и внешним ПО. Команды управления ARNI, работа со шрифтами и другие операции, которые не используют общую блокировку, требуют отдельного согласования. В этой сборке общая очередь API/CLI подключена только в Windows и Linux.

Разобрать результат печати

Код задачи Действие
printer_not_ready Проверьте состояние устройства, материал и ошибки
printer_unavailable Проверьте адрес и сеть
printer_command_rejected, printer_busy Прочитайте сообщение и состояние принтера
printer_command_unconfirmed Проверьте отпечатки; не отправляйте серию снова автоматически
printer_response_incomplete, printer_response_unknown Ответ не доказывает результат; проверьте принтер до повтора
arni_unconfirmed или safeToRetry=false Проверьте HTTP-операцию и устройство; новый ключ идемпотентности не разрешает повтор

В result могут быть протокол, этап, длительность, число отправленных байтов и диагностика ответа. Для обращения в поддержку сохраните jobId, errorCode и содержимое result. Принятая задача API, отправленные по TCP данные и запись в истории обработки заданий в принтере ARNI не подтверждают, что все копии напечатаны.