- Исправлена ошибка ReferenceError при загрузке черновиков - Переименована локальная переменная claimId в finalClaimId для избежания конфликта с параметром функции - Обновлена логика извлечения claim_id из разных источников (claim.claim_id, payload.claim_id, body.claim_id, claim.id) - Добавлен fallback на параметр claimId функции для надёжности
2.9 KiB
2.9 KiB
🗜️ PDF Compression для n8n
⚠️ UPDATE: Stirling API недоступен!
Альтернатива: Используем Ghostscript или Python pypdf
🐍 Вариант 1: Python Code Node (РЕКОМЕНДУЕТСЯ)
1️⃣ Базовая настройка
Method: POST
URL: https://stirling.klientprav.tech/api/v1/general/compress-pdf
2️⃣ Authentication
- Type:
Header Auth - Name:
X-API-Key - Value:
HTYgGMCZ64rlzoRbbmg6IeutXzJHEdVpKV1
3️⃣ Body
Content Type: Multipart-Form Data
Fields:
| Property Name | Type | Value |
|---|---|---|
fileInput |
Binary Data | {{ $binary.data }} |
optimizeLevel |
String | 3 |
expectedOutputSize |
String | 2 |
Схема:
[
{
"name": "fileInput",
"data": "{{ $binary.data }}"
},
{
"name": "optimizeLevel",
"data": "3"
},
{
"name": "expectedOutputSize",
"data": "2"
}
]
4️⃣ Send Binary Data
Include Binary Data: Yes
Binary Property Name: data
📥 Response
Stirling вернёт сжатый PDF в формате:
Success:
- Status:
200 OK - Body: Binary PDF file
- Headers:
Content-Type: application/pdf Content-Disposition: attachment; filename="compressed.pdf"
Error:
{
"message": "Error description",
"status": 400
}
🔗 Использование в workflow
Полная цепочка:
Webhook (получили PDF)
↓
IF Node: file_size > 5 MB?
├─ TRUE → HTTP Request (Stirling Compress)
│ ↓
│ Binary Data (сжатый PDF)
│ ↓
└─ FALSE → Binary Data (оригинал)
↓
S3 Upload (оба варианта)
↓
PostgreSQL (запись пути)
🧪 Curl пример для теста
curl -X POST \
-H "X-API-Key: HTYgGMCZ64rlzoRbbmg6IeutXzJHEdVpKV1" \
-F "fileInput=@/path/to/file.pdf" \
-F "optimizeLevel=3" \
-F "expectedOutputSize=2" \
https://stirling.klientprav.tech/api/v1/general/compress-pdf \
--output compressed.pdf
⚙️ Параметры сжатия
-
optimizeLevel:
1= минимальное сжатие (быстро)2= среднее сжатие (баланс)3= максимальное сжатие (медленно, но эффективно) ⭐
-
expectedOutputSize:
- Целевой размер в MB (опционально)
- Например:
2= максимум 2MB
📝 Примечания
⚠️ Важно:
- Stirling работает только с PDF
- JPEG/PNG сначала конвертируются в PDF на frontend
- В n8n приходит уже PDF
- Если файл > 5MB → сжимаем в Stirling
- Если файл ≤ 5MB → пропускаем Stirling