---
title: "Загрузка PDF и RAW-документов"
description: "Выберите multipart, публичный HTTPS URL или Base64 и подготовьте PDF либо RAW-данные языка принтера для CloudPrint."
---
<nav class="docs-breadcrumb" aria-label="Breadcrumb"><a href="/docs/">Документация CloudPrint</a><span aria-hidden="true">/</span><span>Print API</span></nav>

# Загрузка PDF и RAW-документов

<p class="docs-lead">Передавайте документ, уже подготовленный для выбранного принтера. Public API принимает готовые PDF-файлы и поддерживаемые RAW-команды. Он не преобразует DOC/DOCX и не создаёт транспортные этикетки. Для RAW всегда явно указывайте формат и язык, не полагаясь на определение по содержимому.</p>

## Загрузите PDF

```bash
curl -sS https://public-api.cloudprint.me/api/v1/documents \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -F 'file=@invoice.pdf;type=application/pdf'
```

Успешная загрузка возвращает HTTP 201:

```json
{
  "document_id": "aaaaaaaa-aaaa-4aaa-8aaa-aaaaaaaaaaaa",
  "original_filename": "invoice.pdf",
  "mime_type": "application/pdf",
  "document_format": "pdf",
  "document_raw_language": null,
  "size_bytes": 1024
}
```

Сохраните `document_id` для задания. До публикации документа CloudPrint проверяет его на вредоносный код, повреждённую или зашифрованную структуру, активное содержимое, вложения и небезопасные размеры страниц. Удаляемые действия и интерактивные формы могут быть сведены в безопасный PDF.

## Загрузите RAW

```bash
curl -sS https://public-api.cloudprint.me/api/v1/documents \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -F 'file=@label.txt;type=application/octet-stream' \
  -F 'document_format=raw' \
  -F 'document_raw_language=zpl'
```

Для RAW сохраняется существующее разрешение `documents:write`. Разрешены `zpl`, `tspl`, `cpcl`, `escpos`. Принтер должен объявить тот же язык и RAW passthrough. CloudPrint принимает поддерживаемые команды печати и форматирования, но отклоняет неизвестные команды, постоянную запись, настройку устройства и доступ к файлам. Не отправляйте PDF как RAW.

## Создайте задание из публичного URL

```bash
curl -sS https://public-api.cloudprint.me/api/v1/print-jobs/from-url \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: shipment-18452-label-url-v1' \
  -d '{
    "document_url": "https://files.example.com/labels/shipment-18452.pdf",
    "document_filename": "shipment-18452.pdf",
    "printer_id": "11111111-1111-4111-8111-111111111111",
    "copies": 1,
    "intent": "shipping_label",
    "media_width_mm": 100,
    "media_height_mm": 150,
    "dpi": 203
  }'
```

URL должен использовать HTTPS. CloudPrint отклоняет localhost, адреса частных и зарезервированных сетей, встроенные учётные данные и небезопасные перенаправления. Ответ имеет обычную форму задания.

## Создайте задание из Base64

```bash
curl -sS https://public-api.cloudprint.me/api/v1/print-jobs/from-base64 \
  -H "Authorization: Bearer $ACCESS_TOKEN" \
  -H 'Content-Type: application/json' \
  -H 'Idempotency-Key: receipt-18452-base64-v1' \
  -d '{
    "document_base64": "JVBERi0xLjQK...",
    "document_filename": "receipt-18452.pdf",
    "printer_id": "11111111-1111-4111-8111-111111111111",
    "copies": 1,
    "intent": "receipt"
  }'
```

Используйте для небольших inline-документов. Base64 увеличивает размер; для больших файлов лучше multipart или короткоживущий публичный URL. Ответ имеет обычную форму задания.

## Выберите способ передачи

Для файлов на вашем сервере обычно подходит multipart-загрузка через `/documents`. Используйте `/from-url`, если готовый файл доступен по безопасному публичному HTTPS URL, а `/from-base64` — для небольших сгенерированных документов. Во всех методах, которые создают задание, передавайте `Idempotency-Key`.

## Проверьте до загрузки

Проверяйте тип, размер, геометрию страницы или носителя и ориентацию. Офисные файлы конвертируйте сами. Транспортную этикетку сначала получите у перевозчика; CloudPrint начинает работу с готового PDF или ZPL. Серверная проверка — последний рубеж защиты, а не замена проверке созданных вами документов.

## Ошибки загрузки

`400` — неверный запрос `multipart/form-data`, `413` — слишком большой файл, `415` — неподдерживаемый тип, `422` — неверный запрос или документ не прошёл проверку безопасности. Не повторяйте неизменённый запрос после `422`. Код `503` означает, что проверка временно недоступна: повторяйте запрос с тем же ключом идемпотентности, постепенно увеличивая интервал. Для логики используйте `error`, более точную причину читайте из `error_code`, сообщение показывайте оператору и сохраняйте `X-Request-Id`.

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

<div class="docs-card-grid"><a class="docs-card" href="/docs/api/agents-and-printers/"><strong>Local Printer API для веб-приложений и SaaS</strong><span>Подключите сервер веб-приложения к локальным принтерам через CloudPrint Agent, получите очереди через API и маршрутизируйте по стабильному printer_id.</span></a>
<a class="docs-card" href="/docs/api/print-jobs/"><strong>Создание и отслеживание заданий печати</strong><span>Создавайте идемпотентные задания CloudPrint, проверяйте параметры принтера и отслеживайте результат до конечного статуса.</span></a>
<a class="docs-card" href="/docs/guides/shipping-labels/"><strong>Label Printing API для доставки и склада</strong><span>Передавайте готовые этикетки в PDF, ZPL, TSPL или CPCL из интернет-магазина, WMS, ERP или 1С на нужный локальный принтер и отслеживайте результат.</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>