# 🗜️ 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` | **Схема:** ```json [ { "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: ```json { "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 пример для теста ```bash 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 --- ## 📝 Примечания ⚠️ **Важно:** 1. Stirling работает только с **PDF** 2. JPEG/PNG сначала конвертируются в PDF на **frontend** 3. В n8n приходит уже **PDF** 4. Если файл > 5MB → **сжимаем в Stirling** 5. Если файл ≤ 5MB → **пропускаем Stirling** ---