Files
crm.clientright.ru/ticket_form/N8N_STIRLING_COMPRESS.md
Fedor de011efba9 fix: исправлен конфликт имён переменных в loadDraft (claimId -> finalClaimId)
- Исправлена ошибка ReferenceError при загрузке черновиков
- Переименована локальная переменная claimId в finalClaimId для избежания конфликта с параметром функции
- Обновлена логика извлечения claim_id из разных источников (claim.claim_id, payload.claim_id, body.claim_id, claim.id)
- Добавлен fallback на параметр claimId функции для надёжности
2025-11-19 23:33:52 +03:00

2.9 KiB
Raw Permalink Blame History

🗜️ 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

📝 Примечания

⚠️ Важно:

  1. Stirling работает только с PDF
  2. JPEG/PNG сначала конвертируются в PDF на frontend
  3. В n8n приходит уже PDF
  4. Если файл > 5MB → сжимаем в Stirling
  5. Если файл ≤ 5MB → пропускаем Stirling