Concepts
Tipos de Entrada
Formatos suportados para conversão em PDF - HTML, DOCX, Markdown, XML, CSV, JSON
Tipos de Entrada
O RenderHub suporta múltiplos formatos de entrada para conversão em PDF. Escolha o formato que melhor se adapta ao seu caso de uso.
Formatos Suportados
| Formato | Tipo | Melhor Para | Tamanho Máx. |
|---|---|---|---|
| HTML | html | Conteúdo web, layouts customizados | 10 MB |
| DOCX | docx | Documentos Word existentes | 25 MB |
| Markdown | markdown | Documentação, artigos, READMEs | 5 MB |
| XML | xml | Dados estruturados, notas fiscais | 10 MB |
| CSV | csv | Tabelas, relatórios, exportações | 5 MB |
| JSON | json | APIs, dados estruturados | 5 MB |
HTML
O formato mais poderoso e flexível para criar PDFs personalizados.
Quando Usar
✅ Melhor para:
- Layouts customizados com CSS
- Conteúdo web existente
- Design pixel-perfect
- Gráficos e visualizações
Exemplo Básico
const html = `
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<style>
body {
font-family: Arial, sans-serif;
margin: 40px;
}
h1 {
color: #2563eb;
border-bottom: 2px solid #2563eb;
padding-bottom: 10px;
}
.highlight {
background: #fef3c7;
padding: 2px 6px;
}
</style>
</head>
<body>
<h1>Relatório de Vendas</h1>
<p>Vendas totais: <span class="highlight">R$ 45.000,00</span></p>
</body>
</html>
`;
const response = await axios.post('https://renderhub.com/api/v1/render', {
mode: 'CONVERT',
input_type: 'html',
data: html
}, {
headers: { 'Authorization': `Bearer ${API_KEY}` }
});
CSS Suportado
O RenderHub suporta a maioria das propriedades CSS modernas:
<style>
/* Layout */
.container { display: flex; justify-content: space-between; }
.grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; }
/* Tipografia */
@import url('https://fonts.googleapis.com/css2?family=Roboto:wght@400;700&display=swap');
body { font-family: 'Roboto', sans-serif; }
/* Cores e Fundos */
.header { background: linear-gradient(to right, #3b82f6, #2563eb); }
.box { border: 1px solid #e5e7eb; border-radius: 8px; }
/* Quebra de Página */
.page-break { page-break-after: always; }
.no-break { page-break-inside: avoid; }
/* Impressão */
@media print {
.no-print { display: none; }
}
</style>
HTML com Gráficos
<html>
<head>
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
</head>
<body>
<canvas id="chart"></canvas>
<script>
new Chart(document.getElementById('chart'), {
type: 'bar',
data: {
labels: ['Jan', 'Fev', 'Mar'],
datasets: [{
label: 'Vendas',
data: [12, 19, 3]
}]
}
});
</script>
</body>
</html>
DOCX
Converta documentos Microsoft Word existentes em PDF.
Quando Usar
✅ Melhor para:
- Migrar documentos Word para PDF
- Contratos e documentos legais
- Relatórios criados no Word
- Preservar formatação complexa
Exemplo
const fs = require('fs');
// Ler arquivo .docx
const docxBuffer = fs.readFileSync('contrato.docx');
const docxBase64 = docxBuffer.toString('base64');
const response = await axios.post('https://renderhub.com/api/v1/render', {
mode: 'CONVERT',
input_type: 'docx',
data: docxBase64
}, {
headers: { 'Authorization': `Bearer ${API_KEY}` }
});
// Salvar PDF
const pdfBuffer = Buffer.from(response.data.pdf_base64, 'base64');
fs.writeFileSync('contrato.pdf', pdfBuffer);
Formatação Preservada
- ✅ Estilos de texto (negrito, itálico, sublinhado)
- ✅ Fontes customizadas
- ✅ Listas numeradas e com marcadores
- ✅ Tabelas com bordas e cores
- ✅ Imagens incorporadas
- ✅ Cabeçalhos e rodapés
- ✅ Quebras de página
- ⚠️ Macros e campos dinâmicos (removidos)
Markdown
Converta Markdown em PDFs formatados com destaque de sintaxe.
Quando Usar
✅ Melhor para:
- Documentação técnica
- READMEs do GitHub
- Artigos e posts de blog
- Anotações e wikis
Exemplo
const markdown = `
# Guia de Instalação
## Pré-requisitos
Antes de começar, você precisa ter instalado:
- Node.js 18+
- npm ou yarn
## Instalação
\`\`\`bash
npm install meu-pacote
\`\`\`
## Configuração
Crie um arquivo \`.env\`:
\`\`\`env
API_KEY=sua_chave_aqui
PORT=3000
\`\`\`
## Uso
\`\`\`javascript
const pkg = require('meu-pacote');
pkg.init({
key: process.env.API_KEY
});
\`\`\`
## Recursos
- [Documentação](https://docs.example.com)
- [GitHub](https://github.com/user/repo)
> **Nota**: Este pacote requer Node.js 18 ou superior.
`;
const response = await axios.post('https://renderhub.com/api/v1/render', {
mode: 'CONVERT',
input_type: 'markdown',
data: markdown
}, {
headers: { 'Authorization': `Bearer ${API_KEY}` }
});
Sintaxe Suportada
# Cabeçalho 1
## Cabeçalho 2
### Cabeçalho 3
**Negrito** e *itálico* e ***ambos***
- Lista não ordenada
- Item 2
- Subitem
1. Lista ordenada
2. Item 2
[Link](https://example.com)

`código inline`
\`\`\`javascript
// Bloco de código com highlight
const x = 10;
\`\`\`
> Citação em bloco
| Coluna 1 | Coluna 2 |
|----------|----------|
| A | B |
---
~~Riscado~~
XML
Converta XML em PDF com templates customizados.
Quando Usar
✅ Melhor para:
- Notas fiscais eletrônicas (NF-e)
- Dados estruturados
- Arquivos de configuração
- Exportações de sistemas legados
Exemplo: Nota Fiscal
const xml = `
<?xml version="1.0" encoding="UTF-8"?>
<nfe>
<infNFe>
<ide>
<nNF>123456</nNF>
<dhEmi>2024-01-15T10:30:00</dhEmi>
</ide>
<emit>
<xNome>Empresa Emitente LTDA</xNome>
<CNPJ>12.345.678/0001-99</CNPJ>
</emit>
<dest>
<xNome>Cliente Destinatário</xNome>
<CPF>123.456.789-00</CPF>
</dest>
<det nItem="1">
<prod>
<xProd>Notebook Dell</xProd>
<qCom>1</qCom>
<vUnCom>3500.00</vUnCom>
</prod>
</det>
<total>
<vNF>3500.00</vNF>
</total>
</infNFe>
</nfe>
`;
const response = await axios.post('https://renderhub.com/api/v1/render', {
mode: 'CONVERT',
input_type: 'xml',
data: xml,
// Opcional: XSL para transformação
xsl_template: xslStylesheet
}, {
headers: { 'Authorization': `Bearer ${API_KEY}` }
});
CSV
Converta tabelas CSV em PDFs formatados.
Quando Usar
✅ Melhor para:
- Relatórios tabulares
- Exportações de planilhas
- Dados de banco de dados
- Listas e inventários
Exemplo
const csv = `
Nome,Email,Departamento,Salário
João Silva,joao@empresa.com,TI,R$ 8.000
Maria Santos,maria@empresa.com,RH,R$ 7.500
Pedro Costa,pedro@empresa.com,Vendas,R$ 6.000
Ana Oliveira,ana@empresa.com,Marketing,R$ 7.000
`;
const response = await axios.post('https://renderhub.com/api/v1/render', {
mode: 'CONVERT',
input_type: 'csv',
data: csv,
options: {
// Opções de formatação
table_style: 'striped', // 'striped', 'bordered', 'minimal'
header_color: '#2563eb',
font_size: 12
}
}, {
headers: { 'Authorization': `Bearer ${API_KEY}` }
});
Customização de Tabela
{
input_type: 'csv',
data: csvData,
options: {
table_style: 'striped', // Linhas alternadas
header_color: '#1e40af', // Cor do cabeçalho
header_text_color: '#ffffff', // Texto do cabeçalho
border_color: '#e5e7eb', // Cor das bordas
font_size: 10, // Tamanho da fonte
page_orientation: 'landscape' // Paisagem para tabelas largas
}
}
JSON
Converta dados JSON em PDF formatado.
Quando Usar
✅ Melhor para:
- Respostas de API
- Dados estruturados
- Logs e debug
- Exportações de banco de dados
Exemplo: Array de Objetos
const jsonData = {
relatorio: 'Vendas Mensais',
periodo: '2024-01',
vendas: [
{
data: '2024-01-15',
cliente: 'Empresa A',
produto: 'Licença Pro',
valor: 1500.00
},
{
data: '2024-01-20',
cliente: 'Empresa B',
produto: 'Licença Enterprise',
valor: 5000.00
}
],
total: 6500.00
};
const response = await axios.post('https://renderhub.com/api/v1/render', {
mode: 'CONVERT',
input_type: 'json',
data: JSON.stringify(jsonData),
options: {
format: 'table', // 'table', 'tree', 'pretty'
highlight: true // Syntax highlighting
}
}, {
headers: { 'Authorization': `Bearer ${API_KEY}` }
});
Formatos de Visualização
1. Tabela (format: 'table')
┌──────────┬───────────┬─────────────────────┬──────────┐
│ Data │ Cliente │ Produto │ Valor │
├──────────┼───────────┼─────────────────────┼──────────┤
│ 01/15/24 │ Empresa A │ Licença Pro │ R$ 1.500 │
│ 01/20/24 │ Empresa B │ Licença Enterprise │ R$ 5.000 │
└──────────┴───────────┴─────────────────────┴──────────┘
2. Árvore (format: 'tree')
relatorio: Vendas Mensais
periodo: 2024-01
vendas:
[0]:
data: 2024-01-15
cliente: Empresa A
produto: Licença Pro
valor: 1500.00
total: 6500.00
3. Pretty (format: 'pretty')
{
"relatorio": "Vendas Mensais",
"periodo": "2024-01",
"vendas": [...]
}
Comparação de Formatos
| Recurso | HTML | DOCX | Markdown | XML | CSV | JSON |
|---|---|---|---|---|---|---|
| Layout customizado | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐ | ⭐⭐⭐ | ⭐ | ⭐ |
| Facilidade de uso | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ |
| Dados tabulares | ⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ |
| Formatação rica | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐ | ⭐ | ⭐ |
| Dados estruturados | ⭐⭐⭐ | ⭐⭐ | ⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
Melhores Práticas
HTML
// ✅ Bom: CSS inline ou em <style>
const html = '<style>h1{color:blue}</style><h1>Título</h1>';
// ❌ Evite: CSS externo (pode falhar)
const html = '<link rel="stylesheet" href="external.css">';
DOCX
// ✅ Bom: Arquivo local ou buffer
const buffer = fs.readFileSync('doc.docx');
// ❌ Evite: URLs remotas (não suportado)
const url = 'https://example.com/doc.docx';
Markdown
// ✅ Bom: Use ``` para blocos de código
const md = '```javascript\nconst x = 1;\n```';
// ✅ Bom: Imagens podem ser URLs ou base64
const md = '';
CSV
// ✅ Bom: UTF-8 com BOM para acentos
const csv = '\ufeffNome,Descrição\nJoão,Café';
// ✅ Bom: Use vírgula como separador
const csv = 'A,B,C';
// ⚠️ Cuidado: Ponto-e-vírgula (especifique delimiter)
const csv = 'A;B;C';
Limitações
| Formato | Tamanho Máx. | Limitações |
|---|---|---|
| HTML | 10 MB | JavaScript executado com timeout de 5s |
| DOCX | 25 MB | Macros e scripts removidos |
| Markdown | 5 MB | Sem plugins/extensões customizadas |
| XML | 10 MB | XSL timeout de 10s |
| CSV | 5 MB | Máximo 10.000 linhas |
| JSON | 5 MB | Máximo 5 níveis de aninhamento |
Próximos Passos
- Modos de Operação - CONVERT vs RENDER
- Templates - Criando templates reutilizáveis
- Exemplos de Código - Exemplos completos por linguagem
- Referência da API - Documentação completa