103 lines
3.5 KiB
JavaScript
103 lines
3.5 KiB
JavaScript
|
|
// ============================================================================
|
|||
|
|
// n8n Code Node: HTML → Base64 PDF (простой вариант)
|
|||
|
|
// ============================================================================
|
|||
|
|
// Используйте этот код ПОСЛЕ ноды, которая вернула HTML
|
|||
|
|
// Этот код подготовит запрос для HTTP Request ноды
|
|||
|
|
// ============================================================================
|
|||
|
|
|
|||
|
|
// Получаем HTML из предыдущей ноды
|
|||
|
|
// Если HTML пришёл в поле "html", используем его
|
|||
|
|
const html = $json.html || $json.body?.html || $json;
|
|||
|
|
|
|||
|
|
if (!html || typeof html !== 'string') {
|
|||
|
|
throw new Error('HTML не найден в входных данных. Проверьте структуру данных.');
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
console.log('📄 HTML получен, длина:', html.length);
|
|||
|
|
|
|||
|
|
// ==== НАСТРОЙКИ СЕРВИСА КОНВЕРТАЦИИ ====
|
|||
|
|
// Выберите один из вариантов ниже и раскомментируйте его
|
|||
|
|
|
|||
|
|
// ==== ВАРИАНТ 1: htmlpdfapi.com (рекомендуется) ====
|
|||
|
|
// Бесплатный план: 100 PDF в месяц
|
|||
|
|
// URL: https://htmlpdfapi.com
|
|||
|
|
return [{
|
|||
|
|
json: {
|
|||
|
|
// Данные для HTTP Request ноды
|
|||
|
|
method: 'POST',
|
|||
|
|
url: 'https://api.htmlpdfapi.com/v1/pdf',
|
|||
|
|
headers: {
|
|||
|
|
'Content-Type': 'application/json',
|
|||
|
|
'Authorization': 'Bearer YOUR_API_KEY' // ⚠️ ЗАМЕНИТЕ на ваш API ключ
|
|||
|
|
},
|
|||
|
|
body: JSON.stringify({
|
|||
|
|
html: html,
|
|||
|
|
options: {
|
|||
|
|
format: 'A4',
|
|||
|
|
printBackground: true,
|
|||
|
|
margin: {
|
|||
|
|
top: '20mm',
|
|||
|
|
right: '15mm',
|
|||
|
|
bottom: '20mm',
|
|||
|
|
left: '15mm'
|
|||
|
|
}
|
|||
|
|
},
|
|||
|
|
base64: true // Запрашиваем base64 напрямую
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
}];
|
|||
|
|
|
|||
|
|
// ==== ВАРИАНТ 2: pdfshift.io ====
|
|||
|
|
// Раскомментируйте, если используете pdfshift.io
|
|||
|
|
/*
|
|||
|
|
return [{
|
|||
|
|
json: {
|
|||
|
|
method: 'POST',
|
|||
|
|
url: 'https://api.pdfshift.io/v3/convert/pdf',
|
|||
|
|
headers: {
|
|||
|
|
'Content-Type': 'application/json',
|
|||
|
|
'Authorization': 'Basic ' + Buffer.from('api:YOUR_API_KEY').toString('base64')
|
|||
|
|
},
|
|||
|
|
body: JSON.stringify({
|
|||
|
|
source: html,
|
|||
|
|
format: 'A4',
|
|||
|
|
margin: '20mm'
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
}];
|
|||
|
|
*/
|
|||
|
|
|
|||
|
|
// ==== ВАРИАНТ 3: api2pdf.com ====
|
|||
|
|
// Раскомментируйте, если используете api2pdf.com
|
|||
|
|
/*
|
|||
|
|
return [{
|
|||
|
|
json: {
|
|||
|
|
method: 'POST',
|
|||
|
|
url: 'https://v2.api2pdf.com/chrome/html',
|
|||
|
|
headers: {
|
|||
|
|
'Authorization': 'YOUR_API_KEY',
|
|||
|
|
'Content-Type': 'application/json'
|
|||
|
|
},
|
|||
|
|
body: JSON.stringify({
|
|||
|
|
html: html,
|
|||
|
|
inlinePdf: true,
|
|||
|
|
fileName: 'flights-report.pdf'
|
|||
|
|
})
|
|||
|
|
}
|
|||
|
|
}];
|
|||
|
|
*/
|
|||
|
|
|
|||
|
|
// ============================================================================
|
|||
|
|
// ИНСТРУКЦИЯ:
|
|||
|
|
// ============================================================================
|
|||
|
|
// 1. Этот Code Node подготавливает запрос
|
|||
|
|
// 2. Добавьте HTTP Request ноду после этого Code Node
|
|||
|
|
// 3. В HTTP Request ноде настройте:
|
|||
|
|
// - Method: {{ $json.method }}
|
|||
|
|
// - URL: {{ $json.url }}
|
|||
|
|
// - Headers: {{ $json.headers }}
|
|||
|
|
// - Body: {{ $json.body }}
|
|||
|
|
// 4. После HTTP Request добавьте Code Node с кодом из N8N_EXTRACT_BASE64_FROM_RESPONSE.js
|
|||
|
|
// для извлечения base64 из ответа
|
|||
|
|
// ============================================================================
|