Печать из веб-приложения на локальные принтеры
CloudPrint обеспечивает управляемую печать из веб-приложения для счетов, этикеток, чеков и рабочих документов. Браузер передаёт действие пользователя вашему серверу, а сервер выбирает локальный принтер, создаёт идемпотентное задание и сообщает фактический результат.
Когда достаточно диалога браузера
Используйте window.print(), если человек может каждый раз выбрать принтер и подтвердить печать на месте. Web Application Printing API нужен, когда продукт должен направлять документы на сохранённый или удалённый принтер, убирать повторяющиеся диалоги, фиксировать результат и безопасно переживать сетевые сбои.
Отправляйте задания через свой сервер
Клиентская часть передаёт серверу идентификатор документа и выбранную точку или принтер. Сервер создаёт либо получает файл, вызывает CloudPrint Public API и возвращает собственный идентификатор операции. client_secret и Bearer-токен не попадают в браузер.
Используйте минимальную последовательность API
Получите принтеры через GET /api/v1/printers, загрузите готовый файл в POST /api/v1/documents, создайте задание через POST /api/v1/print-jobs, затем вызывайте GET /api/v1/print-jobs/{printJobId} до конечного результата. Подключение агента и очередей описано в руководстве Local Printer API.
Выбор принтера
Во время настройки получите принтеры через GET /api/v1/printers и сохраните стабильный printer_id. В интерфейсе можно показать имя, агент и статус online, но отображаемое имя не является ключом маршрутизации.
Интерфейс оператора
После команды «Печать» показывайте принятие, ожидание, печать и конечный результат. Защитите кнопку от случайного двойного нажатия, но оставьте осознанную повторную печать отдельной операцией. При ошибке показывайте причину и идентификатор для поддержки.
Работа при сетевых сбоях
Сервер должен передавать стабильный Idempotency-Key, сохранять print_job_id и продолжать проверку после обновления страницы. После тайм-аута нельзя считать запрос неуспешным — сначала повторите тот же идемпотентный вызов или восстановите сохранённый результат.
Чего избегать
Не вызывайте агент из браузера, не публикуйте принтеры в интернете, не храните секреты в localStorage и не принимайте успешный HTTP-ответ за подтверждение печати. Результат известен только по конечному статусу задания.