// ============================================================================ // n8n Code Node: HTML → PDF через Browserless (полная версия) // ============================================================================ // Используйте этот код ПОСЛЕ ноды, которая вернула HTML или html_base64 // ============================================================================ // Получаем HTML из предыдущей ноды let html = null; if ($json.html) { html = $json.html; } else if ($json.html_base64) { html = Buffer.from($json.html_base64, 'base64').toString('utf8'); } else if ($json.body?.html) { html = $json.body.html; } else if ($binary && $binary.data) { html = $binary.data.toString('utf8'); } else { throw new Error('HTML не найден. Проверьте, что предыдущая нода вернула html или html_base64'); } console.log('📄 HTML получен, длина:', html.length); // ================== НАСТРОЙКИ BROWSERLESS ================== const BROWSERLESS_URL = 'http://147.45.146.17:3000'; // ⚠️ ВАЖНО: Если Browserless требует токен, замените на ваш токен // Если токен не требуется, оставьте пустую строку или удалите Authorization header const BROWSERLESS_TOKEN = ''; // Замените на ваш токен, если требуется // Конвертируем HTML в data URL для передачи в Browserless const htmlBase64 = Buffer.from(html, 'utf8').toString('base64'); const dataUrl = `data:text/html;base64,${htmlBase64}`; // Формируем headers const headers = { 'Content-Type': 'application/json' }; // Добавляем токен, если он указан if (BROWSERLESS_TOKEN) { headers['Authorization'] = `Bearer ${BROWSERLESS_TOKEN}`; } // ================== ПОДГОТОВКА ЗАПРОСА ================== return [{ json: { // Данные для HTTP Request ноды method: 'POST', url: `${BROWSERLESS_URL}/pdf`, headers: headers, // Тело запроса - передаём HTML через data URL body: JSON.stringify({ url: dataUrl, options: { format: 'A4', printBackground: true, margin: { top: '20mm', right: '15mm', bottom: '20mm', left: '15mm' } } }), // Метаданные для отладки html_length: html.length, data_url_length: dataUrl.length, browserless_url: BROWSERLESS_URL } }]; // ============================================================================ // ИНСТРУКЦИЯ ПО ИСПОЛЬЗОВАНИЮ: // ============================================================================ // 1. Замените BROWSERLESS_TOKEN на ваш токен (если требуется) // 2. Добавьте HTTP Request ноду после этого Code Node // 3. В HTTP Request ноде настройте: // - Method: {{ $json.method }} // - URL: {{ $json.url }} // - Headers: {{ $json.headers }} // - Body: {{ $json.body }} // - Response Format: Binary (Browserless возвращает PDF как binary) // 4. После HTTP Request добавьте Code Node для конвертации binary в base64: // // const pdfBinary = $binary.data; // const base64 = Buffer.isBuffer(pdfBinary) // ? pdfBinary.toString('base64') // : Buffer.from(pdfBinary).toString('base64'); // // return [{ // json: { // pdf_base64: base64, // pdf_size_bytes: Buffer.from(base64, 'base64').length, // success: true // } // }]; // ============================================================================