136 lines
2.7 KiB
Markdown
136 lines
2.7 KiB
Markdown
|
|
# Настройка HTTP Request ноды для Browserless
|
|||
|
|
|
|||
|
|
## Готовый запрос для вставки
|
|||
|
|
|
|||
|
|
### Вариант 1: С использованием html_base64 из предыдущей ноды
|
|||
|
|
|
|||
|
|
**Method:** `POST`
|
|||
|
|
|
|||
|
|
**URL:** `http://147.45.146.17:3000/pdf`
|
|||
|
|
|
|||
|
|
**Headers:**
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"Content-Type": "application/json",
|
|||
|
|
"Authorization": "Bearer YOUR_TOKEN"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
*Примечание: Если токен не требуется, уберите строку Authorization*
|
|||
|
|
|
|||
|
|
**Body (JSON):**
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"url": "data:text/html;base64,{{ $json.html_base64 }}",
|
|||
|
|
"options": {
|
|||
|
|
"format": "A4",
|
|||
|
|
"printBackground": true,
|
|||
|
|
"margin": {
|
|||
|
|
"top": "20mm",
|
|||
|
|
"right": "15mm",
|
|||
|
|
"bottom": "20mm",
|
|||
|
|
"left": "15mm"
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**Response Format:** `Binary`
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
### Вариант 2: Если у вас HTML в строке (не base64)
|
|||
|
|
|
|||
|
|
**Method:** `POST`
|
|||
|
|
|
|||
|
|
**URL:** `http://147.45.146.17:3000/pdf`
|
|||
|
|
|
|||
|
|
**Headers:**
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"Content-Type": "application/json",
|
|||
|
|
"Authorization": "Bearer YOUR_TOKEN"
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**Body (JSON):**
|
|||
|
|
```json
|
|||
|
|
{
|
|||
|
|
"html": "{{ $json.html }}",
|
|||
|
|
"options": {
|
|||
|
|
"format": "A4",
|
|||
|
|
"printBackground": true,
|
|||
|
|
"margin": {
|
|||
|
|
"top": "20mm",
|
|||
|
|
"right": "15mm",
|
|||
|
|
"bottom": "20mm",
|
|||
|
|
"left": "15mm"
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
**Response Format:** `Binary`
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Полный workflow
|
|||
|
|
|
|||
|
|
```
|
|||
|
|
[Code: Process Flights Data] ← Генерирует HTML
|
|||
|
|
↓
|
|||
|
|
[Code: HTML to Base64] ← Конвертирует HTML в base64 (если нужно)
|
|||
|
|
↓
|
|||
|
|
[HTTP Request: Browserless PDF] ← Используйте настройки выше
|
|||
|
|
↓
|
|||
|
|
[Code: Extract Base64 PDF] ← Конвертирует binary в base64
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Code Node: HTML to Base64 (если нужно)
|
|||
|
|
|
|||
|
|
Если у вас HTML в строке, а нужен base64 для data URL:
|
|||
|
|
|
|||
|
|
```javascript
|
|||
|
|
const html = $json.html;
|
|||
|
|
const htmlBase64 = Buffer.from(html, 'utf8').toString('base64');
|
|||
|
|
|
|||
|
|
return [{
|
|||
|
|
json: {
|
|||
|
|
html_base64: htmlBase64,
|
|||
|
|
html: html
|
|||
|
|
}
|
|||
|
|
}];
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Code Node: Extract Base64 PDF (после HTTP Request)
|
|||
|
|
|
|||
|
|
```javascript
|
|||
|
|
const pdfBinary = $binary.data;
|
|||
|
|
const base64 = Buffer.isBuffer(pdfBinary)
|
|||
|
|
? pdfBinary.toString('base64')
|
|||
|
|
: Buffer.from(pdfBinary).toString('base64');
|
|||
|
|
|
|||
|
|
const sizeBytes = Buffer.from(base64, 'base64').length;
|
|||
|
|
|
|||
|
|
return [{
|
|||
|
|
json: {
|
|||
|
|
pdf_base64: base64,
|
|||
|
|
pdf_size_bytes: sizeBytes,
|
|||
|
|
pdf_size_mb: (sizeBytes / (1024 * 1024)).toFixed(2),
|
|||
|
|
success: true
|
|||
|
|
}
|
|||
|
|
}];
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## Отладка
|
|||
|
|
|
|||
|
|
Если получаете ошибку:
|
|||
|
|
- **"Bad or missing authentication"** → Проверьте токен или уберите Authorization header
|
|||
|
|
- **"Not Found"** → Проверьте URL эндпоинта
|
|||
|
|
- **Пустой ответ** → Проверьте формат HTML и data URL
|