---
title: "Печать из веб-приложения на локальные принтеры"
description: "Печатайте PDF, этикетки и рабочие документы из веб-приложения через серверный API — без диалога браузера и входящих портов."
---
<nav class="docs-breadcrumb" aria-label="Breadcrumb"><a href="/docs/">Документация CloudPrint</a><span aria-hidden="true">/</span><span>Сценарии печати</span></nav>

# Печать из веб-приложения на локальные принтеры

<p class="docs-lead">CloudPrint обеспечивает управляемую печать из веб-приложения для счетов, этикеток, чеков и рабочих документов. Браузер передаёт действие пользователя вашему серверу, а сервер выбирает локальный принтер, создаёт идемпотентное задание и сообщает фактический результат.</p>

## Когда достаточно диалога браузера

Используйте `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](/docs/api/agents-and-printers/).

## Выбор принтера

Во время настройки получите принтеры через `GET /api/v1/printers` и сохраните стабильный `printer_id`. В интерфейсе можно показать имя, агент и статус `online`, но отображаемое имя не является ключом маршрутизации.

## Интерфейс оператора

После команды «Печать» показывайте принятие, ожидание, печать и конечный результат. Защитите кнопку от случайного двойного нажатия, но оставьте осознанную повторную печать отдельной операцией. При ошибке показывайте причину и идентификатор для поддержки.

## Работа при сетевых сбоях

Сервер должен передавать стабильный `Idempotency-Key`, сохранять `print_job_id` и продолжать проверку после обновления страницы. После тайм-аута нельзя считать запрос неуспешным — сначала повторите тот же идемпотентный вызов или восстановите сохранённый результат.

## Чего избегать

Не вызывайте агент из браузера, не публикуйте принтеры в интернете, не храните секреты в `localStorage` и не принимайте успешный HTTP-ответ за подтверждение печати. Результат известен только по конечному статусу задания.

## Следующие шаги

<div class="docs-card-grid"><a class="docs-card" href="/docs/getting-started/"><strong>Быстрый старт с CloudPrint API</strong><span>Подключите агент, получите OAuth-токен, выберите принтер, отправьте первое задание и дождитесь конечного статуса.</span></a>
<a class="docs-card" href="/docs/guides/erp-wms-printing/"><strong>Печать из ERP, WMS и 1С на локальные принтеры</strong><span>Автоматизируйте печать счетов, накладных и этикеток из ERP, WMS или 1С с явным выбором принтера и контролем результата.</span></a>
<a class="docs-card" href="/docs/api/print-jobs/"><strong>Создание и отслеживание заданий печати</strong><span>Создавайте идемпотентные задания CloudPrint, проверяйте параметры принтера и отслеживайте результат до конечного статуса.</span></a></div>

<nav class="docs-resource-links" aria-label="Следующие шаги"><a href="https://cloudprint.by/status/">Статус сервиса</a><a href="/docs/api/v1/explorer/">OpenAPI</a><a href="https://developer.cloudprint.me">Кабинет разработчика</a><a href="https://my.cloudprint.by">Открыть кабинет</a><a href="/docs/legal/privacy/">Политика конфиденциальности</a><a href="/docs/legal/terms/">Условия использования</a><a href="/docs/legal/data-processing/">DPA</a><a href="/docs/legal/service-level-agreement/">Соглашение об уровне сервиса</a></nav>