Files
SnapOtter/apps/docs/ru/tools/pdf/sign-pdf.md
T
SnapOtterandGitHub 4963ab3bbd feat(docs-i18n): translate all documentation into 20 languages
All 181 docs markdown files translated into 20 languages (apps/docs/<locale>/**). Companion to the i18n code PR; admin-merged because the file count exceeds GitHub's per-PR CI trigger limit. Validated by pnpm i18n:check (all surfaces, 0 stale/missing) and a clean all-locale docs build.
2026-07-11 13:52:47 +08:00

80 lines
4.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
description: "Наложение загруженных изображений подписи на PDF с использованием нормализованных размещений на странице."
i18n_source_hash: c28f78c2e7fd
i18n_provenance: human
i18n_output_hash: 74c249ad0a79
---
# Sign PDF {#sign-pdf}
Наложите одно или несколько загруженных изображений подписи PNG на любую страницу PDF. Этот маршрут использует пользовательский multipart-контракт, поскольку ему нужны PDF, одно или несколько изображений подписи и координаты размещения.
## API Endpoint {#api-endpoint}
`POST /api/v1/tools/pdf/sign-pdf`
Принимает данные multipart form. PDF отправляется как `file`; подписи отправляются как `sig0`, `sig1` и так далее; размещения отправляются в JSON-поле `placements`.
## Parameters {#parameters}
| Параметр | Тип | Обязательный | По умолчанию | Описание |
|-----------|------|----------|---------|-------------|
| file | file | Да | - | PDF-файл для подписи |
| sig0 | file | Да | - | Первое изображение подписи. Дополнительные изображения используют `sig1`, `sig2` и так далее |
| placements | JSON string | Да | - | Массив объектов размещения: `{ "sig": 0, "page": 0, "x": 0.2, "y": 0.7, "w": 0.25, "h": 0.08 }` |
| clientJobId | string | Нет | - | Необязательный UUID для отслеживания прогресса через SSE |
| fileId | string | Нет | - | Необязательный ID библиотеки файлов для сохранения подписанного результата как новой версии |
## Placement Coordinates {#placement-coordinates}
| Поле | Тип | Описание |
|-------|------|-------------|
| sig | integer | Индекс изображения подписи. `0` сопоставляется с `sig0` |
| page | integer | Индекс страницы PDF, начиная с нуля |
| x | number | Позиция слева как доля страницы |
| y | number | Позиция сверху как доля страницы |
| w | number | Ширина подписи как доля страницы |
| h | number | Высота подписи как доля страницы |
Координаты используют начало отсчёта в верхнем левом углу. Значения могут немного выходить за край страницы; рендерер PDF обрезает итоговый оттиск по странице.
## Example Request {#example-request}
```bash
curl -X POST http://localhost:1349/api/v1/tools/pdf/sign-pdf \
-H "Authorization: Bearer si_your-api-key" \
-F "file=@contract.pdf" \
-F "sig0=@signature.png" \
-F 'placements=[{"sig":0,"page":0,"x":0.64,"y":0.82,"w":0.22,"h":0.08}]'
```
## Example Response {#example-response}
```json
{
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/contract_signed.pdf",
"previewUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/preview.png",
"originalSize": 245000,
"processedSize": 249000
}
```
Если запрос не может завершиться в пределах окна синхронного ожидания, API возвращает:
```json
{
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"async": true
}
```
Подключитесь к `/api/v1/jobs/<jobId>/progress` и загрузите результат по завершении задания.
## Notes {#notes}
- Принимаемый входной формат PDF: `.pdf`.
- Изображения подписи должны быть корректными файлами изображений, обычно PNG с прозрачностью.
- Принимается до 100 изображений подписи и 100 размещений.
- `sign-pdf` является пользовательским маршрутом и не использует стандартное JSON-поле `settings` инструмента.