Как CloudPrint печатает на локальных принтерах
CloudPrint связывает приложение в облаке с принтером в офисе, магазине или на складе. Приложение обращается только к Public API, а локальный агент получает разрешённые задания через исходящее соединение.
Как проходит задание
Сервер вашей системы получает токен, выбирает printer_id, передаёт документ и создаёт задание. CloudPrint хранит документ и состояние задания. Локальный агент сообщает о доступных принтерах, забирает задание и передаёт его в системную очередь или совместимый RAW-канал.
Зачем нужен локальный агент
Принтеры обычно находятся в частной сети и не должны быть доступны из интернета. Агент сам подключается к CloudPrint, поэтому не нужны входящие правила межсетевого экрана, VPN или удалённый рабочий стол.
Статусы задания
Новое задание получает статус pending, затем может перейти в reserved и printing. Итоговые статусы — printed, failed и cancelled. printed подтверждает принятие документа системной очередью, но не подтверждает физическую печать. Сохраняйте print_job_id, считайте новые неизвестные значения промежуточными и показывайте оператору понятное состояние.
Безопасные повторы
Тайм-аут сетевого запроса не должен приводить ко второй физической печати. Формируйте стабильный Idempotency-Key для каждой бизнес-операции. Тот же ключ и те же данные возвращают исходное задание; изменённые данные с тем же ключом приводят к ответу 409 Conflict.
За что отвечает ваша система
CloudPrint передаёт задание на выбранный принтер и сообщает результат, который смог подтвердить агент. Ваша система отвечает за выбор принтера, подготовку файла, связь задания с заказом или другим документом и правила повторной печати после ошибки.