# Редактор PDF

Источник: https://smartpdf.ru/developers/docs/operations/edit

Добавляет на страницы текст, подпись, картинку, закрашивание (текст под ним удаляется из файла), пометки и фигуры, заменяет строки текста. Объекты впечатываются в страницы.

- Запрос: `POST https://api.smartpdf.ru/v1/pdf/edit`, тело — JSON, ключ — заголовок `X-API-Key`

- Инструмент MCP: `edit_pdf` (вместо file_id — публичная ссылка file_url)

- Вход: PDF; картинки и подпись картинкой — PNG, JPG, WEBP, HEIC через POST /v1/upload

- Результат: PDF

- Единица цены: 10 МБ

## Параметры

| Параметр | Тип | Описание |
|---|---|---|
| `file_id` (обязательный) | `string` | file_id загруженного файла (POST /v1/upload); действует час. |
| `objects` (обязательный) | `object[]` | Объекты по порядку, последний — сверху; до 500, картинок — до 20. Координаты — доли видимой страницы от 0 до 1 от левого верхнего угла (чуть за край можно), размеры — в пунктах. У каждого page (с 1) и type: text — box, text (переносится по ширине box) или lines (готовые строки), size (12), font (sans, serif, mono), bold, italic, color (#RRGGBB); signature — box и lines (до 3 строк рукописным шрифтом) или file_id картинки, size, color; image — box, file_id; whiteout (закрасить), highlight, rect, ellipse, check, cross — box, color, width, fill; line, arrow, ink — points [[x, y], …], color, width; replace_text — box и baseline исходной строки, x — начало новой, text (пустой — удалить строку), font, size, color. Подпись через API не входит в лимит подписей сайта. |
| `webhook_url` | `string` | https-адрес: по завершении SmartPDF отправит на него POST с результатом и подписью — вместо опроса статуса (раздел «Вебхуки»). |

## Запрос

Шаг 2 полного цикла: файл уже загружен, статус и скачивание — как в быстром старте (https://smartpdf.ru/developers/docs/quickstart.md).

### cURL

```bash
BODY=$(jq -n --arg file_id "$FILE_ID" '{file_id: $file_id, objects: [{ type: "text", page: 1, box: [0.1, 0.03, 0.9, 0.08], text: "Согласовано", size: 14 }]}')
curl -sS --fail-with-body -H "X-API-Key: $SMARTPDF_API_KEY" -H "Content-Type: application/json" \
  -d "$BODY" https://api.smartpdf.ru/v1/pdf/edit
```

### Python

```python
task_id = call("POST", "/pdf/edit", json={"file_id": file_id, "objects": [{"type": "text", "page": 1, "box": [0.1, 0.03, 0.9, 0.08], "text": "Согласовано", "size": 14}]})["task_id"]
```

### Node.js

```javascript
const { task_id } = await call("/pdf/edit", { method: "POST", json: { file_id: fileId, objects: [{ type: "text", page: 1, box: [0.1, 0.03, 0.9, 0.08], text: "Согласовано", size: 14 }] } });
```

### PHP

```php
$taskId = call('POST', '/pdf/edit', ['file_id' => $fileId, 'objects' => [['type' => 'text', 'page' => 1, 'box' => [0.1, 0.03, 0.9, 0.08], 'text' => 'Согласовано', 'size' => 14]]])['task_id'];
```

### Go

```go
payload, _ := json.Marshal(map[string]any{"file_id": fileID, "objects": []any{map[string]any{"type": "text", "page": 1, "box": []any{0.1, 0.03, 0.9, 0.08}, "text": "Согласовано", "size": 14}}})
call("POST", "/pdf/edit", bytes.NewReader(payload), "application/json", &task)
```

### Java

```java
String body = JSON.writeValueAsString(Map.of("file_id", fileId, "objects", List.of(Map.of("type", "text", "page", 1, "box", List.of(0.1, 0.03, 0.9, 0.08), "text", "Согласовано", "size", 14))));
String taskId = call(HttpRequest.newBuilder(URI.create(API + "/pdf/edit"))
        .header("Content-Type", "application/json")
        .POST(HttpRequest.BodyPublishers.ofString(body))).get("task_id").asText();
```

### C#

```csharp
var task = await Read(await http.PostAsJsonAsync($"{Api}/pdf/edit", new { file_id = fileId, objects = new object[] { new { type = "text", page = 1, box = new[] { 0.1, 0.03, 0.9, 0.08 }, text = "Согласовано", size = 14 } } }));
```

## Ответ

`202 Accepted` — операция оплачена и поставлена в очередь:

```json
{
  "task_id": "3f2c5b0e-8a41-4d7e-9c1f-5d0b8f2e7a64"
}
```

Дальше — GET /v1/tasks/{task_id} (https://smartpdf.ru/developers/docs/tasks.md) или вебхук (https://smartpdf.ru/developers/docs/webhooks.md).
