Files
aiform_prod/docs/N8N_HTML_TO_BASE64_PDF_SIMPLE.js
AI Assistant 2e45786e46 feat: Telegram Mini App integration and UX improvements
- Добавлена полная интеграция с Telegram Mini App (динамическая загрузка SDK)
- Отдельный компактный дизайн для Telegram Mini App
- Добавлен loader при инициализации (предотвращает мелькание SMS-авторизации)
- Улучшена навигация: кнопки "Назад" и "К списку заявок" теперь сохраняют авторизацию
- Telegram Mini App: кнопка "Выход" просто закрывает приложение
- Telegram Mini App: заявки "В работе" скрыты из списка
- Веб-версия: для заявок "В работе" добавлена кнопка "Просмотреть в Telegram" (ссылка на @klientprav_bot)
- Telegram Mini App: кнопки действий в черновиках расположены вертикально
- Веб-версия: убрано отображение номера телефона в приветствии
- Исправлена проблема с возвратом к списку черновиков (не требует повторной SMS-авторизации)
- Заблокировано удаление и редактирование заявок со статусом "В работе"
- Добавлена документация по Telegram Mini App интеграции
2026-01-29 16:12:48 +03:00

103 lines
3.5 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// ============================================================================
// 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 из ответа
// ============================================================================